diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6e0dd88 --- /dev/null +++ b/.gitignore @@ -0,0 +1,109 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +.DS_STORE + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ + +# Videos +*.mkv +*.mov +*.mp4 diff --git a/CNAME b/CNAME deleted file mode 100644 index 98ff1a7..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -book.pythontips.com diff --git a/Makefile b/Makefile index 4606779..3dabe44 100644 --- a/Makefile +++ b/Makefile @@ -1,177 +1,20 @@ -# Makefile for Sphinx documentation +# Minimal makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build -PAPER = +SPHINXPROJ = WeekendHacks +SOURCEDIR = . BUILDDIR = _build -# User-friendly check for sphinx-build -ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) -$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) -endif - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . -# the i18n builder cannot share the environment and doctrees with the others -I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . - -.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext - +# Put it first so that "make" without argument is like "make help". help: - @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " singlehtml to make a single large HTML file" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " devhelp to make HTML files and a Devhelp project" - @echo " epub to make an epub" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " latexpdf to make LaTeX files and run them through pdflatex" - @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" - @echo " text to make text files" - @echo " man to make manual pages" - @echo " texinfo to make Texinfo files" - @echo " info to make Texinfo files and run them through makeinfo" - @echo " gettext to make PO message catalogs" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " xml to make Docutils-native XML files" - @echo " pseudoxml to make pseudoxml-XML files for display purposes" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - -clean: - rm -rf $(BUILDDIR)/* - -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml - @echo - @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/PythonTips.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/PythonTips.qhc" - -devhelp: - $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp - @echo - @echo "Build finished." - @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/PythonTips" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/PythonTips" - @echo "# devhelp" - -epub: - $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub - @echo - @echo "Build finished. The epub file is in $(BUILDDIR)/epub." - -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make' in that directory to run these through (pdf)latex" \ - "(use \`make latexpdf' here to do that automatically)." - -latexpdf: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through pdflatex..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -latexpdfja: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through platex and dvipdfmx..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -text: - $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text - @echo - @echo "Build finished. The text files are in $(BUILDDIR)/text." - -man: - $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man - @echo - @echo "Build finished. The manual pages are in $(BUILDDIR)/man." - -texinfo: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo - @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." - @echo "Run \`make' in that directory to run these through makeinfo" \ - "(use \`make info' here to do that automatically)." - -info: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo "Running Texinfo files through makeinfo..." - make -C $(BUILDDIR)/texinfo info - @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." - -gettext: - $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale - @echo - @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." - -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -xml: - $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml - @echo - @echo "Build finished. The XML files are in $(BUILDDIR)/xml." +.PHONY: help Makefile -pseudoxml: - $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml - @echo - @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000..ebff719 --- /dev/null +++ b/Pipfile @@ -0,0 +1,12 @@ +[[source]] +name = "pypi" +url = "https://pypi.org/simple" +verify_ssl = true + +[dev-packages] + +[packages] +Sphinx = {file = "./sphinx"} + +[requires] +python_version = "3.7" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 0000000..a6f7813 --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,24 @@ +{ + "_meta": { + "hash": { + "sha256": "30874f84f845fe3bcc5c1d42c905d285b3bc1c24ecbc373dfb90c94b532bcb76" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.7" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "sphinx": { + "file": "file:///Users/m.ubaidullah/Desktop/projects/weekend-projects/sphinx" + } + }, + "develop": {} +} diff --git a/_static/css/custom.css b/_static/css/custom.css new file mode 100644 index 0000000..54928f1 --- /dev/null +++ b/_static/css/custom.css @@ -0,0 +1,284 @@ +p { + font-family: 'PT Sans', sans-serif; +} +.wy-nav-content-wrap, .wy-nav-content { + background-color: rgb(255,255,255); +} +.figure .caption{ + color: #a4a1a1; + text-align: center; + margin-top: 5px; +} +.document h1{ + margin: 60px 0px 40px 0px; + font-size: 250%; + font-family: 'PT Sans', sans-serif; + position: relative; +} + +.section-number{ + font-size: 140%; + margin-bottom: 0; + position: absolute; + right: 0; + bottom: 0; + color: silver; +} +.document h2{ + margin-top: 60px; + font-family: 'PT Sans', sans-serif; + font-size: 190%; + position: relative; +} +.document img{ + box-shadow: 0 0px 3px 0 rgba(0,0,0,0.15); +} +a.image-reference{ + display: inline-block; + width: 100%; + text-align: center; +} +.document h2 .section-number{ + font-size: 100%; +} +.wy-menu-vertical .toc-secnumber{ + right: 20px; + position: absolute; +} +.toctree-l1 .toc-secnumber { + float: left; + width: 40px; +} +.toctree-wrapper .toc-secnumber::after { + content: "."; + position: absolute; +} + +.rst-content .toctree-wrapper ul li.toctree-l2 .toc-secnumber{ + color: #9d5db8a1; +} +.rst-content .toctree-wrapper ul li.toctree-l1{ + list-style: none; + margin-bottom: 20px; + font-size: 110%; + padding-left: 0px; + margin-left: 0px; +} +.rst-content .toctree-wrapper ul li.toctree-l1 > a{ + padding: 10px; + padding-left: 0px; + padding-bottom: 0px; + margin-bottom: 10px; + display:inline-block; + font-weight: bold; + border-bottom: 2px solid white; + transition: 0.3s all; +} +.rst-content .toctree-wrapper ul li.toctree-l1 > a:hover{ + border-bottom: 2px solid #b17ec666; + transition: 0.3s all; +} +.rst-content .toctree-wrapper ul li.toctree-l2{ + list-style: none; + font-size: 90%; + margin-left: 0px; +} +.rst-content .toctree-wrapper ul li.toctree-l2 a{ + border-bottom: 2px solid white; + margin-bottom: 5px; + display: inline-block; + transition: 0.3s all; + margin-left: 40px; +} +.rst-content .toctree-wrapper ul li.toctree-l2 a:hover{ + border-bottom: 2px solid #b17ec666; + transition: 0.3s all; +} + +.document .toctree-wrapper p.caption{ + font-size: 250%; + margin: 80px 0px 40px 0px; + font-family: 'PT Sans', sans-serif; +} +.wy-body-for-nav{ + background: white; +} +.wy-menu-vertical li ul{ + display: block; +} +.wy-nav-side{ + bottom: initial; + min-height: initial; + left:20px; + background-color: #535353; + padding-bottom: 0em; + box-shadow: 0 0 3px 1px silver; +} +.wy-nav-side.shift{ + bottom: 0; +} +.wy-nav-side.shift .local-toc{ + margin-bottom: 40px; +} +.wy-nav-side.shift div.toc-left-right-nav{ + position: absolute; + height: 40px; + bottom: 0; + right: 0; + left: 0; +} +.wy-nav-side.shift div.toc-left-right-nav #expand-nav{ + display: none; +} +a.proj-title{ + text-transform: uppercase; + font-weight: initial; + word-spacing: 5px; +} +a.proj-title:hover{ + background: inherit; +} +.wy-side-nav-search .wy-dropdown > a, .wy-side-nav-search > a{ + font-size: 150%; + line-height: 1.7em; + font-family: PT Sans; + margin-top: 60px; + margin-bottom: 0px; +} +.wy-side-nav-search .wy-dropdown > a, .wy-side-nav-search > a:hover{ + background: none; +} +.wy-side-nav-search{ + background-color: #343131; + margin-bottom: 0px; +} +.wy-nav-top{ + background-color: #343131; +} +.wy-nav-content{ + max-width: 750px; +} +.wy-menu-vertical a, .wy-menu-vertical li ul li a{ + color: silver; + transition: all .4s; + padding-right: 35px; +} +.wy-menu-vertical a:hover{ + background: inherit; + color: white; +} +div.local-toc{ + padding: 10px 0px; +} +div.local-toc span.caption-text{ + color: white; +} +div.toc-left-right-nav{ + text-align: center; + padding: 10px; + background: #343131; + margin-top: 0px; + border-top: 1px solid #535353; +} +a#expand-nav{ + color: silver; + transition: all .5s; +} +a#expand-nav:hover, a.left:hover, a.right:hover{ + color: white; +} +div.wy-menu{ + transition: all 1s; +} +a.left{ + position: absolute; + left: 10px; + color: silver; + transition: all .5s; +} +a.right{ + position: absolute; + right: 10px; + color: silver; + transition: all .5s; +} +footer a{ + border-bottom: 2px solid white; + transition: 0.3s all; +} +footer a:hover{ + border-bottom: 2px solid #b17ec666; +} + +#mc_embed_signup{ + border: 5px solid #99970433; + padding: 10px; + position: relative; + background: #d0cf6f33; +} +#mc_embed_signup h3{ + margin: 0; + color: #867d62; + margin-bottom: 10px; +} +#mc_embed_signup a{ + color: #d0c6a7; + transition: .5s all; +} +#mc_embed_signup a:hover{ + color: #5e5b5b; +} +#mc_embed_signup p{ + color: #aa9d76; + font: 110%; + margin-bottom: 10px; +} +#mc_embed_signup .close-btn{ + position: absolute; + z-index: 2; + right: 4px; + top: 0; + font: bold 24px "Source Sans Pro", sans-serif; + padding: 4px 8px; + cursor: pointer; +} +#mce-EMAIL{ + width: 100%; + border: 3px solid #99970433; + box-shadow: none; + font-size: 100%; + color: #84844b; +} +#mc-embedded-subscribe { + float: right; + margin-top: 10px; + background: #ecec67; + border: none; + border-radius: 4px; + padding: 5px 24px; + color: #84844b; + transition: .5s all; +} +#mc-embedded-subscribe:hover{ + background: #d5d56f; +} +#mc_embed_signup p.subtext{ + color: #aa9d76; + margin-top: 10px; + margin-bottom: 5px; + font-size: 95%; +} +@media screen and (max-width:768px) { + .wy-nav-side { + left: -300px; + } +} +@media screen and (min-width:1100px) { + .wy-nav-content{ + padding-left: 4.5em; + } +} + +footer p{ + text-align: center; +} diff --git a/_static/custom.css b/_static/custom.css deleted file mode 100644 index bcdeef2..0000000 --- a/_static/custom.css +++ /dev/null @@ -1,6 +0,0 @@ - -@media screen and (min-width: 1000px){ - iframe{ - margin-left: 330px; - } -} \ No newline at end of file diff --git a/_static/images/favicon-bak.png b/_static/images/favicon-bak.png new file mode 100644 index 0000000..ce20f02 Binary files /dev/null and b/_static/images/favicon-bak.png differ diff --git a/_static/images/favicon.png b/_static/images/favicon.png new file mode 100644 index 0000000..5be8a3e Binary files /dev/null and b/_static/images/favicon.png differ diff --git a/_static/images/logo copy.png b/_static/images/logo copy.png new file mode 100644 index 0000000..64a7c78d Binary files /dev/null and b/_static/images/logo copy.png differ diff --git a/_static/images/logo-bak.png b/_static/images/logo-bak.png new file mode 100644 index 0000000..d4cf915 Binary files /dev/null and b/_static/images/logo-bak.png differ diff --git a/_static/images/logo-bak2.png b/_static/images/logo-bak2.png new file mode 100644 index 0000000..fc44aca Binary files /dev/null and b/_static/images/logo-bak2.png differ diff --git a/_static/images/logo.png b/_static/images/logo.png new file mode 100644 index 0000000..7350530 Binary files /dev/null and b/_static/images/logo.png differ diff --git a/_static/js/custom.js b/_static/js/custom.js new file mode 100644 index 0000000..e6106aa --- /dev/null +++ b/_static/js/custom.js @@ -0,0 +1,35 @@ +$(document).ready(function () { + var height = $("div.wy-menu").height(); + var onMobile = $(".wy-nav-side").hasClass("shift"); + $("#expand-nav").click(function () { + if (!onMobile){ + $("div.wy-menu").toggleClass("menu-toggle"); + if (!$("div.wy-menu").hasClass("menu-toggle")){ + $("div.wy-menu").animate({ height: 0 }, 200); + } else{ + $("div.wy-menu").animate({ height: height }, 200); + } + } + }); + + if ($('.wy-nav-side').height() > $(window).height()){ + $(".wy-nav-side").addClass("shift"); + } + + $(".close-btn").click(function () { + $("#mc_embed_signup").hide(); + + // Updating cookies will help prevent this from showing up again soon + // http://www.quirksmode.org/js/cookies.html + var date = new Date(); + var days = 10; + date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); + document.cookie = + "hidesubscribe=true; expires=" + date.toGMTString() + "; path=/"; + }); + + if (document.cookie.indexOf("hidesubscribe") != -1) { + $("#mc_embed_signup").hide(); + } +}); + diff --git a/_themes/sphinx_rtd_theme/__init__.py b/_themes/sphinx_rtd_theme/__init__.py new file mode 100644 index 0000000..e1356da --- /dev/null +++ b/_themes/sphinx_rtd_theme/__init__.py @@ -0,0 +1,32 @@ +""" +Sphinx Read the Docs theme. + +From https://github.com/ryan-roemer/sphinx-bootstrap-theme. +""" + +from os import path + +import sphinx + + +__version__ = '0.4.3.dev0' +__version_full__ = __version__ + + +def get_html_theme_path(): + """Return list of HTML theme paths.""" + cur_dir = path.abspath(path.dirname(path.dirname(__file__))) + return cur_dir + + +# See http://www.sphinx-doc.org/en/stable/theming.html#distribute-your-theme-as-a-python-package +def setup(app): + app.add_html_theme('sphinx_rtd_theme', path.abspath(path.dirname(__file__))) + + if sphinx.version_info >= (1, 8, 0): + # Add Sphinx message catalog for newer versions of Sphinx + # See http://www.sphinx-doc.org/en/master/extdev/appapi.html#sphinx.application.Sphinx.add_message_catalog + rtd_locale_path = path.join(path.abspath(path.dirname(__file__)), 'locale') + app.add_message_catalog('sphinx', rtd_locale_path) + + return {'parallel_read_safe': True, 'parallel_write_safe': True} diff --git a/_themes/sphinx_rtd_theme/breadcrumbs.html b/_themes/sphinx_rtd_theme/breadcrumbs.html new file mode 100644 index 0000000..90cb0ff --- /dev/null +++ b/_themes/sphinx_rtd_theme/breadcrumbs.html @@ -0,0 +1,82 @@ +{# Support for Sphinx 1.3+ page_source_suffix, but don't break old builds. #} + +{% if page_source_suffix %} +{% set suffix = page_source_suffix %} +{% else %} +{% set suffix = source_suffix %} +{% endif %} + +{% if meta is defined and meta is not none %} +{% set check_meta = True %} +{% else %} +{% set check_meta = False %} +{% endif %} + +{% if check_meta and 'github_url' in meta %} +{% set display_github = True %} +{% endif %} + +{% if check_meta and 'bitbucket_url' in meta %} +{% set display_bitbucket = True %} +{% endif %} + +{% if check_meta and 'gitlab_url' in meta %} +{% set display_gitlab = True %} +{% endif %} + +
+ + + + {% if (theme_prev_next_buttons_location == 'top' or theme_prev_next_buttons_location == 'both') and (next or prev) %} + + {% endif %} +
+
diff --git a/_themes/sphinx_rtd_theme/footer.html b/_themes/sphinx_rtd_theme/footer.html new file mode 100644 index 0000000..9f377bb --- /dev/null +++ b/_themes/sphinx_rtd_theme/footer.html @@ -0,0 +1,56 @@ +
+ {% if (theme_prev_next_buttons_location == 'bottom' or theme_prev_next_buttons_location == 'both') and (next or prev) %} + + {% endif %} + +
+ +
+

+ {%- if show_copyright %} + {%- if hasdoc('copyright') %} + {% set path = pathto('copyright') %} + {% set copyright = copyright|e %} + © {% trans %}Copyright{% endtrans %} {{ copyright }} + {%- else %} + {% set copyright = copyright %} + {{ copyright }} + {%- endif %} + {%- endif %} + + {%- if build_id and build_url %} + + {# Translators: Build is a noun, not a verb #} + {% trans %}Build{% endtrans %} + {{ build_id }}. + + {%- elif commit %} + + {% trans %}Revision{% endtrans %} {{ commit }}. + + {%- elif last_updated %} + + {% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %} + + {%- endif %} + +

+
+ + {%- if show_sphinx %} + {% set sphinx_web = 'Sphinx' %} + {% set readthedocs_web = 'Read the Docs' %} + {% trans sphinx_web=sphinx_web, readthedocs_web=readthedocs_web %}Built with {{ sphinx_web }} using a{% endtrans %} {% trans %}theme{% endtrans %} {% trans %}provided by {{ readthedocs_web }}{% endtrans %}. + {%- endif %} + + {%- block extrafooter %} {% endblock %} + +
+ diff --git a/_themes/sphinx_rtd_theme/layout.html b/_themes/sphinx_rtd_theme/layout.html new file mode 100644 index 0000000..5123b8a --- /dev/null +++ b/_themes/sphinx_rtd_theme/layout.html @@ -0,0 +1,292 @@ +{# TEMPLATE VAR SETTINGS #} +{%- set url_root = pathto('', 1) %} +{%- if url_root == '#' %}{% set url_root = '' %}{% endif %} +{%- if not embedded and docstitle %} + {%- set titlesuffix = " — "|safe + docstitle|e %} +{%- else %} + {%- set titlesuffix = "" %} +{%- endif %} +{%- set lang_attr = 'en' if language == None else (language | replace('_', '-')) %} + + + + + + {{ metatags }} + + {% block htmltitle %} + {% if local_toc %} + {{ project }} + {% else %} + {{ title }} - {{ project }} + {% endif %} + {% endblock %} + + {# CSS #} + + + + + + {%- for css in css_files %} + {%- if css|attr("rel") %} + + {%- else %} + + {%- endif %} + {%- endfor %} + + {%- for cssfile in extra_css_files %} + + {%- endfor %} + + {# FAVICON #} + {% if favicon %} + + {% endif %} + {# CANONICAL URL #} + {% if theme_canonical_url %} + + {% endif %} + + {# JAVASCRIPTS #} + {%- block scripts %} + + {%- if not embedded %} + {# XXX Sphinx 1.8.0 made this an external js-file, quick fix until we refactor the template to inherert more blocks directly from sphinx #} + {% if sphinx_version >= "1.8.0" %} + + {%- for scriptfile in script_files %} + {{ js_tag(scriptfile) }} + {%- endfor %} + {% else %} + + {%- for scriptfile in script_files %} + + {%- endfor %} + {% endif %} + + + {# OPENSEARCH #} + {%- if use_opensearch %} + + {%- endif %} + {%- endif %} + {%- endblock %} + + {%- block linktags %} + {%- if hasdoc('about') %} + + {%- endif %} + {%- if hasdoc('genindex') %} + + {%- endif %} + {%- if hasdoc('search') %} + + {%- endif %} + {%- if hasdoc('copyright') %} + + {%- endif %} + {%- if next %} + + {%- endif %} + {%- if prev %} + + {%- endif %} + {%- endblock %} + {%- block extrahead %} {% endblock %} + + + + + {% block extrabody %} {% endblock %} +
+ {# SIDE NAV, TOGGLES ON MOBILE #} + + +
+ + {# MOBILE NAV, TRIGGLES SIDE NAV ON TOGGLE #} + + + +
+ {%- block content %} + {% if theme_style_external_links|tobool %} + + +
+ +
+ {% include "versions.html" %} + + + + {# Do not conflict with RTD insertion of analytics script #} + {% if not READTHEDOCS %} + {% if theme_analytics_id %} + + + + + + {% endif %} + {% endif %} + + {%- block footer %} {% endblock %} + + + diff --git a/_themes/sphinx_rtd_theme/locale/de/LC_MESSAGES/sphinx.po b/_themes/sphinx_rtd_theme/locale/de/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..69f8368 --- /dev/null +++ b/_themes/sphinx_rtd_theme/locale/de/LC_MESSAGES/sphinx.po @@ -0,0 +1,208 @@ +# German translations for sphinx_rtd_theme. +# Copyright (C) 2018 Read the Docs +# This file is distributed under the same license as the sphinx_rtd_theme +# project. +# Dennis Wegner , 2018. +msgid "" +msgstr "" +"Project-Id-Version: sphinx_rtd_theme 0.2.4\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2019-07-24 23:51-0600\n" +"PO-Revision-Date: 2020-01-30 12:53+0100\n" +"Last-Translator: Jan Niklas Hasse \n" +"Language-Team: German Team\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Generated-By: Babel 2.4.0\n" +"X-Generator: Poedit 2.2.4\n" + +#: sphinx_rtd_theme/breadcrumbs.html:31 +msgid "Docs" +msgstr "Dokumente" + +#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45 +msgid "Edit on GitHub" +msgstr "Auf GitHub bearbeiten" + +#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52 +msgid "Edit on Bitbucket" +msgstr "Auf Bitbucket bearbeiten" + +#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59 +msgid "Edit on GitLab" +msgstr "Auf GitLab bearbeiten" + +#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64 +msgid "View page source" +msgstr "Seitenquelltext anzeigen" + +#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5 +msgid "Next" +msgstr "Weiter" + +#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8 +msgid "Previous" +msgstr "Zurück" + +#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24 +#: sphinx_rtd_theme/layout.html:92 +msgid "Copyright" +msgstr "Copyright" + +#. Build is a noun, not a verb +#: sphinx_rtd_theme/footer.html:31 +msgid "Build" +msgstr "Build" + +#: sphinx_rtd_theme/footer.html:36 +msgid "Revision" +msgstr "Revision" + +#: sphinx_rtd_theme/footer.html:40 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Zuletzt aktualisiert am %(last_updated)s." + +#: sphinx_rtd_theme/footer.html:50 +#, python-format +msgid "Built with %(sphinx_web)s using a" +msgstr "Erstellt mit %(sphinx_web)s unter Verwendung eines" + +#: sphinx_rtd_theme/footer.html:50 +msgid "theme" +msgstr "Themes" + +#: sphinx_rtd_theme/footer.html:50 +#, python-format +msgid "provided by %(readthedocs_web)s" +msgstr "von %(readthedocs_web)s" + +#: sphinx_rtd_theme/layout.html:61 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Suche in %(docstitle)s" + +#: sphinx_rtd_theme/layout.html:83 +msgid "About these documents" +msgstr "Über diese Dokumente" + +#: sphinx_rtd_theme/layout.html:86 +msgid "Index" +msgstr "Index" + +#: sphinx_rtd_theme/layout.html:89 sphinx_rtd_theme/search.html:11 +msgid "Search" +msgstr "Suche" + +#: sphinx_rtd_theme/layout.html:124 +msgid "Logo" +msgstr "Logo" + +#: sphinx_rtd_theme/search.html:26 +msgid "Please activate JavaScript to enable the search functionality." +msgstr "Bitte JavaScript aktivieren um die Suchfunktion zu ermöglichen." + +#. Search is a noun, not a verb +#: sphinx_rtd_theme/search.html:34 +msgid "Search Results" +msgstr "Suchergebnisse" + +#: sphinx_rtd_theme/search.html:36 +msgid "" +"Your search did not match any documents. Please make sure that all words are " +"spelled correctly and that you've selected enough categories." +msgstr "" +"Deine Suche ergab keine Treffer. Bitte stelle sicher, dass alle Wörter " +"richtig geschrieben sind und du genug Kategorien ausgewählt hast." + +#: sphinx_rtd_theme/searchbox.html:4 +msgid "Search docs" +msgstr "Dokumentation durchsuchen" + +#: sphinx_rtd_theme/versions.html:11 +msgid "Versions" +msgstr "Versionen" + +#: sphinx_rtd_theme/versions.html:17 +msgid "Downloads" +msgstr "Downloads" + +#. The phrase "Read the Docs" is not translated +#: sphinx_rtd_theme/versions.html:24 +msgid "On Read the Docs" +msgstr "Auf Read the Docs" + +#: sphinx_rtd_theme/versions.html:26 +msgid "Project Home" +msgstr "Projektseite" + +#: sphinx_rtd_theme/versions.html:29 +msgid "Builds" +msgstr "Builds" + +#: sphinx_rtd_theme/versions.html:33 +msgid "Free document hosting provided by" +msgstr "Kostenloses Dokumenten-Hosting von" + +#~ msgid "© Copyright %(copyright)s." +#~ msgstr "© Copyright %(copyright)s." + +#~ msgid "© Copyright %(copyright)s." +#~ msgstr "© Copyright %(copyright)s." + +#~ msgid "" +#~ "\n" +#~ " \n" +#~ " Build\n" +#~ " %(build_id)s.\n" +#~ " \n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " \n" +#~ " Build\n" +#~ " %(build_id)s.\n" +#~ " \n" +#~ " " + +#~ msgid "" +#~ "\n" +#~ " \n" +#~ " Revision %(commit)s.\n" +#~ " \n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " \n" +#~ " Revision %(commit)s.\n" +#~ " \n" +#~ " " + +#~ msgid "" +#~ "Built with Sphinx using a theme provided by Read the Docs" +#~ msgstr "" +#~ "Erstellt mit Sphinx unter " +#~ "Verwendung eines Themes von Read the Docs" + +#~ msgid "Navigation" +#~ msgstr "Navigation" + +#~ msgid "" +#~ "Created using Sphinx " +#~ "%(sphinx_version)s." +#~ msgstr "" +#~ "Erstellt mit Sphinx " +#~ "%(sphinx_version)s." + +#~ msgid "" +#~ "Free document hosting provided by Read the Docs." +#~ msgstr "" +#~ "Dokumentationshosting gratis bei Read the Docs." diff --git a/_themes/sphinx_rtd_theme/locale/en/LC_MESSAGES/sphinx.po b/_themes/sphinx_rtd_theme/locale/en/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..d1d89b7 --- /dev/null +++ b/_themes/sphinx_rtd_theme/locale/en/LC_MESSAGES/sphinx.po @@ -0,0 +1,147 @@ +# English translations for sphinx_rtd_theme. +# Copyright (C) 2019 ORGANIZATION +# This file is distributed under the same license as the sphinx_rtd_theme +# project. +# FIRST AUTHOR , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2019-07-24 23:51-0600\n" +"PO-Revision-Date: 2019-07-16 15:43-0600\n" +"Last-Translator: FULL NAME \n" +"Language: en\n" +"Language-Team: en \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" + +#: sphinx_rtd_theme/breadcrumbs.html:31 +msgid "Docs" +msgstr "" + +#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45 +msgid "Edit on GitHub" +msgstr "" + +#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52 +msgid "Edit on Bitbucket" +msgstr "" + +#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59 +msgid "Edit on GitLab" +msgstr "" + +#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64 +msgid "View page source" +msgstr "" + +#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5 +msgid "Next" +msgstr "" + +#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8 +msgid "Previous" +msgstr "" + +#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24 +#: sphinx_rtd_theme/layout.html:92 +msgid "Copyright" +msgstr "" + +#. Build is a noun, not a verb +#: sphinx_rtd_theme/footer.html:31 +msgid "Build" +msgstr "" + +#: sphinx_rtd_theme/footer.html:36 +msgid "Revision" +msgstr "" + +#: sphinx_rtd_theme/footer.html:40 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx_rtd_theme/footer.html:50 +#, python-format +msgid "Built with %(sphinx_web)s using a" +msgstr "" + +#: sphinx_rtd_theme/footer.html:50 +msgid "theme" +msgstr "" + +#: sphinx_rtd_theme/footer.html:50 +#, python-format +msgid "provided by %(readthedocs_web)s" +msgstr "" + +#: sphinx_rtd_theme/layout.html:61 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx_rtd_theme/layout.html:83 +msgid "About these documents" +msgstr "" + +#: sphinx_rtd_theme/layout.html:86 +msgid "Index" +msgstr "" + +#: sphinx_rtd_theme/layout.html:89 sphinx_rtd_theme/search.html:11 +msgid "Search" +msgstr "" + +#: sphinx_rtd_theme/layout.html:124 +msgid "Logo" +msgstr "" + +#: sphinx_rtd_theme/search.html:26 +msgid "Please activate JavaScript to enable the search functionality." +msgstr "" + +#. Search is a noun, not a verb +#: sphinx_rtd_theme/search.html:34 +msgid "Search Results" +msgstr "" + +#: sphinx_rtd_theme/search.html:36 +msgid "" +"Your search did not match any documents. Please make sure that all words " +"are spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx_rtd_theme/searchbox.html:4 +msgid "Search docs" +msgstr "" + +#: sphinx_rtd_theme/versions.html:11 +msgid "Versions" +msgstr "" + +#: sphinx_rtd_theme/versions.html:17 +msgid "Downloads" +msgstr "" + +#. The phrase "Read the Docs" is not translated +#: sphinx_rtd_theme/versions.html:24 +msgid "On Read the Docs" +msgstr "" + +#: sphinx_rtd_theme/versions.html:26 +msgid "Project Home" +msgstr "" + +#: sphinx_rtd_theme/versions.html:29 +msgid "Builds" +msgstr "" + +#: sphinx_rtd_theme/versions.html:33 +msgid "Free document hosting provided by" +msgstr "" + diff --git a/_themes/sphinx_rtd_theme/locale/es/LC_MESSAGES/sphinx.po b/_themes/sphinx_rtd_theme/locale/es/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..b5b8b74 --- /dev/null +++ b/_themes/sphinx_rtd_theme/locale/es/LC_MESSAGES/sphinx.po @@ -0,0 +1,149 @@ +# Spanish translations for sphinx_rtd_theme. +# Copyright (C) 2019 Read the Docs, Inc +# This file is distributed under the same license as the sphinx_rtd_theme +# project. +msgid "" +msgstr "" +"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n" +"Report-Msgid-Bugs-To: support@readthedocs.org\n" +"POT-Creation-Date: 2019-07-24 23:51-0600\n" +"PO-Revision-Date: 2019-07-16 21:44+0000\n" +"Last-Translator: Anthony , 2019\n" +"Language: es\n" +"Language-Team: Spanish " +"(https://www.transifex.com/readthedocs/teams/101354/es/)\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" + +#: sphinx_rtd_theme/breadcrumbs.html:31 +msgid "Docs" +msgstr "Documentos" + +#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45 +msgid "Edit on GitHub" +msgstr "Editar en GitHub" + +#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52 +msgid "Edit on Bitbucket" +msgstr "Editar en Bitbucket" + +#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59 +msgid "Edit on GitLab" +msgstr "Editar en GitLab" + +#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64 +msgid "View page source" +msgstr "Ver código fuente de la página" + +#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5 +msgid "Next" +msgstr "Siguiente" + +#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8 +msgid "Previous" +msgstr "Anterior" + +#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24 +#: sphinx_rtd_theme/layout.html:92 +msgid "Copyright" +msgstr "Derechos de autor" + +#. Build is a noun, not a verb +#: sphinx_rtd_theme/footer.html:31 +msgid "Build" +msgstr "Construido" + +#: sphinx_rtd_theme/footer.html:36 +msgid "Revision" +msgstr "Revisión" + +#: sphinx_rtd_theme/footer.html:40 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Actualizado por última vez en %(last_updated)s." + +#: sphinx_rtd_theme/footer.html:50 +#, python-format +msgid "Built with %(sphinx_web)s using a" +msgstr "Construido con %(sphinx_web)s usando un" + +#: sphinx_rtd_theme/footer.html:50 +msgid "theme" +msgstr "tema" + +#: sphinx_rtd_theme/footer.html:50 +#, python-format +msgid "provided by %(readthedocs_web)s" +msgstr "proporcionado por %(readthedocs_web)s" + +#: sphinx_rtd_theme/layout.html:61 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Buscar en %(docstitle)s" + +#: sphinx_rtd_theme/layout.html:83 +msgid "About these documents" +msgstr "Sobre esta documentación" + +#: sphinx_rtd_theme/layout.html:86 +msgid "Index" +msgstr "Índice" + +#: sphinx_rtd_theme/layout.html:89 sphinx_rtd_theme/search.html:11 +msgid "Search" +msgstr "Búsqueda" + +#: sphinx_rtd_theme/layout.html:124 +msgid "Logo" +msgstr "Logotipo" + +#: sphinx_rtd_theme/search.html:26 +msgid "Please activate JavaScript to enable the search functionality." +msgstr "Por favor, active JavaScript para habilitar la funcionalidad de búsqueda." + +#. Search is a noun, not a verb +#: sphinx_rtd_theme/search.html:34 +msgid "Search Results" +msgstr "Resultados de la búsqueda" + +#: sphinx_rtd_theme/search.html:36 +msgid "" +"Your search did not match any documents. Please make sure that all words " +"are spelled correctly and that you've selected enough categories." +msgstr "" +"Su búsqueda no coincide con ningún documento. Por favor, asegúrese de que" +" todas las palabras estén correctamente escritas y que usted haya " +"seleccionado las suficientes categorías." + +#: sphinx_rtd_theme/searchbox.html:4 +msgid "Search docs" +msgstr "Buscar documentos" + +#: sphinx_rtd_theme/versions.html:11 +msgid "Versions" +msgstr "Versiones" + +#: sphinx_rtd_theme/versions.html:17 +msgid "Downloads" +msgstr "Descargas" + +#. The phrase "Read the Docs" is not translated +#: sphinx_rtd_theme/versions.html:24 +msgid "On Read the Docs" +msgstr "En Read the Docs" + +#: sphinx_rtd_theme/versions.html:26 +msgid "Project Home" +msgstr "Página de Proyecto" + +#: sphinx_rtd_theme/versions.html:29 +msgid "Builds" +msgstr "Construcciones" + +#: sphinx_rtd_theme/versions.html:33 +msgid "Free document hosting provided by" +msgstr "Alojamiento gratuito de documentos proporcionado por" + diff --git a/_themes/sphinx_rtd_theme/locale/nl/LC_MESSAGES/sphinx.po b/_themes/sphinx_rtd_theme/locale/nl/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..f398ae7 --- /dev/null +++ b/_themes/sphinx_rtd_theme/locale/nl/LC_MESSAGES/sphinx.po @@ -0,0 +1,152 @@ +# English translations for sphinx_rtd_theme. +# Copyright (C) 2019 ORGANIZATION +# This file is distributed under the same license as the sphinx_rtd_theme +# project. +# FIRST AUTHOR , 2019. +# +# Translators: +# Jesse Tan, 2019 +msgid "" +msgstr "" +"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2019-07-24 23:51-0600\n" +"PO-Revision-Date: 2019-07-16 21:44+0000\n" +"Last-Translator: Jesse Tan, 2019\n" +"Language: nl\n" +"Language-Team: Dutch " +"(https://www.transifex.com/readthedocs/teams/101354/nl/)\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" + +#: sphinx_rtd_theme/breadcrumbs.html:31 +msgid "Docs" +msgstr "Documentatie" + +#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45 +msgid "Edit on GitHub" +msgstr "Bewerk op GitHub" + +#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52 +msgid "Edit on Bitbucket" +msgstr "Bewerk op BitBucket" + +#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59 +msgid "Edit on GitLab" +msgstr "Bewerk op GitLab" + +#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64 +msgid "View page source" +msgstr "Bekijk paginabron" + +#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5 +msgid "Next" +msgstr "Volgende" + +#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8 +msgid "Previous" +msgstr "Vorige" + +#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24 +#: sphinx_rtd_theme/layout.html:92 +msgid "Copyright" +msgstr "Copyright" + +#. Build is a noun, not a verb +#: sphinx_rtd_theme/footer.html:31 +msgid "Build" +msgstr "Bouwsel" + +#: sphinx_rtd_theme/footer.html:36 +msgid "Revision" +msgstr "Revisie" + +#: sphinx_rtd_theme/footer.html:40 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Laatste update op %(last_updated)s." + +#: sphinx_rtd_theme/footer.html:50 +#, python-format +msgid "Built with %(sphinx_web)s using a" +msgstr "Gebouwd met %(sphinx_web)s met een" + +#: sphinx_rtd_theme/footer.html:50 +msgid "theme" +msgstr "thema" + +#: sphinx_rtd_theme/footer.html:50 +#, python-format +msgid "provided by %(readthedocs_web)s" +msgstr "geleverd door %(readthedocs_web)s" + +#: sphinx_rtd_theme/layout.html:61 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Zoek binnen %(docstitle)s" + +#: sphinx_rtd_theme/layout.html:83 +msgid "About these documents" +msgstr "Over deze documenten" + +#: sphinx_rtd_theme/layout.html:86 +msgid "Index" +msgstr "Index" + +#: sphinx_rtd_theme/layout.html:89 sphinx_rtd_theme/search.html:11 +msgid "Search" +msgstr "Zoek" + +#: sphinx_rtd_theme/layout.html:124 +msgid "Logo" +msgstr "Logo" + +#: sphinx_rtd_theme/search.html:26 +msgid "Please activate JavaScript to enable the search functionality." +msgstr "Zet JavaScript aan om de zoekfunctie mogelijk te maken." + +#. Search is a noun, not a verb +#: sphinx_rtd_theme/search.html:34 +msgid "Search Results" +msgstr "Zoekresultaten" + +#: sphinx_rtd_theme/search.html:36 +msgid "" +"Your search did not match any documents. Please make sure that all words " +"are spelled correctly and that you've selected enough categories." +msgstr "" +"Zoekpoging vond geen documenten. Zorg ervoor dat alle woorden correct " +"zijn gespeld en dat voldoende categorieën zijn geselecteerd." + +#: sphinx_rtd_theme/searchbox.html:4 +msgid "Search docs" +msgstr "Zoek in documentatie" + +#: sphinx_rtd_theme/versions.html:11 +msgid "Versions" +msgstr "Versies" + +#: sphinx_rtd_theme/versions.html:17 +msgid "Downloads" +msgstr "Downloads" + +#. The phrase "Read the Docs" is not translated +#: sphinx_rtd_theme/versions.html:24 +msgid "On Read the Docs" +msgstr "Op Read the Docs" + +#: sphinx_rtd_theme/versions.html:26 +msgid "Project Home" +msgstr "Project Home" + +#: sphinx_rtd_theme/versions.html:29 +msgid "Builds" +msgstr "Bouwsels" + +#: sphinx_rtd_theme/versions.html:33 +msgid "Free document hosting provided by" +msgstr "Gratis hosting voor documentatie verzorgd door" + diff --git a/_themes/sphinx_rtd_theme/locale/ru/LC_MESSAGES/sphinx.po b/_themes/sphinx_rtd_theme/locale/ru/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..01c960a --- /dev/null +++ b/_themes/sphinx_rtd_theme/locale/ru/LC_MESSAGES/sphinx.po @@ -0,0 +1,148 @@ +# Russian translations for sphinx_rtd_theme. +# Copyright (C) 2019 Read the Docs, Inc +# This file is distributed under the same license as the sphinx_rtd_theme +# project. +msgid "" +msgstr "" +"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n" +"Report-Msgid-Bugs-To: support@readthedocs.org\n" +"POT-Creation-Date: 2019-07-24 23:51-0600\n" +"PO-Revision-Date: 2019-07-16 21:44+0000\n" +"Last-Translator: FULL NAME \n" +"Language: ru\n" +"Language-Team: Russian " +"(https://www.transifex.com/readthedocs/teams/101354/ru/)\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) " +"|| (n%100>=11 && n%100<=14)? 2 : 3)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" + +#: sphinx_rtd_theme/breadcrumbs.html:31 +msgid "Docs" +msgstr "" + +#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45 +msgid "Edit on GitHub" +msgstr "" + +#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52 +msgid "Edit on Bitbucket" +msgstr "" + +#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59 +msgid "Edit on GitLab" +msgstr "" + +#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64 +msgid "View page source" +msgstr "" + +#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5 +msgid "Next" +msgstr "" + +#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8 +msgid "Previous" +msgstr "" + +#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24 +#: sphinx_rtd_theme/layout.html:92 +msgid "Copyright" +msgstr "" + +#. Build is a noun, not a verb +#: sphinx_rtd_theme/footer.html:31 +msgid "Build" +msgstr "" + +#: sphinx_rtd_theme/footer.html:36 +msgid "Revision" +msgstr "" + +#: sphinx_rtd_theme/footer.html:40 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx_rtd_theme/footer.html:50 +#, python-format +msgid "Built with %(sphinx_web)s using a" +msgstr "" + +#: sphinx_rtd_theme/footer.html:50 +msgid "theme" +msgstr "" + +#: sphinx_rtd_theme/footer.html:50 +#, python-format +msgid "provided by %(readthedocs_web)s" +msgstr "" + +#: sphinx_rtd_theme/layout.html:61 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx_rtd_theme/layout.html:83 +msgid "About these documents" +msgstr "" + +#: sphinx_rtd_theme/layout.html:86 +msgid "Index" +msgstr "" + +#: sphinx_rtd_theme/layout.html:89 sphinx_rtd_theme/search.html:11 +msgid "Search" +msgstr "" + +#: sphinx_rtd_theme/layout.html:124 +msgid "Logo" +msgstr "" + +#: sphinx_rtd_theme/search.html:26 +msgid "Please activate JavaScript to enable the search functionality." +msgstr "" + +#. Search is a noun, not a verb +#: sphinx_rtd_theme/search.html:34 +msgid "Search Results" +msgstr "" + +#: sphinx_rtd_theme/search.html:36 +msgid "" +"Your search did not match any documents. Please make sure that all words " +"are spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx_rtd_theme/searchbox.html:4 +msgid "Search docs" +msgstr "" + +#: sphinx_rtd_theme/versions.html:11 +msgid "Versions" +msgstr "" + +#: sphinx_rtd_theme/versions.html:17 +msgid "Downloads" +msgstr "" + +#. The phrase "Read the Docs" is not translated +#: sphinx_rtd_theme/versions.html:24 +msgid "On Read the Docs" +msgstr "" + +#: sphinx_rtd_theme/versions.html:26 +msgid "Project Home" +msgstr "" + +#: sphinx_rtd_theme/versions.html:29 +msgid "Builds" +msgstr "" + +#: sphinx_rtd_theme/versions.html:33 +msgid "Free document hosting provided by" +msgstr "" + diff --git a/_themes/sphinx_rtd_theme/search.html b/_themes/sphinx_rtd_theme/search.html new file mode 100644 index 0000000..10ac568 --- /dev/null +++ b/_themes/sphinx_rtd_theme/search.html @@ -0,0 +1,54 @@ +{# + basic/search.html + ~~~~~~~~~~~~~~~~~ + + Template for the search page. + + :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{%- extends "layout.html" %} +{% set title = _('Search') %} +{%- block scripts %} + {{ super() }} + +{%- endblock %} +{% block footer %} + + {# this is used when loading the search index using $.ajax fails, + such as on Chrome for documents on localhost #} + + {{ super() }} +{% endblock %} +{% block body %} + + + {% if search_performed %} + {# Translators: Search is a noun, not a verb #} +

{{ _('Search Results') }}

+ {% if not search_results %} +

{{ _('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.') }}

+ {% endif %} + {% endif %} +
+ {% if search_results %} +
    + {% for href, caption, context in search_results %} +
  • + {{ caption }} +

    {{ context|e }}

    +
  • + {% endfor %} +
+ {% endif %} +
+{% endblock %} diff --git a/_themes/sphinx_rtd_theme/searchbox.html b/_themes/sphinx_rtd_theme/searchbox.html new file mode 100644 index 0000000..56df2e0 --- /dev/null +++ b/_themes/sphinx_rtd_theme/searchbox.html @@ -0,0 +1,9 @@ +{%- if builder != 'singlehtml' %} +
+
+ + + +
+
+{%- endif %} diff --git a/_themes/sphinx_rtd_theme/static/css/badge_only.css b/_themes/sphinx_rtd_theme/static/css/badge_only.css new file mode 100644 index 0000000..08154e9 --- /dev/null +++ b/_themes/sphinx_rtd_theme/static/css/badge_only.css @@ -0,0 +1 @@ +.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} \ No newline at end of file diff --git a/_themes/sphinx_rtd_theme/static/css/fonts/Roboto-Slab-Bold.woff b/_themes/sphinx_rtd_theme/static/css/fonts/Roboto-Slab-Bold.woff new file mode 100644 index 0000000..6cb6000 Binary files /dev/null and b/_themes/sphinx_rtd_theme/static/css/fonts/Roboto-Slab-Bold.woff differ diff --git a/_themes/sphinx_rtd_theme/static/css/fonts/Roboto-Slab-Bold.woff2 b/_themes/sphinx_rtd_theme/static/css/fonts/Roboto-Slab-Bold.woff2 new file mode 100644 index 0000000..7059e23 Binary files /dev/null and b/_themes/sphinx_rtd_theme/static/css/fonts/Roboto-Slab-Bold.woff2 differ diff --git a/_themes/sphinx_rtd_theme/static/css/fonts/Roboto-Slab-Regular.woff b/_themes/sphinx_rtd_theme/static/css/fonts/Roboto-Slab-Regular.woff new file mode 100644 index 0000000..f815f63 Binary files /dev/null and b/_themes/sphinx_rtd_theme/static/css/fonts/Roboto-Slab-Regular.woff differ diff --git a/_themes/sphinx_rtd_theme/static/css/fonts/Roboto-Slab-Regular.woff2 b/_themes/sphinx_rtd_theme/static/css/fonts/Roboto-Slab-Regular.woff2 new file mode 100644 index 0000000..f2c76e5 Binary files /dev/null and b/_themes/sphinx_rtd_theme/static/css/fonts/Roboto-Slab-Regular.woff2 differ diff --git a/_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.eot b/_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..e9f60ca Binary files /dev/null and b/_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.eot differ diff --git a/_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.svg b/_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..855c845 --- /dev/null +++ b/_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.ttf b/_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.ttf differ diff --git a/_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.woff b/_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..400014a Binary files /dev/null and b/_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.woff differ diff --git a/_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.woff2 b/_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..4d13fc6 Binary files /dev/null and b/_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.woff2 differ diff --git a/_themes/sphinx_rtd_theme/static/css/fonts/lato-bold-italic.woff b/_themes/sphinx_rtd_theme/static/css/fonts/lato-bold-italic.woff new file mode 100644 index 0000000..88ad05b Binary files /dev/null and b/_themes/sphinx_rtd_theme/static/css/fonts/lato-bold-italic.woff differ diff --git a/_themes/sphinx_rtd_theme/static/css/fonts/lato-bold-italic.woff2 b/_themes/sphinx_rtd_theme/static/css/fonts/lato-bold-italic.woff2 new file mode 100644 index 0000000..c4e3d80 Binary files /dev/null and b/_themes/sphinx_rtd_theme/static/css/fonts/lato-bold-italic.woff2 differ diff --git a/_themes/sphinx_rtd_theme/static/css/fonts/lato-bold.woff b/_themes/sphinx_rtd_theme/static/css/fonts/lato-bold.woff new file mode 100644 index 0000000..c6dff51 Binary files /dev/null and b/_themes/sphinx_rtd_theme/static/css/fonts/lato-bold.woff differ diff --git a/_themes/sphinx_rtd_theme/static/css/fonts/lato-bold.woff2 b/_themes/sphinx_rtd_theme/static/css/fonts/lato-bold.woff2 new file mode 100644 index 0000000..bb19504 Binary files /dev/null and b/_themes/sphinx_rtd_theme/static/css/fonts/lato-bold.woff2 differ diff --git a/_themes/sphinx_rtd_theme/static/css/fonts/lato-normal-italic.woff b/_themes/sphinx_rtd_theme/static/css/fonts/lato-normal-italic.woff new file mode 100644 index 0000000..76114bc Binary files /dev/null and b/_themes/sphinx_rtd_theme/static/css/fonts/lato-normal-italic.woff differ diff --git a/_themes/sphinx_rtd_theme/static/css/fonts/lato-normal-italic.woff2 b/_themes/sphinx_rtd_theme/static/css/fonts/lato-normal-italic.woff2 new file mode 100644 index 0000000..3404f37 Binary files /dev/null and b/_themes/sphinx_rtd_theme/static/css/fonts/lato-normal-italic.woff2 differ diff --git a/_themes/sphinx_rtd_theme/static/css/fonts/lato-normal.woff b/_themes/sphinx_rtd_theme/static/css/fonts/lato-normal.woff new file mode 100644 index 0000000..ae1307f Binary files /dev/null and b/_themes/sphinx_rtd_theme/static/css/fonts/lato-normal.woff differ diff --git a/_themes/sphinx_rtd_theme/static/css/fonts/lato-normal.woff2 b/_themes/sphinx_rtd_theme/static/css/fonts/lato-normal.woff2 new file mode 100644 index 0000000..3bf9843 Binary files /dev/null and b/_themes/sphinx_rtd_theme/static/css/fonts/lato-normal.woff2 differ diff --git a/_themes/sphinx_rtd_theme/static/css/theme.css b/_themes/sphinx_rtd_theme/static/css/theme.css new file mode 100644 index 0000000..4394450 --- /dev/null +++ b/_themes/sphinx_rtd_theme/static/css/theme.css @@ -0,0 +1,4 @@ +html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a,.wy-menu-vertical li.current>a span.toctree-expand:before,.wy-menu-vertical li.on a,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li span.toctree-expand:before,.wy-nav-top a,.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li span.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p.caption .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a span.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-left.toctree-expand,.wy-menu-vertical li span.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p.caption .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a span.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-right.toctree-expand,.wy-menu-vertical li span.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p.caption .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a span.pull-left.toctree-expand,.wy-menu-vertical li.on a span.pull-left.toctree-expand,.wy-menu-vertical li span.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p.caption .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a span.pull-right.toctree-expand,.wy-menu-vertical li.on a span.pull-right.toctree-expand,.wy-menu-vertical li span.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li span.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li span.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li span.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li a span.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li span.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p.caption .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a span.toctree-expand,.btn .wy-menu-vertical li.on a span.toctree-expand,.btn .wy-menu-vertical li span.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p.caption .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a span.toctree-expand,.nav .wy-menu-vertical li.on a span.toctree-expand,.nav .wy-menu-vertical li span.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p.caption .btn .headerlink,.rst-content p.caption .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn span.toctree-expand,.wy-menu-vertical li.current>a .btn span.toctree-expand,.wy-menu-vertical li.current>a .nav span.toctree-expand,.wy-menu-vertical li .nav span.toctree-expand,.wy-menu-vertical li.on a .btn span.toctree-expand,.wy-menu-vertical li.on a .nav span.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p.caption .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li span.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p.caption .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li span.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p.caption .btn .fa-large.headerlink,.rst-content p.caption .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn span.fa-large.toctree-expand,.wy-menu-vertical li .nav span.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p.caption .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li span.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p.caption .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li span.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p.caption .btn .fa-spin.headerlink,.rst-content p.caption .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn span.fa-spin.toctree-expand,.wy-menu-vertical li .nav span.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p.caption .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li span.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p.caption .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li span.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p.caption .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li span.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p.caption .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini span.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol li,.rst-content ol.arabic li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content ol.arabic li p:last-child,.rst-content ol.arabic li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol li ul li,.rst-content ol.arabic li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.rst-content .wy-breadcrumbs li tt,.wy-breadcrumbs li .rst-content tt,.wy-breadcrumbs li code{padding:5px;border:none;background:none}.rst-content .wy-breadcrumbs li tt.literal,.wy-breadcrumbs li .rst-content tt.literal,.wy-breadcrumbs li code.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li span.toctree-expand{display:block;float:left;margin-left:-1.2em;font-size:.8em;line-height:1.6em;color:#4d4d4d}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover span.toctree-expand,.wy-menu-vertical li.on a:hover span.toctree-expand{color:grey}.wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand{display:block;font-size:.8em;line-height:1.6em;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul{display:none}.wy-menu-vertical .toctree-l1.current .toctree-l2.current>ul{display:block}.wy-menu-vertical .toctree-l2.current .toctree-l3>ul{display:none}.wy-menu-vertical .toctree-l2.current .toctree-l3.current>ul{display:block}.wy-menu-vertical li.toctree-l2 a{color:#404040}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{display:block;padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2{font-size:.9em}.wy-menu-vertical .toctree-l3.current .toctree-l4>ul{display:none}.wy-menu-vertical .toctree-l3.current .toctree-l4.current>ul{display:block}.wy-menu-vertical li.toctree-l3 a{color:#404040}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{display:block;padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l3{font-size:.9em}.wy-menu-vertical .toctree-l4.current .toctree-l5>ul{display:none}.wy-menu-vertical .toctree-l4.current .toctree-l5.current>ul{display:block}.wy-menu-vertical li.toctree-l4 a{color:#404040}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{display:block;padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l4 a:hover span.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical .toctree-l5.current .toctree-l6>ul{display:none}.wy-menu-vertical .toctree-l5.current .toctree-l6.current>ul{display:block}.wy-menu-vertical li.toctree-l5 a{color:#404040}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{display:block;padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l5 a:hover span.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l5{font-size:.9em}.wy-menu-vertical .toctree-l6.current .toctree-l7>ul{display:none}.wy-menu-vertical .toctree-l6.current .toctree-l7.current>ul{display:block}.wy-menu-vertical li.toctree-l6 a{color:#404040}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{display:block;padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l6 a:hover span.toctree-expand{color:grey}.wy-menu-vertical .toctree-l7.current .toctree-l8>ul{display:none}.wy-menu-vertical .toctree-l7.current .toctree-l8.current>ul{display:block}.wy-menu-vertical li.toctree-l7 a{color:#404040}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{display:block;padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l7 a:hover span.toctree-expand{color:grey}.wy-menu-vertical .toctree-l8.current .toctree-l9>ul{display:none}.wy-menu-vertical .toctree-l8.current .toctree-l9.current>ul{display:block}.wy-menu-vertical li.toctree-l8 a{color:#404040}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{display:block;padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l8 a:hover span.toctree-expand{color:grey}.wy-menu-vertical .toctree-l9.current .toctree-l10>ul{display:none}.wy-menu-vertical .toctree-l9.current .toctree-l10.current>ul{display:block}.wy-menu-vertical li.toctree-l9 a{color:#404040}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{display:block;padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l9 a:hover span.toctree-expand{color:grey}.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l10.current .toctree-l11.current>ul{display:block}.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block;padding:.4045em 16.989em}.wy-menu-vertical li.toctree-l10 a:hover span.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 span.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 span.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover span.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active span.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p.caption .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p.caption .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content img{max-width:100%;height:auto}.rst-content div.figure{margin-bottom:24px}.rst-content div.figure p.caption{font-style:italic}.rst-content div.figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition .last,.rst-content .attention .last,.rst-content .caution .last,.rst-content .danger .last,.rst-content .error .last,.rst-content .hint .last,.rst-content .important .last,.rst-content .note .last,.rst-content .seealso .last,.rst-content .tip .last,.rst-content .warning .last{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha li{list-style:upper-alpha}.rst-content .section ol p,.rst-content .section ul p{margin-bottom:12px}.rst-content .section ol p:last-child,.rst-content .section ul p:last-child{margin-bottom:24px}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .toctree-wrapper p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink{visibility:hidden;font-size:14px}.rst-content .code-block-caption .headerlink:after,.rst-content .toctree-wrapper p.caption .headerlink:after,.rst-content dl dt .headerlink:after,.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content p.caption .headerlink:after,.rst-content table>caption .headerlink:after{content:"\f0c1";font-family:FontAwesome}.rst-content .code-block-caption:hover .headerlink:after,.rst-content .toctree-wrapper p.caption:hover .headerlink:after,.rst-content dl dt:hover .headerlink:after,.rst-content h1:hover .headerlink:after,.rst-content h2:hover .headerlink:after,.rst-content h3:hover .headerlink:after,.rst-content h4:hover .headerlink:after,.rst-content h5:hover .headerlink:after,.rst-content h6:hover .headerlink:after,.rst-content p.caption:hover .headerlink:after,.rst-content table>caption:hover .headerlink:after{visibility:visible}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;display:inline-block;font-weight:700;padding:0 6px}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .hlist{width:100%}.rst-content table.docutils.citation,.rst-content table.docutils.footnote{background:none;border:none;color:grey}.rst-content table.docutils.citation td,.rst-content table.docutils.citation tr,.rst-content table.docutils.footnote td,.rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}.rst-content table.docutils.citation td.label,.rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}.rst-content table.docutils.citation code,.rst-content table.docutils.citation tt,.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}.rst-content table.docutils td .last,.rst-content table.docutils td .last :last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{font-size:inherit;line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px!important}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl:not(.docutils).class,.rst-content dl:not(.docutils).data,.rst-content dl:not(.docutils).function,.rst-content dl:not(.docutils).type{margin-bottom:24px}.rst-content dl:not(.docutils).class dt,.rst-content dl:not(.docutils).data dt,.rst-content dl:not(.docutils).function dt,.rst-content dl:not(.docutils).type dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}.rst-content dl:not(.docutils).class dt:before,.rst-content dl:not(.docutils).data dt:before,.rst-content dl:not(.docutils).function dt:before,.rst-content dl:not(.docutils).type dt:before{color:#6ab0de}.rst-content dl:not(.docutils).class dt .headerlink,.rst-content dl:not(.docutils).data dt .headerlink,.rst-content dl:not(.docutils).function dt .headerlink,.rst-content dl:not(.docutils).type dt .headerlink{color:#404040;font-size:100%!important}.rst-content dl:not(.docutils).class dl dt,.rst-content dl:not(.docutils).data dl dt,.rst-content dl:not(.docutils).function dl dt,.rst-content dl:not(.docutils).type dl dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}.rst-content dl:not(.docutils).class dl dt .headerlink,.rst-content dl:not(.docutils).data dl dt .headerlink,.rst-content dl:not(.docutils).function dl dt .headerlink,.rst-content dl:not(.docutils).type dl dt .headerlink{color:#404040;font-size:100%!important}.rst-content dl:not(.docutils).class dt:first-child,.rst-content dl:not(.docutils).data dt:first-child,.rst-content dl:not(.docutils).function dt:first-child,.rst-content dl:not(.docutils).type dt:first-child{margin-top:0}.rst-content dl:not(.docutils).class code,.rst-content dl:not(.docutils).class tt,.rst-content dl:not(.docutils).data code,.rst-content dl:not(.docutils).data tt,.rst-content dl:not(.docutils).function code,.rst-content dl:not(.docutils).function tt,.rst-content dl:not(.docutils).type code,.rst-content dl:not(.docutils).type tt{font-weight:700}.rst-content dl:not(.docutils).class code.descclassname,.rst-content dl:not(.docutils).class code.descname,.rst-content dl:not(.docutils).class tt.descclassname,.rst-content dl:not(.docutils).class tt.descname,.rst-content dl:not(.docutils).data code.descclassname,.rst-content dl:not(.docutils).data code.descname,.rst-content dl:not(.docutils).data tt.descclassname,.rst-content dl:not(.docutils).data tt.descname,.rst-content dl:not(.docutils).function code.descclassname,.rst-content dl:not(.docutils).function code.descname,.rst-content dl:not(.docutils).function tt.descclassname,.rst-content dl:not(.docutils).function tt.descname,.rst-content dl:not(.docutils).type code.descclassname,.rst-content dl:not(.docutils).type code.descname,.rst-content dl:not(.docutils).type tt.descclassname,.rst-content dl:not(.docutils).type tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}.rst-content dl:not(.docutils).class code.descname,.rst-content dl:not(.docutils).class tt.descname,.rst-content dl:not(.docutils).data code.descname,.rst-content dl:not(.docutils).data tt.descname,.rst-content dl:not(.docutils).function code.descname,.rst-content dl:not(.docutils).function tt.descname,.rst-content dl:not(.docutils).type code.descname,.rst-content dl:not(.docutils).type tt.descname{font-weight:700}.rst-content dl:not(.docutils).class .optional,.rst-content dl:not(.docutils).data .optional,.rst-content dl:not(.docutils).function .optional,.rst-content dl:not(.docutils).type .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}.rst-content dl:not(.docutils).class .property,.rst-content dl:not(.docutils).data .property,.rst-content dl:not(.docutils).function .property,.rst-content dl:not(.docutils).type .property{display:inline-block;padding-right:8px}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:swap}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:swap} \ No newline at end of file diff --git a/_themes/sphinx_rtd_theme/static/js/badge_only.js b/_themes/sphinx_rtd_theme/static/js/badge_only.js new file mode 100644 index 0000000..526d723 --- /dev/null +++ b/_themes/sphinx_rtd_theme/static/js/badge_only.js @@ -0,0 +1 @@ +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){}}); \ No newline at end of file diff --git a/_themes/sphinx_rtd_theme/static/js/theme.js b/_themes/sphinx_rtd_theme/static/js/theme.js new file mode 100644 index 0000000..bdcbfc1 --- /dev/null +++ b/_themes/sphinx_rtd_theme/static/js/theme.js @@ -0,0 +1,145 @@ +! function (n) { + var e = {}; + + function t(i) { + if (e[i]) return e[i].exports; + var o = e[i] = { + i: i, + l: !1, + exports: {} + }; + return n[i].call(o.exports, o, o.exports, t), o.l = !0, o.exports + } + t.m = n, t.c = e, t.d = function (n, e, i) { + t.o(n, e) || Object.defineProperty(n, e, { + enumerable: !0, + get: i + }) + }, t.r = function (n) { + "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(n, Symbol.toStringTag, { + value: "Module" + }), Object.defineProperty(n, "__esModule", { + value: !0 + }) + }, t.t = function (n, e) { + if (1 & e && (n = t(n)), 8 & e) return n; + if (4 & e && "object" == typeof n && n && n.__esModule) return n; + var i = Object.create(null); + if (t.r(i), Object.defineProperty(i, "default", { + enumerable: !0, + value: n + }), 2 & e && "string" != typeof n) + for (var o in n) t.d(i, o, function (e) { + return n[e] + }.bind(null, o)); + return i + }, t.n = function (n) { + var e = n && n.__esModule ? function () { + return n.default + } : function () { + return n + }; + return t.d(e, "a", e), e + }, t.o = function (n, e) { + return Object.prototype.hasOwnProperty.call(n, e) + }, t.p = "", t(t.s = 0) +}([function (n, e, t) { + t(1), n.exports = t(3) +}, function (n, e, t) { + (function () { + var e = "undefined" != typeof window ? window.jQuery : t(2); + n.exports.ThemeNav = { + navBar: null, + win: null, + winScroll: !1, + winResize: !1, + linkScroll: !1, + winPosition: 0, + winHeight: null, + docHeight: null, + isRunning: !1, + enable: function (n) { + var t = this; + void 0 === n && (n = !0), t.isRunning || (t.isRunning = !0, e((function (e) { + t.init(e), t.reset(), t.win.on("hashchange", t.reset), n && t.win.on("scroll", (function () { + t.linkScroll || t.winScroll || (t.winScroll = !0, requestAnimationFrame((function () { + t.onScroll() + }))) + })), t.win.on("resize", (function () { + t.winResize || (t.winResize = !0, requestAnimationFrame((function () { + t.onResize() + }))) + })), t.onResize() + }))) + }, + enableSticky: function () { + this.enable(!0) + }, + init: function (n) { + n(document); + var e = this; + this.navBar = n("div.wy-side-scroll:first"), this.win = n(window), n(document).on("click", "[data-toggle='wy-nav-top']", (function () { + n("[data-toggle='wy-nav-shift']").toggleClass("shift"), n("[data-toggle='rst-versions']").toggleClass("shift") + })).on("click", ".wy-menu-vertical .current ul li a", (function () { + var t = n(this); + n("[data-toggle='wy-nav-shift']").removeClass("shift"), n("[data-toggle='rst-versions']").toggleClass("shift"), e.toggleCurrent(t), e.hashChange() + })).on("click", "[data-toggle='rst-current-version']", (function () { + n("[data-toggle='rst-versions']").toggleClass("shift-up") + })), n("table.docutils:not(.field-list,.footnote,.citation)").wrap("
"), n("table.docutils.footnote").wrap("
"), n("table.docutils.citation").wrap("
"), n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function () { + var t = n(this); + })) + }, + reset: function () { + var n = encodeURI(window.location.hash) || "#"; + try { + var e = $(".wy-menu-vertical"), + t = e.find('[href="' + n + '"]'); + if (0 === t.length) { + var i = $('.document [id="' + n.substring(1) + '"]').closest("div.section"); + 0 === (t = e.find('[href="#' + i.attr("id") + '"]')).length && (t = e.find('[href="#"]')) + } + t.length > 0 && ($(".wy-menu-vertical .current").removeClass("current"), t.addClass("current"), t.closest("li.toctree-l1").addClass("current"), t.closest("li.toctree-l1").parent().addClass("current"), t.closest("li.toctree-l1").addClass("current"), t.closest("li.toctree-l2").addClass("current"), t.closest("li.toctree-l3").addClass("current"), t.closest("li.toctree-l4").addClass("current"), t[0].scrollIntoView()) + } catch (n) { + console.log("Error expanding nav for anchor", n) + } + }, + onScroll: function () { + this.winScroll = !1; + var n = this.win.scrollTop(), + e = n + this.winHeight, + t = this.navBar.scrollTop() + (n - this.winPosition); + n < 0 || e > this.docHeight || (this.navBar.scrollTop(t), this.winPosition = n) + }, + onResize: function () { + this.winResize = !1, this.winHeight = this.win.height(), this.docHeight = $(document).height() + }, + hashChange: function () { + this.linkScroll = !0, this.win.one("hashchange", (function () { + this.linkScroll = !1 + })) + }, + toggleCurrent: function (n) { + var e = n.closest("li"); + e.siblings("li.current").removeClass("current"), e.siblings().find("li.current").removeClass("current"), e.find("> ul li.current").removeClass("current"), e.toggleClass("current") + } + }, "undefined" != typeof window && (window.SphinxRtdTheme = { + Navigation: n.exports.ThemeNav, + StickyNav: n.exports.ThemeNav + }), + function () { + for (var n = 0, e = ["ms", "moz", "webkit", "o"], t = 0; t < e.length && !window.requestAnimationFrame; ++t) window.requestAnimationFrame = window[e[t] + "RequestAnimationFrame"], window.cancelAnimationFrame = window[e[t] + "CancelAnimationFrame"] || window[e[t] + "CancelRequestAnimationFrame"]; + window.requestAnimationFrame || (window.requestAnimationFrame = function (e, t) { + var i = (new Date).getTime(), + o = Math.max(0, 16 - (i - n)), + r = window.setTimeout((function () { + e(i + o) + }), o); + return n = i + o, r + }), window.cancelAnimationFrame || (window.cancelAnimationFrame = function (n) { + clearTimeout(n) + }) + }() + }).call(window) +}, function (n, e) { + n.exports = jQuery +}, function (n, e, t) { }]); \ No newline at end of file diff --git a/_themes/sphinx_rtd_theme/theme.conf b/_themes/sphinx_rtd_theme/theme.conf new file mode 100644 index 0000000..fd0521f --- /dev/null +++ b/_themes/sphinx_rtd_theme/theme.conf @@ -0,0 +1,18 @@ +[theme] +inherit = basic +stylesheet = css/theme.css +pygments_style = default + +[options] +canonical_url = +analytics_id = +collapse_navigation = True +sticky_navigation = True +navigation_depth = 4 +includehidden = True +titles_only = +logo_only = +display_version = True +prev_next_buttons_location = bottom +style_external_links = False +style_nav_header_background = \ No newline at end of file diff --git a/_themes/sphinx_rtd_theme/versions.html b/_themes/sphinx_rtd_theme/versions.html new file mode 100644 index 0000000..7368659 --- /dev/null +++ b/_themes/sphinx_rtd_theme/versions.html @@ -0,0 +1,34 @@ +{% if READTHEDOCS %} +{# Add rst-badge after rst-versions for small badge style. #} +
+ + Read the Docs + v: {{ current_version }} + + +
+
+
{{ _('Versions') }}
+ {% for slug, url in versions %} +
{{ slug }}
+ {% endfor %} +
+
+
{{ _('Downloads') }}
+ {% for type, url in downloads %} +
{{ type }}
+ {% endfor %} +
+
+ {# Translators: The phrase "Read the Docs" is not translated #} +
{{ _('On Read the Docs') }}
+
+ {{ _('Project Home') }} +
+
+ {{ _('Builds') }} +
+
+
+
+{% endif %} diff --git a/conf.py b/conf.py index 1de0eaa..6688fe7 100644 --- a/conf.py +++ b/conf.py @@ -12,7 +12,6 @@ # serve to show the default. import sys, os -import sphinx_rtd_theme # 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 @@ -26,7 +25,11 @@ # 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.todo'] +extensions = [ + 'sphinx.ext.todo', + 'sphinx.ext.mathjax', + 'sphinx.ext.githubpages', +] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] @@ -42,16 +45,17 @@ # General information about the project. project = u'Python Tips' -copyright = u'2017, Muhammad Yasoob Ullah Khalid' +copyright = ' Yasoob Khalid © 2020' +author = 'Yasoob Khalid' # 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.1' +version = '' # The full version, including alpha/beta/rc tags. -release = '0.1' +release = '' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. @@ -65,7 +69,7 @@ # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. -exclude_patterns = ['_build'] +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', 'sphinx', 'projects'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None @@ -95,7 +99,32 @@ # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -html_theme = 'default' +html_theme = 'sphinx_rtd_theme' +html_theme_path = ["_themes", ] +html_css_files = [ + 'css/custom.css', +] +html_js_files = [ + 'js/custom.js', +] +html_secnumber_suffix = ' ' +html_logo = "_static/images/logo.png" +html_favicon = "_static/images/favicon.png" + +html_context = { + 'display_github': True, + 'github_user': 'yasoob', + 'github_repo': 'intermediatepython', + 'github_version': 'testing/' +} +# 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 = { + 'sticky_navigation': False, + 'logo_only': True +} # 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 @@ -187,13 +216,15 @@ # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'PythonTips.tex', u'Python Tips', - u'Muhammad Yasoob Ullah Khalid', 'manual'), + u'Yasoob Khalid', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. latex_logo = '_static/cover.pdf' -latex_additional_files = ['flaskstyle.sty', '_static/cover.pdf'] +# latex_additional_files = ['flaskstyle.sty', '_static/cover.pdf'] +latex_additional_files = ['_static/cover.pdf'] +numfig = True # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. @@ -310,7 +341,4 @@ epub_use_index = False sys.path.append(os.path.abspath('_themes')) -#html_theme_path = ['_themes'] -html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] -html_theme = 'sphinx_rtd_theme' diff --git a/index.rst b/index.rst index 224ae75..ef5c216 100644 --- a/index.rst +++ b/index.rst @@ -1,9 +1,5 @@ :orphan: -.. note:: - - You can sign up to my `mailing list `__ so that you remain in sync with any major updates to this book or my future projects! - Intermediate Python =================== diff --git a/sphinx/.appveyor.yml b/sphinx/.appveyor.yml new file mode 100644 index 0000000..cceec54 --- /dev/null +++ b/sphinx/.appveyor.yml @@ -0,0 +1,56 @@ +environment: + global: + TEST: -v --durations 25 + PYTHONFAULTHANDLER: x + PYTHONWARNINGS: all + + matrix: + - PYTHON: 37 + - PYTHON: 37-x64 + +install: + - C:\Python%PYTHON%\python.exe -m pip install -U pip setuptools + - C:\Python%PYTHON%\python.exe -m pip install .[test,websupport] + +cache: + - '%LOCALAPPDATA%\pip\Cache' + +# No automatic build, just run python tests +build: off + +# Update build information before testing, no warnings during this step +before_test: + - ps: | + $py_warnings = $env:PYTHONWARNINGS + $env:PYTHONWARNINGS = 'ignore' + Update-AppveyorBuild -Version ((& "C:\Python$($env:PYTHON)\python.exe" -m sphinx --version).Split(' ')[2]) + $env:PYTHONWARNINGS = $py_warnings + +test_script: + - ps: | + Push-Location tests + $test_ignore = $env:TEST_IGNORE + if (-not $test_ignore) { $test_ignore = '' } + $tests = $env:TEST + if (-not $tests) { $tests = '' } + & "C:\Python$($env:PYTHON)\python.exe" -m pytest $test_ignore.Split(' ') --junitxml .junit.xml $tests.Split(' ') + Pop-Location + if ($LastExitCode -eq 1) { Write-Host "Test Failures Occurred, leaving for test result parsing"; exit $LastExitCode } + elseif ($LastExitCode -ne 0) { Write-Host "Other Error Occurred, aborting"; exit $LastExitCode } + +after_test: + - ps: (New-Object System.Net.WebClient).UploadFile("https://ci.appveyor.com/api/testresults/junit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path (Join-Path tests .junit.xml))) + +after_build: + # Remove old or huge cache files to hopefully not exceed the 1GB cache limit. + # + # If the cache limit is reached, the cache will not be updated (of not even + # created in the first run). So this is a trade of between keeping the cache + # current and having a cache at all. + # NB: This is done only `on_success` since the cache in uploaded only on + # success anyway. + - C:\cygwin\bin\find "%LOCALAPPDATA%\pip" -type f -mtime +360 -delete + - C:\cygwin\bin\find "%LOCALAPPDATA%\pip" -type f -size +10M -delete + - C:\cygwin\bin\find "%LOCALAPPDATA%\pip" -empty -delete + # Show size of cache + - C:\cygwin\bin\du -hs "%LOCALAPPDATA%\pip\Cache" diff --git a/sphinx/.circleci/config.yml b/sphinx/.circleci/config.yml new file mode 100644 index 0000000..04c3193 --- /dev/null +++ b/sphinx/.circleci/config.yml @@ -0,0 +1,11 @@ +version: 2 +jobs: + build: + docker: + - image: sphinxdoc/docker-ci + working_directory: /sphinx + steps: + - checkout + - run: /python3.6/bin/pip install -U pip setuptools + - run: /python3.6/bin/pip install -U .[test] + - run: make test PYTHON=/python3.6/bin/python diff --git a/sphinx/.codecov.yml b/sphinx/.codecov.yml new file mode 100644 index 0000000..6525201 --- /dev/null +++ b/sphinx/.codecov.yml @@ -0,0 +1,9 @@ +comment: false +coverage: + status: + project: + default: + enabled: no + patch: + default: + enabled: no diff --git a/sphinx/.github/ISSUE_TEMPLATE/bug_report.md b/sphinx/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..0fa6b61 --- /dev/null +++ b/sphinx/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,46 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: 'bug' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +``` + + +$ git clone https://github.com/.../some_project +$ cd some_project +$ pip install -r requirements.txt +$ cd docs +$ make html SPHINXOPTS="-D language=de" +$ # open _build/html/index and see bla bla +``` + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Your project** +Link to your sphinx project, or attach zipped small project sample. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Environment info** +- OS: [e.g. Unix/Linux/Mac/Win/other with version] +- Python version: [e.g. 3.7.1] +- Sphinx version: [e.g. 1.8.2] +- Sphinx extensions: [e.g. sphinx.ext.autodoc, recommonmark] +- Extra tools: [e.g. Browser, tex or something else] + +**Additional context** +Add any other context about the problem here. + +- [e.g. URL or Ticket] + diff --git a/sphinx/.github/ISSUE_TEMPLATE/config.yml b/sphinx/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..c9009b9 --- /dev/null +++ b/sphinx/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,6 @@ +# Ref: https://help.github.com/en/github/building-a-strong-community/configuring-issue-templates-for-your-repository#configuring-the-template-chooser +blank_issues_enabled: false # default: true +contact_links: +- name: Question + url: https://groups.google.com/forum/#!forum/sphinx-users + about: For Q&A purpose, please use sphinx-users mailing list. diff --git a/sphinx/.github/ISSUE_TEMPLATE/feature_request.md b/sphinx/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..b78fef7 --- /dev/null +++ b/sphinx/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,23 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: 'enhancement' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. + +- [e.g. URL or Ticket] + diff --git a/sphinx/.github/PULL_REQUEST_TEMPLATE.md b/sphinx/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..6f4fe67 --- /dev/null +++ b/sphinx/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,29 @@ +Subject: + + + +### Feature or Bugfix + +- Feature +- Bugfix +- Refactoring + +### Purpose +- +- + +### Detail +- +- + +### Relates +- + diff --git a/sphinx/.gitignore b/sphinx/.gitignore new file mode 100644 index 0000000..b726641 --- /dev/null +++ b/sphinx/.gitignore @@ -0,0 +1,34 @@ +*.pyc +*.egg +*.so +*.swp + +.dir-locals.el +.cache/ +.idea +.mypy_cache/ +.pytest_cache/ +.ropeproject/ +TAGS +.tags +.tox/ +.tx/ +.venv/ +.coverage +htmlcov +.DS_Store +sphinx/pycode/Grammar*pickle +distribute-* + +env/ +build/ +dist/ +docker/ +Sphinx.egg-info/ +doc/_build/ +doc/locale/ +tests/.coverage +tests/build/ +utils/regression_test.js + +node_modules/ diff --git a/sphinx/.travis.yml b/sphinx/.travis.yml new file mode 100644 index 0000000..3ceb2e3 --- /dev/null +++ b/sphinx/.travis.yml @@ -0,0 +1,54 @@ +os: linux +dist: xenial +language: python +cache: pip + +env: + global: + - PYTHONFAULTHANDLER=x + - SKIP_LATEX_BUILD=1 + - IS_PYTHON=true + +jobs: + include: + - python: '3.5' + env: + - TOXENV=du12 + - python: '3.6' + env: + - TOXENV=du13 + - python: '3.7' + env: + - TOXENV=du14 + - python: '3.8' + env: + - TOXENV=du15 + - PYTEST_ADDOPTS="--cov ./ --cov-append --cov-config setup.cfg" + - python: 'nightly' + env: + - TOXENV=du16 + - python: '3.6' + env: TOXENV=docs + - python: '3.6' + env: TOXENV=docslint + - python: '3.6' + env: TOXENV=mypy + - python: '3.6' + env: TOXENV=flake8 + + - language: node_js + node_js: '10.7' + env: IS_PYTHON=false + services: xvfb + +install: + - "sudo apt-get install graphviz" + - if [ $IS_PYTHON = true ]; then pip install -U tox codecov; fi + - if [ $IS_PYTHON = false ]; then npm install; fi + +script: + - if [ $IS_PYTHON = true ]; then tox -- -v; fi + - if [ $IS_PYTHON = false ]; then npm test; fi + +after_success: + - if [[ -e .coverage ]]; then codecov -e $TOXENV; fi diff --git a/sphinx/AUTHORS b/sphinx/AUTHORS new file mode 100644 index 0000000..dbe1082 --- /dev/null +++ b/sphinx/AUTHORS @@ -0,0 +1,97 @@ +Sphinx is written and maintained by Georg Brandl . + +Substantial parts of the templates were written by Armin Ronacher +. + +Other co-maintainers: + +* Takayuki Shimizukawa +* Daniel Neuhäuser <@DasIch> +* Jon Waltman <@jonwaltman> +* Rob Ruana <@RobRuana> +* Robert Lehmann <@lehmannro> +* Roland Meister <@rolmei> +* Takeshi Komiya <@tk0miya> +* Jean-François Burnol <@jfbu> +* Yoshiki Shibukawa <@shibu_jp> +* Timotheus Kampik - <@TimKam> + +Other contributors, listed alphabetically, are: + +* Alastair Houghton -- Apple Help builder +* Alexander Todorov -- inheritance_diagram tests and improvements +* Andi Albrecht -- agogo theme +* Jakob Lykke Andersen -- Rewritten C++ domain +* Henrique Bastos -- SVG support for graphviz extension +* Daniel Bültmann -- todo extension +* Marco Buttu -- doctest extension (pyversion option) +* Nathan Damon -- bugfix in validation of static paths in html builders +* Etienne Desautels -- apidoc module +* Michael Droettboom -- inheritance_diagram extension +* Charles Duffy -- original graphviz extension +* Kevin Dunn -- MathJax extension +* Josip Dzolonga -- coverage builder +* Buck Evan -- dummy builder +* Matthew Fernandez -- todo extension fix +* Hernan Grecco -- search improvements +* Horst Gutmann -- internationalization support +* Martin Hans -- autodoc improvements +* Zac Hatfield-Dodds -- doctest reporting improvements, intersphinx performance +* Doug Hellmann -- graphviz improvements +* Tim Hoffmann -- theme improvements +* Antti Kaihola -- doctest extension (skipif option) +* Dave Kuhlman -- original LaTeX writer +* Blaise Laflamme -- pyramid theme +* Chris Lamb -- reproducibility fixes +* Thomas Lamb -- linkcheck builder +* Łukasz Langa -- partial support for autodoc +* Martin Larralde -- additional napoleon admonitions +* Ian Lee -- quickstart improvements +* Robert Lehmann -- gettext builder (GSOC project) +* Dan MacKinlay -- metadata fixes +* Martin Mahner -- nature theme +* Will Maier -- directory HTML builder +* Jacob Mason -- websupport library (GSOC project) +* Glenn Matthews -- python domain signature improvements +* Kurt McKee -- documentation updates +* Roland Meister -- epub builder +* Ezio Melotti -- collapsible sidebar JavaScript +* Bruce Mitchener -- Minor epub improvement +* Daniel Neuhäuser -- JavaScript domain, Python 3 support (GSOC) +* Julien Palard -- Colspan and rowspan in text builder +* Christopher Perkins -- autosummary integration +* Benjamin Peterson -- unittests +* \T. Powers -- HTML output improvements +* Jeppe Pihl -- literalinclude improvements +* Rob Ruana -- napoleon extension +* Vince Salvino -- JavaScript search improvements +* Stefan Seefeld -- toctree improvements +* Gregory Szorc -- performance improvements +* Taku Shimizu -- epub3 builder +* Antonio Valentino -- qthelp builder, docstring inheritance +* Filip Vavera -- napoleon todo directive +* Pauli Virtanen -- autodoc improvements, autosummary extension +* Eric N. Vander Weele -- autodoc improvements +* Stefan van der Walt -- autosummary extension +* Thomas Waldmann -- apidoc module fixes +* John Waltman -- Texinfo builder +* Barry Warsaw -- setup command improvements +* Sebastian Wiesner -- image handling, distutils support +* Michael Wilson -- Intersphinx HTTP basic auth support +* Matthew Woodcraft -- text output improvements +* Joel Wurtz -- cellspanning support in LaTeX +* Hong Xu -- svg support in imgmath extension and various bug fixes +* Stephen Finucane -- setup command improvements and documentation +* Daniel Pizetta -- inheritance diagram improvements +* KINEBUCHI Tomohiko -- typing Sphinx as well as docutils +* Adrián Chaves (Gallaecio) -- coverage builder improvements + +Many thanks for all contributions! + +There are also a few modules or functions incorporated from other +authors and projects: + +* sphinx.util.jsdump uses the basestring encoding from simplejson, + written by Bob Ippolito, released under the MIT license +* sphinx.util.stemmer was written by Vivake Gupta, placed in the + Public Domain diff --git a/sphinx/CHANGES b/sphinx/CHANGES new file mode 100644 index 0000000..f44c9c4 --- /dev/null +++ b/sphinx/CHANGES @@ -0,0 +1,5253 @@ +Release 3.1.0 (in development) +============================== + +Dependencies +------------ + +Incompatible changes +-------------------- + +* #7477: imgconverter: Invoke "magick convert" command by default on Windows + +Deprecated +---------- + +* The ``module`` argument of ``sphinx.ext.autosummary.generate. + find_autosummary_in_docstring()`` + +Features added +-------------- + +* LaTeX: Make the ``toplevel_sectioning`` setting optional in LaTeX theme +* #7410: Allow to suppress "circular toctree references detected" warnings using + :confval:`suppress_warnings` +* C, added scope control directives, :rst:dir:`c:namespace`, + :rst:dir:`c:namespace-push`, and :rst:dir:`c:namespace-pop`. +* #7466: autosummary: headings in generated documents are not translated +* #7481: html theme: Add right margin to footnote/citation labels +* #7482: html theme: CSS spacing for code blocks with captions and line numbers + +Bugs fixed +---------- + +Testing +-------- + +Release 3.0.2 (in development) +============================== + +Dependencies +------------ + +Incompatible changes +-------------------- + +Deprecated +---------- + +Features added +-------------- + +* C, parse attributes and add :confval:`c_id_attributes` + and :confval:`c_paren_attributes` to support user-defined attributes. + +Bugs fixed +---------- + +* #7461: py domain: fails with IndexError for empty tuple in type annotation +* #7461: autodoc: empty tuple in type annotation is not shown correctly + +Testing +-------- + +Release 3.0.1 (released Apr 11, 2020) +===================================== + +Incompatible changes +-------------------- + +* #7418: std domain: :rst:dir:`term` role becomes case sensitive + +Bugs fixed +---------- + +* #7428: py domain: a reference to class ``None`` emits a nitpicky warning +* #7445: py domain: a return annotation ``None`` in the function signature is + not converted to a hyperlink when using intersphinx +* #7418: std domain: duplication warning for glossary terms is case insensitive +* #7438: C++, fix merging overloaded functions in parallel builds. +* #7422: autodoc: fails with ValueError when using autodoc_mock_imports +* #7435: autodoc: ``autodoc_typehints='description'`` doesn't suppress typehints + in signature for classes/methods +* #7451: autodoc: fails with AttributeError when an object returns non-string + object as a ``__doc__`` member +* #7423: crashed when giving a non-string object to logger +* #7479: html theme: Do not include xmlns attribute with HTML 5 doctype +* #7426: html theme: Escape some links in HTML templates + +Release 3.0.0 (released Apr 06, 2020) +===================================== + +Dependencies +------------ + +3.0.0b1 + +* LaTeX: drop dependency on :program:`extractbb` for image inclusion in + Japanese documents as ``.xbb`` files are unneeded by :program:`dvipdfmx` + since TeXLive2015 (refs: #6189) +* babel-2.0 or above is available (Unpinned) + +Incompatible changes +-------------------- + +3.0.0b1 + +* Drop features and APIs deprecated in 1.8.x +* #247: autosummary: stub files are overwritten automatically by default. see + :confval:`autosummary_generate_overwrite` to change the behavior +* #5923: autodoc: the members of ``object`` class are not documented by default + when ``:inherited-members:`` and ``:special-members:`` are given. +* #6830: py domain: ``meta`` fields in info-field-list becomes reserved. They + are not displayed on output document now +* #6417: py domain: doctree of desc_parameterlist has been changed. The + argument names, annotations and default values are wrapped with inline node +* The structure of ``sphinx.events.EventManager.listeners`` has changed +* Due to the scoping changes for :rst:dir:`productionlist` some uses of + :rst:role:`token` must be modified to include the scope which was previously + ignored. +* #6903: Internal data structure of Python, reST and standard domains have + changed. The node_id is added to the index of objects and modules. Now they + contains a pair of docname and node_id for cross reference. +* #7276: C++ domain: Non intended behavior is removed such as ``say_hello_`` + links to ``.. cpp:function:: say_hello()`` +* #7210: js domain: Non intended behavior is removed such as ``parseInt_`` links + to ``.. js:function:: parseInt`` +* #7229: rst domain: Non intended behavior is removed such as ``numref_`` links + to ``.. rst:role:: numref`` +* #6903: py domain: Non intended behavior is removed such as ``say_hello_`` + links to ``.. py:function:: say_hello()`` +* #7246: py domain: Drop special cross reference helper for exceptions, + functions and methods +* The C domain has been rewritten, with additional directives and roles. + The existing ones are now more strict, resulting in new warnings. +* The attribute ``sphinx_cpp_tagname`` in the ``desc_signature_line`` node + has been renamed to ``sphinx_line_type``. +* #6462: double backslashes in domain directives are no longer replaced by + single backslashes as default. A new configuration value + :confval:`strip_signature_backslash` can be used by users to reenable it. + +3.0.0 final + +* #7222: ``sphinx.util.inspect.unwrap()`` is renamed to ``unwrap_all()`` + +Deprecated +---------- + +3.0.0b1 + +* ``desc_signature['first']`` +* ``sphinx.directives.DescDirective`` +* ``sphinx.domains.std.StandardDomain.add_object()`` +* ``sphinx.domains.python.PyDecoratorMixin`` +* ``sphinx.ext.autodoc.get_documenters()`` +* ``sphinx.ext.autosummary.process_autosummary_toc()`` +* ``sphinx.parsers.Parser.app`` +* ``sphinx.testing.path.Path.text()`` +* ``sphinx.testing.path.Path.bytes()`` +* ``sphinx.util.inspect.getargspec()`` +* ``sphinx.writers.latex.LaTeXWriter.format_docclass()`` + +Features added +-------------- + +3.0.0b1 + +* #247: autosummary: Add :confval:`autosummary_generate_overwrite` to overwrite + old stub file +* #5923: autodoc: ``:inherited-members:`` option takes a name of anchestor class + not to document inherited members of the class and uppers +* #6830: autodoc: consider a member private if docstring contains + ``:meta private:`` in info-field-list +* #7165: autodoc: Support Annotated type (PEP-593) +* #2815: autodoc: Support singledispatch functions and methods +* #7079: autodoc: :confval:`autodoc_typehints` accepts ``"description"`` + configuration. It shows typehints as object description +* #7314: apidoc: Propagate ``--maxdepth`` option through package documents +* #6558: glossary: emit a warning for duplicated glossary entry +* #3106: domain: Register hyperlink target for index page automatically +* #6558: std domain: emit a warning for duplicated generic objects +* #6830: py domain: Add new event: :event:`object-description-transform` +* #6895: py domain: Do not emit nitpicky warnings for built-in types +* py domain: Support lambda functions in function signature +* #6417: py domain: Allow to make a style for arguments of functions and methods +* #7238, #7239: py domain: Emit a warning on describing a python object if the + entry is already added as the same name +* #7341: py domain: type annotations in singature are converted to cross refs +* Support priority of event handlers. For more detail, see + :py:meth:`.Sphinx.connect()` +* #3077: Implement the scoping for :rst:dir:`productionlist` as indicated + in the documentation. +* #1027: Support backslash line continuation in :rst:dir:`productionlist`. +* #7108: config: Allow to show an error message from conf.py via ``ConfigError`` +* #7032: html: :confval:`html_scaled_image_link` will be disabled for images having + ``no-scaled-link`` class +* #7144: Add CSS class indicating its domain for each desc node +* #7211: latex: Use babel for Chinese document when using XeLaTeX +* #6672: LaTeX: Support LaTeX Theming (experimental) +* #7005: LaTeX: Add LaTeX styling macro for :rst:role:`kbd` role +* #7220: genindex: Show "main" index entries at first +* #7103: linkcheck: writes all links to ``output.json`` +* #7025: html search: full text search can be disabled for individual document + using ``:nosearch:`` file-wide metadata +* #7293: html search: Allow to override JavaScript splitter via + ``SearchLanguage.js_splitter_code`` +* #7142: html theme: Add a theme option: ``pygments_dark_style`` to switch the + style of code-blocks in dark mode +* The C domain has been rewritten adding for example: + + - Cross-referencing respecting the current scope. + - Possible to document anonymous entities. + - More specific directives and roles for each type of entitiy, + e.g., handling scoping of enumerators. + - New role :rst:role:`c:expr` for rendering expressions and types + in text. + +* Added ``SphinxDirective.get_source_info()`` + and ``SphinxRole.get_source_info()``. +* #7324: sphinx-build: Emit a warning if multiple files having different file + extensions for same document found + +3.0.0 final + +* Added ``ObjectDescription.transform_content()``. + +Bugs fixed +---------- + +3.0.0b1 + +* C++, fix cross reference lookup in certain cases involving + function overloads. +* #5078: C++, fix cross reference lookup when a directive contains multiple + declarations. +* C++, suppress warnings for directly dependent typenames in cross references + generated automatically in signatures. +* #5637: autodoc: Incorrect handling of nested class names on show-inheritance +* #7267: autodoc: error message for invalid directive options has wrong location +* #7329: autodoc: info-field-list is wrongly generated from type hints into the + class description even if ``autoclass_content='class'`` set +* #7331: autodoc: a cython-function is not recognized as a function +* #5637: inheritance_diagram: Incorrect handling of nested class names +* #7139: ``code-block:: guess`` does not work +* #7325: html: source_suffix containing dot leads to wrong source link +* #7357: html: Resizing SVG image fails with ValueError +* #7278: html search: Fix use of ``html_file_suffix`` instead of + ``html_link_suffix`` in search results +* #7297: html theme: ``bizstyle`` does not support ``sidebarwidth`` +* #3842: singlehtml: Path to images broken when master doc is not in source root +* #7179: std domain: Fix whitespaces are suppressed on referring GenericObject +* #7289: console: use bright colors instead of bold +* #1539: C, parse array types. +* #2377: C, parse function pointers even in complex types. +* #7345: sphinx-build: Sphinx crashes if output directory exists as a file +* #7290: sphinx-build: Ignore bdb.BdbQuit when handling exceptions +* #6240: napoleon: Attributes and Methods sections ignore :noindex: option + +3.0.0 final + +* #7364: autosummary: crashed when :confval:`autosummary_generate` is False +* #7370: autosummary: raises UnboundLocalError when unknown module given +* #7367: C++, alternate operator spellings are now supported. +* C, alternate operator spellings are now supported. +* #7368: C++, comma operator in expressions, pack expansion in template + argument lists, and more comprehensive error messages in some cases. +* C, C++, fix crash and wrong duplicate warnings related to anon symbols. +* #6477: Escape first "!" in a cross reference linking no longer possible +* #7219: py domain: The index entry generated by ``py:function`` directive is + different with one from ``index`` directive with "builtin" type +* #7301: capital characters are not allowed for node_id +* #7301: epub: duplicated node_ids are generated +* #6564: html: a width of table was ignored on HTML builder +* #7401: Incorrect argument is passed for :event:`env-get-outdated` handlers +* #7355: autodoc: a signature of cython-function is not recognized well +* #7222: autodoc: ``__wrapped__`` functions are not documented correctly +* #7409: intersphinx: ValueError is raised when an extension sets up + :confval:`intersphinx_mapping` on :event:`config-inited` event +* #7343: Sphinx builds has been slower since 2.4.0 on debug mode + +Release 2.4.4 (released Mar 05, 2020) +===================================== + +Bugs fixed +---------- + +* #7197: LaTeX: platex cause error to build image directive with target url +* #7223: Sphinx builds has been slower since 2.4.0 + +Release 2.4.3 (released Feb 22, 2020) +===================================== + +Bugs fixed +---------- + +* #7184: autodoc: ``*args`` and ``**kwarg`` in type comments are not handled + properly +* #7189: autodoc: classmethod coroutines are not detected +* #7183: intersphinx: ``:attr:`` reference to property is broken +* #6244, #6387: html search: Search breaks/hangs when built with dirhtml builder +* #7195: todo: emit doctree-resolved event with non-document node incorrectly + +Release 2.4.2 (released Feb 19, 2020) +===================================== + +Bugs fixed +---------- + +* #7138: autodoc: ``autodoc.typehints`` crashed when variable has unbound object + as a value +* #7156: autodoc: separator for keyword only arguments is not shown +* #7146: autodoc: IndexError is raised on suppressed type_comment found +* #7161: autodoc: typehints extension does not support parallel build +* #7178: autodoc: TypeError is raised on fetching type annotations +* #7151: crashed when extension assigns a value to ``env.indexentries`` +* #7170: text: Remove debug print +* #7137: viewcode: Avoid to crash when non-python code given + +Release 2.4.1 (released Feb 11, 2020) +===================================== + +Bugs fixed +---------- + +* #7120: html: crashed when on scaling SVG images which have float dimentions +* #7126: autodoc: TypeError: 'getset_descriptor' object is not iterable + +Release 2.4.0 (released Feb 09, 2020) +===================================== + +Deprecated +---------- + +* The ``decode`` argument of ``sphinx.pycode.ModuleAnalyzer()`` +* ``sphinx.directives.other.Index`` +* ``sphinx.environment.temp_data['gloss_entries']`` +* ``sphinx.environment.BuildEnvironment.indexentries`` +* ``sphinx.environment.collectors.indexentries.IndexEntriesCollector`` +* ``sphinx.ext.apidoc.INITPY`` +* ``sphinx.ext.apidoc.shall_skip()`` +* ``sphinx.io.FiletypeNotFoundError`` +* ``sphinx.io.get_filetype()`` +* ``sphinx.pycode.ModuleAnalyzer.encoding`` +* ``sphinx.roles.Index`` +* ``sphinx.util.detect_encoding()`` +* ``sphinx.util.get_module_source()`` +* ``sphinx.util.inspect.Signature`` +* ``sphinx.util.inspect.safe_getmembers()`` +* ``sphinx.writers.latex.LaTeXTranslator.settings.author`` +* ``sphinx.writers.latex.LaTeXTranslator.settings.contentsname`` +* ``sphinx.writers.latex.LaTeXTranslator.settings.docclass`` +* ``sphinx.writers.latex.LaTeXTranslator.settings.docname`` +* ``sphinx.writers.latex.LaTeXTranslator.settings.title`` +* ``sphinx.writers.latex.ADDITIONAL_SETTINGS`` +* ``sphinx.writers.latex.DEFAULT_SETTINGS`` +* ``sphinx.writers.latex.LUALATEX_DEFAULT_FONTPKG`` +* ``sphinx.writers.latex.PDFLATEX_DEFAULT_FONTPKG`` +* ``sphinx.writers.latex.XELATEX_DEFAULT_FONTPKG`` +* ``sphinx.writers.latex.XELATEX_GREEK_DEFAULT_FONTPKG`` + +Features added +-------------- + +* #6910: inheritance_diagram: Make the background of diagrams transparent +* #6446: duration: Add ``sphinx.ext.durations`` to inspect which documents slow + down the build +* #6837: LaTeX: Support a nested table +* #7115: LaTeX: Allow to override LATEXOPTS and LATEXMKOPTS via environment + variable +* #6966: graphviz: Support ``:class:`` option +* #6696: html: ``:scale:`` option of image/figure directive not working for SVG + images (imagesize-1.2.0 or above is required) +* #6994: imgconverter: Support illustrator file (.ai) to .png conversion +* autodoc: Support Positional-Only Argument separator (PEP-570 compliant) +* autodoc: Support type annotations for variables +* #2755: autodoc: Add new event: :event:`autodoc-before-process-signature` +* #2755: autodoc: Support type_comment style (ex. ``# type: (str) -> str``) + annotation (python3.8+ or `typed_ast `_ + is required) +* #7051: autodoc: Support instance variables without defaults (PEP-526) +* #6418: autodoc: Add a new extension ``sphinx.ext.autodoc.typehints``. It shows + typehints as object description if ``autodoc_typehints = "description"`` set. + This is an experimental extension and it will be integrated into autodoc core + in Sphinx-3.0 +* SphinxTranslator now calls visitor/departure method for super node class if + visitor/departure method for original node class not found +* #6418: Add new event: :event:`object-description-transform` +* py domain: :rst:dir:`py:data` and :rst:dir:`py:attribute` take new options + named ``:type:`` and ``:value:`` to describe its type and initial value +* #6785: py domain: ``:py:attr:`` is able to refer properties again +* #6772: apidoc: Add ``-q`` option for quiet mode + +Bugs fixed +---------- + +* #6925: html: Remove redundant type="text/javascript" from +{%- endif %} +{% endblock %} + +{% block rootrellink %} +
  • Sphinx home |
  • +
  • Documentation »
  • +{% endblock %} + +{% block header %} + +{% endblock %} diff --git a/sphinx/doc/_themes/sphinx13/static/bodybg.png b/sphinx/doc/_themes/sphinx13/static/bodybg.png new file mode 100644 index 0000000..6f667b9 Binary files /dev/null and b/sphinx/doc/_themes/sphinx13/static/bodybg.png differ diff --git a/sphinx/doc/_themes/sphinx13/static/footerbg.png b/sphinx/doc/_themes/sphinx13/static/footerbg.png new file mode 100644 index 0000000..d1bcb00 Binary files /dev/null and b/sphinx/doc/_themes/sphinx13/static/footerbg.png differ diff --git a/sphinx/doc/_themes/sphinx13/static/headerbg.png b/sphinx/doc/_themes/sphinx13/static/headerbg.png new file mode 100644 index 0000000..5225049 Binary files /dev/null and b/sphinx/doc/_themes/sphinx13/static/headerbg.png differ diff --git a/sphinx/doc/_themes/sphinx13/static/listitem.png b/sphinx/doc/_themes/sphinx13/static/listitem.png new file mode 100644 index 0000000..f7f814d Binary files /dev/null and b/sphinx/doc/_themes/sphinx13/static/listitem.png differ diff --git a/sphinx/doc/_themes/sphinx13/static/relbg.png b/sphinx/doc/_themes/sphinx13/static/relbg.png new file mode 100644 index 0000000..68a9b77 Binary files /dev/null and b/sphinx/doc/_themes/sphinx13/static/relbg.png differ diff --git a/sphinx/doc/_themes/sphinx13/static/sphinx13.css b/sphinx/doc/_themes/sphinx13/static/sphinx13.css new file mode 100644 index 0000000..131657e --- /dev/null +++ b/sphinx/doc/_themes/sphinx13/static/sphinx13.css @@ -0,0 +1,442 @@ +/* + * sphinx13.css + * ~~~~~~~~~~~~ + * + * Sphinx stylesheet -- sphinx13 theme. + * + * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: 'Open Sans', 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; + font-size: 14px; + text-align: center; + background-image: url(bodybg.png); + color: black; + padding: 0; + border-right: 1px solid #0a507a; + border-left: 1px solid #0a507a; + + margin: 0 auto; + min-width: 780px; + max-width: 1080px; +} + +.pageheader { + background-image: url(headerbg.png); + text-align: left; + padding: 10px 15px; +} + +.pageheader ul { + float: right; + color: white; + list-style-type: none; + padding-left: 0; + margin-top: 30px; + margin-right: 10px; +} + +.pageheader li { + float: left; + margin: 0 0 0 10px; +} + +.pageheader li a { + border-radius: 1px; + padding: 8px 12px; + color: #f9f9f0; + text-shadow: 0 0 5px rgba(0, 0, 0, 0.5); +} + +.pageheader li a:hover { + background-color: #f9f9f0; + color: #0a507a; + text-shadow: none; +} + +div.document { + background-color: white; + text-align: left; +} + +div.bodywrapper { + margin: 0 240px 0 0; + border-right: 1px solid #0a507a; +} + +div.body { + margin: 0; + padding: 0.5em 20px 20px 20px; +} + +div.related { + font-size: 1em; + color: white; +} + +div.related ul { + background-image: url(relbg.png); + height: 1.9em; + border-top: 1px solid #002e50; + border-bottom: 1px solid #002e50; +} + +div.related ul li { + margin: 0 5px 0 0; + padding: 0; + float: left; +} + +div.related ul li.right { + float: right; + margin-right: 5px; +} + +div.related ul li a { + margin: 0; + padding: 0 5px 0 5px; + line-height: 1.75em; + color: #f9f9f0; + text-shadow: 0px 0px 1px rgba(0, 0, 0, 0.5); +} + +div.related ul li a:hover { + color: white; + /*text-decoration: underline;*/ + text-shadow: 0px 0px 1px rgba(255, 255, 255, 0.5); +} + +div.sphinxsidebarwrapper { + position: relative; + top: 0px; + padding: 0; +} + +div.sphinxsidebar { + margin: 0; + padding: 0 15px 15px 0; + width: 210px; + float: right; + font-size: 1em; + text-align: left; +} + +div.sphinxsidebar .logo { + font-size: 1.8em; + color: #0A507A; + font-weight: 300; + text-align: center; +} + +div.sphinxsidebar .logo img { + vertical-align: middle; +} + +div.sphinxsidebar .download a img { + vertical-align: middle; +} + +div.subscribeformwrapper { + display: block; + overflow: auto; + margin-bottom: 1.2em; +} + +div.sphinxsidebar input { + border: 1px solid #aaa; + font-family: 'Open Sans', 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; +} + +div.sphinxsidebar .subscribeform { + margin-top: 0; +} + +div.sphinxsidebar .subscribeform input { + border: 1px solid #aaa; + font-size: 0.9em; + float: left; + padding: 0.25em 0.5em; + box-sizing: border-box; +} + +div.sphinxsidebar .subscribeform input[type="text"] { + width: 60%; +} + +div.sphinxsidebar .subscribeform input[type="submit"] { + width: 40%; + border-left: none; +} + +div.sphinxsidebar h3 { + font-size: 1.5em; + border-top: 1px solid #0a507a; + margin-top: 1em; + margin-bottom: 0.5em; + padding-top: 0.5em; +} + +div.sphinxsidebar h4 { + font-size: 1.2em; + margin-bottom: 0; +} + +div.sphinxsidebar h3, div.sphinxsidebar h4 { + margin-right: -15px; + margin-left: -15px; + padding-right: 14px; + padding-left: 14px; + color: #333; + font-weight: 300; + /*text-shadow: 0px 0px 0.5px rgba(0, 0, 0, 0.4);*/ +} + +div.sphinxsidebarwrapper > h3:first-child { + margin-top: 0.5em; + border: none; +} + +div.sphinxsidebar h3 a { + color: #333; +} + +div.sphinxsidebar ul { + color: #444; + margin-top: 7px; + padding: 0; + line-height: 130%; +} + +div.sphinxsidebar ul ul { + margin-left: 20px; + list-style-image: url(listitem.png); +} + +div.footer { + background-image: url(footerbg.png); + color: #ccc; + text-shadow: 0 0 .2px rgba(255, 255, 255, 0.8); + padding: 3px 8px 3px 0; + clear: both; + font-size: 0.8em; + text-align: right; +} + +/* no need to make a visible link to Sphinx on the Sphinx page */ +div.footer a { + color: #ccc; +} + +/* -- body styles ----------------------------------------------------------- */ + +p { + margin: 0.8em 0 0.5em 0; +} + +a { + color: #A2881D; + text-decoration: none; +} + +a:hover { + color: #E1C13F; +} + +div.body a { + text-decoration: underline; +} + +h1 { + margin: 10px 0 0 0; + font-size: 2.4em; + color: #0A507A; + font-weight: 300; +} + +h2 { + margin: 1.em 0 0.2em 0; + font-size: 1.5em; + font-weight: 300; + padding: 0; + color: #174967; +} + +h3 { + margin: 1em 0 -0.3em 0; + font-size: 1.3em; + font-weight: 300; +} + +div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a { + text-decoration: none; +} + +div.body h1 a tt, div.body h2 a tt, div.body h3 a tt, div.body h4 a tt, div.body h5 a tt, div.body h6 a tt { + color: #0A507A !important; + font-size: inherit !important; +} + +a.headerlink { + color: #0A507A !important; + font-size: 12px; + margin-left: 6px; + padding: 0 4px 0 4px; + text-decoration: none !important; + float: right; +} + +a.headerlink:hover { + background-color: #ccc; + color: white!important; +} + +/* avoid font-size when :mod: role in headings */ +h1 code, h2 code, h3 code, h4 code { + font-size: inherit; +} + +cite, code, tt { + font-family: 'Consolas', 'DejaVu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + font-size: 14px; + letter-spacing: -0.02em; +} + +table.deprecated code.literal { + word-break: break-all; +} + +tt { + background-color: #f2f2f2; + border: 1px solid #ddd; + border-radius: 2px; + color: #333; + padding: 1px 0.2em; +} + +tt.descname, tt.descclassname, tt.xref { + border: 0; +} + +hr { + border: 1px solid #abc; + margin: 2em; +} + +a tt { + border: 0; + color: #a2881d; +} + +a tt:hover { + color: #e1c13f; +} + +pre { + font-family: 'Consolas', 'Courier New', 'DejaVu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + font-size: 13px; + letter-spacing: 0.015em; + line-height: 120%; + padding: 0.5em; + border: 1px solid #ccc; + border-radius: 2px; + background-color: #f8f8f8; +} + +pre a { + color: inherit; + text-decoration: underline; +} + +td.linenos pre { + padding: 0.5em 0; +} + +div.quotebar { + background-color: #f8f8f8; + max-width: 250px; + float: right; + padding: 0px 7px; + border: 1px solid #ccc; + margin-left: 1em; +} + +div.topic { + background-color: #f8f8f8; +} + +table { + border-collapse: collapse; + margin: 0 -0.5em 0 -0.5em; +} + +table td, table th { + padding: 0.2em 0.5em 0.2em 0.5em; +} + +div.admonition, div.warning { + font-size: 0.9em; + margin: 1em 0 1em 0; + border: 1px solid #86989B; + border-radius: 2px; + background-color: #f7f7f7; + padding: 0; +} + +div.admonition > p, div.warning > p { + margin: 0.5em 1em 0.5em 1em; + padding: 0; +} + +div.admonition > pre, div.warning > pre { + margin: 0.4em 1em 0.4em 1em; +} + +div.admonition > p.admonition-title, +div.warning > p.admonition-title { + margin-top: 0.5em; + font-weight: bold; +} + +div.warning { + border: 1px solid #940000; +} + +div.admonition > ul, +div.admonition > ol, +div.warning > ul, +div.warning > ol { + margin: 0.1em 0.5em 0.5em 3em; + padding: 0; +} + +div.admonition div.highlight { + background: none; +} + +.viewcode-back { + font-family: 'Open Sans', 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} + +.contentstable { + margin-left: 30px; + margin: 0 auto; + table-layout: fixed; +} diff --git a/sphinx/doc/_themes/sphinx13/static/sphinxheader.png b/sphinx/doc/_themes/sphinx13/static/sphinxheader.png new file mode 100644 index 0000000..845da4a Binary files /dev/null and b/sphinx/doc/_themes/sphinx13/static/sphinxheader.png differ diff --git a/sphinx/doc/_themes/sphinx13/theme.conf b/sphinx/doc/_themes/sphinx13/theme.conf new file mode 100644 index 0000000..876b198 --- /dev/null +++ b/sphinx/doc/_themes/sphinx13/theme.conf @@ -0,0 +1,4 @@ +[theme] +inherit = basic +stylesheet = sphinx13.css +pygments_style = trac diff --git a/sphinx/doc/authors.rst b/sphinx/doc/authors.rst new file mode 100644 index 0000000..980b33e --- /dev/null +++ b/sphinx/doc/authors.rst @@ -0,0 +1,9 @@ +:tocdepth: 2 + +.. _authors: + +Sphinx authors +============== + +.. include:: ../AUTHORS + diff --git a/sphinx/doc/changes.rst b/sphinx/doc/changes.rst new file mode 100644 index 0000000..ab97955 --- /dev/null +++ b/sphinx/doc/changes.rst @@ -0,0 +1,10 @@ +:tocdepth: 1 + +.. default-role:: any + +.. _changes: + +Changes in Sphinx +***************** + +.. include:: ../CHANGES diff --git a/sphinx/doc/code_of_conduct.rst b/sphinx/doc/code_of_conduct.rst new file mode 100644 index 0000000..c1af92d --- /dev/null +++ b/sphinx/doc/code_of_conduct.rst @@ -0,0 +1,8 @@ +:tocdepth: 2 + +.. _code_of_conduct: + +Sphinx Code of Conduct +====================== + +.. include:: ../CODE_OF_CONDUCT diff --git a/sphinx/doc/conf.py b/sphinx/doc/conf.py new file mode 100644 index 0000000..77d2a57 --- /dev/null +++ b/sphinx/doc/conf.py @@ -0,0 +1,163 @@ +# Sphinx documentation build configuration file + +import re + +import sphinx + + +extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo', + 'sphinx.ext.autosummary', 'sphinx.ext.extlinks', + 'sphinx.ext.intersphinx', + 'sphinx.ext.viewcode', 'sphinx.ext.inheritance_diagram'] + +master_doc = 'contents' +templates_path = ['_templates'] +exclude_patterns = ['_build'] + +project = 'Sphinx' +copyright = '2007-2020, Georg Brandl and the Sphinx team' +version = sphinx.__display_version__ +release = version +show_authors = True + +html_theme = 'sphinx13' +html_theme_path = ['_themes'] +modindex_common_prefix = ['sphinx.'] +html_static_path = ['_static'] +html_sidebars = {'index': ['indexsidebar.html', 'searchbox.html']} +html_additional_pages = {'index': 'index.html'} +html_use_opensearch = 'http://sphinx-doc.org' + +htmlhelp_basename = 'Sphinxdoc' + +epub_theme = 'epub' +epub_basename = 'sphinx' +epub_author = 'Georg Brandl' +epub_publisher = 'http://sphinx-doc.org/' +epub_uid = 'web-site' +epub_scheme = 'url' +epub_identifier = epub_publisher +epub_pre_files = [('index.xhtml', 'Welcome')] +epub_post_files = [('usage/installation.xhtml', 'Installing Sphinx'), + ('develop.xhtml', 'Sphinx development')] +epub_exclude_files = ['_static/opensearch.xml', '_static/doctools.js', + '_static/jquery.js', '_static/searchtools.js', + '_static/underscore.js', '_static/basic.css', + '_static/language_data.js', + 'search.html', '_static/websupport.js'] +epub_fix_images = False +epub_max_image_width = 0 +epub_show_urls = 'inline' +epub_use_index = False +epub_guide = (('toc', 'contents.xhtml', 'Table of Contents'),) +epub_description = 'Sphinx documentation generator system manual' + +latex_documents = [('contents', 'sphinx.tex', 'Sphinx Documentation', + 'Georg Brandl', 'manual', 1)] +latex_logo = '_static/sphinx.png' +latex_elements = { + 'fontenc': r'\usepackage[LGR,X2,T1]{fontenc}', + 'fontpkg': r''' +\usepackage[sc]{mathpazo} +\usepackage[scaled]{helvet} +\usepackage{courier} +\substitutefont{LGR}{\rmdefault}{cmr} +\substitutefont{LGR}{\sfdefault}{cmss} +\substitutefont{LGR}{\ttdefault}{cmtt} +\substitutefont{X2}{\rmdefault}{cmr} +\substitutefont{X2}{\sfdefault}{cmss} +\substitutefont{X2}{\ttdefault}{cmtt} +''', + 'passoptionstopackages': '\\PassOptionsToPackage{svgnames}{xcolor}', + 'preamble': '\\DeclareUnicodeCharacter{229E}{\\ensuremath{\\boxplus}}', + 'fvset': '\\fvset{fontsize=auto}', + # fix missing index entry due to RTD doing only once pdflatex after makeindex + 'printindex': r''' +\IfFileExists{\jobname.ind} + {\footnotesize\raggedright\printindex} + {\begin{sphinxtheindex}\end{sphinxtheindex}} +''', +} +latex_show_urls = 'footnote' +latex_use_xindy = True + +autodoc_member_order = 'groupwise' +todo_include_todos = True +extlinks = {'duref': ('http://docutils.sourceforge.net/docs/ref/rst/' + 'restructuredtext.html#%s', ''), + 'durole': ('http://docutils.sourceforge.net/docs/ref/rst/' + 'roles.html#%s', ''), + 'dudir': ('http://docutils.sourceforge.net/docs/ref/rst/' + 'directives.html#%s', '')} + +man_pages = [ + ('contents', 'sphinx-all', 'Sphinx documentation generator system manual', + 'Georg Brandl', 1), + ('man/sphinx-build', 'sphinx-build', 'Sphinx documentation generator tool', + '', 1), + ('man/sphinx-quickstart', 'sphinx-quickstart', 'Sphinx documentation ' + 'template generator', '', 1), + ('man/sphinx-apidoc', 'sphinx-apidoc', 'Sphinx API doc generator tool', + '', 1), + ('man/sphinx-autogen', 'sphinx-autogen', 'Generate autodoc stub pages', + '', 1), +] + +texinfo_documents = [ + ('contents', 'sphinx', 'Sphinx Documentation', 'Georg Brandl', + 'Sphinx', 'The Sphinx documentation builder.', 'Documentation tools', + 1), +] + +# We're not using intersphinx right now, but if we did, this would be part of +# the mapping: +intersphinx_mapping = {'python': ('https://docs.python.org/3/', None)} + +# Sphinx document translation with sphinx gettext feature uses these settings: +locale_dirs = ['locale/'] +gettext_compact = False + + +# -- Extension interface ------------------------------------------------------- + +from sphinx import addnodes # noqa + +event_sig_re = re.compile(r'([a-zA-Z-]+)\s*\((.*)\)') + + +def parse_event(env, sig, signode): + m = event_sig_re.match(sig) + if not m: + signode += addnodes.desc_name(sig, sig) + return sig + name, args = m.groups() + signode += addnodes.desc_name(name, name) + plist = addnodes.desc_parameterlist() + for arg in args.split(','): + arg = arg.strip() + plist += addnodes.desc_parameter(arg, arg) + signode += plist + return name + + +def setup(app): + from sphinx.ext.autodoc import cut_lines + from sphinx.util.docfields import GroupedField + app.connect('autodoc-process-docstring', cut_lines(4, what=['module'])) + app.add_object_type('confval', 'confval', + objname='configuration value', + indextemplate='pair: %s; configuration value') + app.add_object_type('setuptools-confval', 'setuptools-confval', + objname='setuptools configuration value', + indextemplate='pair: %s; setuptools configuration value') + fdesc = GroupedField('parameter', label='Parameters', + names=['param'], can_collapse=True) + app.add_object_type('event', 'event', 'pair: %s; event', parse_event, + doc_field_types=[fdesc]) + + # workaround for RTD + from sphinx.util import logging + logger = logging.getLogger(__name__) + app.info = lambda *args, **kwargs: logger.info(*args, **kwargs) + app.warn = lambda *args, **kwargs: logger.warning(*args, **kwargs) + app.debug = lambda *args, **kwargs: logger.debug(*args, **kwargs) diff --git a/sphinx/doc/contents.rst b/sphinx/doc/contents.rst new file mode 100644 index 0000000..7e87cff --- /dev/null +++ b/sphinx/doc/contents.rst @@ -0,0 +1,54 @@ + +.. _contents: + +Sphinx documentation contents +============================= + +.. toctree:: + :maxdepth: 2 + + intro + + usage/installation + usage/quickstart + usage/restructuredtext/index + usage/markdown + usage/configuration + usage/builders/index + usage/extensions/index + usage/theming + usage/advanced/intl + usage/advanced/setuptools + usage/advanced/websupport/index + + man/index + theming + templating + latex + extdev/index + development/tutorials/index + + faq + glossary + devguide + changes + examples + authors + code_of_conduct + + + +Indices and tables +================== + +.. only:: builder_html + + * :ref:`genindex` + * :ref:`modindex` + * :ref:`search` + * :ref:`glossary` + +.. only:: not builder_html + + * :ref:`modindex` + * :ref:`glossary` diff --git a/sphinx/doc/develop.rst b/sphinx/doc/develop.rst new file mode 100644 index 0000000..d4b9a0e --- /dev/null +++ b/sphinx/doc/develop.rst @@ -0,0 +1,152 @@ +:orphan: + +Sphinx development +================== + +Sphinx is a maintained by a group of volunteers. We value every contribution! + +* The code can be found in a Git repository, at + https://github.com/sphinx-doc/sphinx/. +* Issues and feature requests should be raised in the `tracker + `_. +* The mailing list for development is at `Google Groups + `_. +* There is also the #sphinx-doc IRC channel on `freenode + `_. + +For more about our development process and methods, see the :doc:`devguide`. + +Extensions +========== + +To learn how to write your own extension, see :ref:`dev-extensions`. + +The `sphinx-contrib `_ +repository contains many contributed extensions. Some of them have their own +releases on PyPI, others you can install from a checkout. + +This is the current list of contributed extensions in that repository: + +- aafig: render embedded ASCII art as nice images using aafigure_ +- actdiag: embed activity diagrams by using actdiag_ +- adadomain: an extension for Ada support (Sphinx 1.0 needed) +- ansi: parse ANSI color sequences inside documents +- argdoc: automatically generate documentation for command-line arguments, + descriptions and help text +- astah: embed diagram by using astah +- autoanysrc: Gather reST documentation from any source files +- autorun: Execute code in a ``runblock`` directive +- beamer_: A builder for Beamer (LaTeX) output. +- blockdiag: embed block diagrams by using blockdiag_ +- cacoo: embed diagram from Cacoo +- cf3domain: a domain for CFEngine 3 policies +- cheader: The missing c:header directive for Sphinx's built-in C domain +- cheeseshop: easily link to PyPI packages +- clearquest: create tables from ClearQuest_ queries +- cmakedomain_: a domain for CMake_ +- coffeedomain: a domain for (auto)documenting CoffeeScript source code +- context: a builder for ConTeXt +- disqus: embed Disqus comments in documents +- documentedlist: converts a Python list to a table in the generated + documentation +- doxylink: Link to external Doxygen-generated HTML documentation +- domaintools_: A tool for easy domain creation +- email: obfuscate email addresses +- erlangdomain: an extension for Erlang support (Sphinx 1.0 needed) +- exceltable: embed Excel spreadsheets into documents using exceltable_ +- feed: an extension for creating syndication feeds and time-based overviews + from your site content +- findanything_: an extension to add Sublime Text 2-like findanything panels + to your documentation to find pages, sections and index entries while typing +- gnuplot: produces images using gnuplot_ language +- googleanalytics: track web visitor statistics by using `Google Analytics`_ +- googlechart: embed charts by using `Google Chart`_ +- googlemaps: embed maps by using `Google Maps`_ +- httpdomain: a domain for documenting RESTful HTTP APIs +- hyphenator: client-side hyphenation of HTML using hyphenator_ +- imgur: embed Imgur images, albums, and metadata in documents +- inlinesyntaxhighlight_: inline syntax highlighting +- lassodomain: a domain for documenting Lasso_ source code +- libreoffice: an extension to include any drawing supported by LibreOffice + (e.g. odg, vsd, ...) +- lilypond: an extension inserting music scripts from Lilypond_ in PNG format +- makedomain_: a domain for `GNU Make`_ +- matlabdomain: document MATLAB_ code +- mockautodoc: mock imports +- mscgen: embed mscgen-formatted MSC (Message Sequence Chart)s +- napoleon: supports `Google style`_ and `NumPy style`_ docstrings +- nicovideo: embed videos from nicovideo +- nwdiag: embed network diagrams by using nwdiag_ +- omegat: support tools to collaborate with OmegaT_ (Sphinx 1.1 needed) +- osaka: convert standard Japanese doc to Osaka dialect (this is a joke + extension) +- paverutils: an alternate integration of Sphinx with Paver_ +- phpdomain: an extension for PHP support +- plantuml: embed UML diagram by using PlantUML_ +- py_directive: Execute python code in a ``py`` directive and return a math + node +- rawfiles: copy raw files, like a CNAME +- requirements: declare requirements wherever you need (e.g. in test + docstrings), mark statuses and collect them in a single list +- restbuilder: a builder for reST (reStructuredText) files +- rubydomain: an extension for Ruby support (Sphinx 1.0 needed) +- sadisplay: display SqlAlchemy model sadisplay_ +- sdedit: an extension inserting sequence diagram by using Quick Sequence + Diagram Editor (sdedit_) +- seqdiag: embed sequence diagrams by using seqdiag_ +- slide: embed presentation slides on slideshare_ and other sites +- swf_: embed flash files +- sword: an extension inserting Bible verses from Sword_ +- tikz: draw pictures with the `TikZ/PGF LaTeX package`_ +- traclinks: create TracLinks_ to a Trac_ instance from within Sphinx +- versioning: Sphinx extension that allows building versioned docs for + self-hosting +- whooshindex: whoosh indexer extension +- youtube: embed videos from YouTube_ +- zopeext: provide an ``autointerface`` directive for using `Zope interfaces`_ + + +See the :doc:`extension tutorials <../development/tutorials/index>` on getting +started with writing your own extensions. + + +.. _aafigure: https://launchpad.net/aafigure +.. _gnuplot: http://www.gnuplot.info/ +.. _paver: https://paver.readthedocs.io/en/latest/ +.. _Sword: https://www.crosswire.org/sword/ +.. _Lilypond: http://lilypond.org/ +.. _sdedit: http://sdedit.sourceforge.net/ +.. _Trac: https://trac.edgewall.org/ +.. _TracLinks: https://trac.edgewall.org/wiki/TracLinks +.. _OmegaT: https://omegat.org/ +.. _PlantUML: http://plantuml.com/ +.. _PyEnchant: https://pythonhosted.org/pyenchant/ +.. _sadisplay: https://bitbucket.org/estin/sadisplay/wiki/Home +.. _blockdiag: http://blockdiag.com/en/ +.. _seqdiag: http://blockdiag.com/en/ +.. _actdiag: http://blockdiag.com/en/ +.. _nwdiag: http://blockdiag.com/en/ +.. _Google Analytics: https://www.google.com/analytics/ +.. _Google Chart: https://developers.google.com/chart/ +.. _Google Maps: https://www.google.com/maps +.. _Google style: https://google.github.io/styleguide/pyguide.html +.. _NumPy style: https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt +.. _hyphenator: https://github.com/mnater/hyphenator +.. _exceltable: https://pythonhosted.org/sphinxcontrib-exceltable/ +.. _YouTube: https://www.youtube.com/ +.. _ClearQuest: https://www.ibm.com/us-en/marketplace/rational-clearquest +.. _Zope interfaces: https://zopeinterface.readthedocs.io/en/latest/README.html +.. _slideshare: https://www.slideshare.net/ +.. _TikZ/PGF LaTeX package: https://sourceforge.net/projects/pgf/ +.. _MATLAB: https://www.mathworks.com/products/matlab.html +.. _swf: https://bitbucket.org/klorenz/sphinxcontrib-swf +.. _findanything: https://bitbucket.org/klorenz/sphinxcontrib-findanything +.. _cmakedomain: https://bitbucket.org/klorenz/sphinxcontrib-cmakedomain +.. _GNU Make: https://www.gnu.org/software/make/ +.. _makedomain: https://bitbucket.org/klorenz/sphinxcontrib-makedomain +.. _inlinesyntaxhighlight: https://sphinxcontrib-inlinesyntaxhighlight.readthedocs.io/ +.. _CMake: https://cmake.org +.. _domaintools: https://bitbucket.org/klorenz/sphinxcontrib-domaintools +.. _restbuilder: https://pypi.org/project/sphinxcontrib-restbuilder/ +.. _Lasso: http://www.lassosoft.com/ +.. _beamer: https://pypi.org/project/sphinxcontrib-beamer/ diff --git a/sphinx/doc/development/tutorials/examples/README.rst b/sphinx/doc/development/tutorials/examples/README.rst new file mode 100644 index 0000000..2b9c01b --- /dev/null +++ b/sphinx/doc/development/tutorials/examples/README.rst @@ -0,0 +1,11 @@ +:orphan: + +Tutorial examples +================= + +This directory contains a number of examples used in the tutorials. These are +intended to be increasingly complex to demonstrate the various features of +Sphinx, but should aim to be as complicated as necessary but no more. +Individual sections are referenced by line numbers, meaning if you make changes +to the source files, you should update the references in the documentation +accordingly. diff --git a/sphinx/doc/development/tutorials/examples/helloworld.py b/sphinx/doc/development/tutorials/examples/helloworld.py new file mode 100644 index 0000000..d6d81fd --- /dev/null +++ b/sphinx/doc/development/tutorials/examples/helloworld.py @@ -0,0 +1,19 @@ +from docutils import nodes +from docutils.parsers.rst import Directive + + +class HelloWorld(Directive): + + def run(self): + paragraph_node = nodes.paragraph(text='Hello World!') + return [paragraph_node] + + +def setup(app): + app.add_directive("helloworld", HelloWorld) + + return { + 'version': '0.1', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/doc/development/tutorials/examples/recipe.py b/sphinx/doc/development/tutorials/examples/recipe.py new file mode 100644 index 0000000..2464302 --- /dev/null +++ b/sphinx/doc/development/tutorials/examples/recipe.py @@ -0,0 +1,161 @@ +from collections import defaultdict + +from docutils.parsers.rst import directives + +from sphinx import addnodes +from sphinx.directives import ObjectDescription +from sphinx.domains import Domain +from sphinx.domains import Index +from sphinx.roles import XRefRole +from sphinx.util.nodes import make_refnode + + +class RecipeDirective(ObjectDescription): + """A custom directive that describes a recipe.""" + + has_content = True + required_arguments = 1 + option_spec = { + 'contains': directives.unchanged_required, + } + + def handle_signature(self, sig, signode): + signode += addnodes.desc_name(text=sig) + return sig + + def add_target_and_index(self, name_cls, sig, signode): + signode['ids'].append('recipe' + '-' + sig) + if 'noindex' not in self.options: + ingredients = [ + x.strip() for x in self.options.get('contains').split(',')] + + recipes = self.env.get_domain('recipe') + recipes.add_recipe(sig, ingredients) + + +class IngredientIndex(Index): + """A custom index that creates an ingredient matrix.""" + + name = 'ingredient' + localname = 'Ingredient Index' + shortname = 'Ingredient' + + def generate(self, docnames=None): + content = defaultdict(list) + + recipes = {name: (dispname, typ, docname, anchor) + for name, dispname, typ, docname, anchor, _ + in self.domain.get_objects()} + recipe_ingredients = self.domain.data['recipe_ingredients'] + ingredient_recipes = defaultdict(list) + + # flip from recipe_ingredients to ingredient_recipes + for recipe_name, ingredients in recipe_ingredients.items(): + for ingredient in ingredients: + ingredient_recipes[ingredient].append(recipe_name) + + # convert the mapping of ingredient to recipes to produce the expected + # output, shown below, using the ingredient name as a key to group + # + # name, subtype, docname, anchor, extra, qualifier, description + for ingredient, recipe_names in ingredient_recipes.items(): + for recipe_name in recipe_names: + dispname, typ, docname, anchor = recipes[recipe_name] + content[ingredient].append( + (dispname, 0, docname, anchor, docname, '', typ)) + + # convert the dict to the sorted list of tuples expected + content = sorted(content.items()) + + return content, True + + +class RecipeIndex(Index): + """A custom index that creates an recipe matrix.""" + + name = 'recipe' + localname = 'Recipe Index' + shortname = 'Recipe' + + def generate(self, docnames=None): + content = defaultdict(list) + + # sort the list of recipes in alphabetical order + recipes = self.domain.get_objects() + recipes = sorted(recipes, key=lambda recipe: recipe[0]) + + # generate the expected output, shown below, from the above using the + # first letter of the recipe as a key to group thing + # + # name, subtype, docname, anchor, extra, qualifier, description + for name, dispname, typ, docname, anchor, _ in recipes: + content[dispname[0].lower()].append( + (dispname, 0, docname, anchor, docname, '', typ)) + + # convert the dict to the sorted list of tuples expected + content = sorted(content.items()) + + return content, True + + +class RecipeDomain(Domain): + + name = 'recipe' + label = 'Recipe Sample' + roles = { + 'ref': XRefRole() + } + directives = { + 'recipe': RecipeDirective, + } + indices = { + RecipeIndex, + IngredientIndex + } + initial_data = { + 'recipes': [], # object list + 'recipe_ingredients': {}, # name -> object + } + + def get_full_qualified_name(self, node): + return '{}.{}'.format('recipe', node.arguments[0]) + + def get_objects(self): + for obj in self.data['recipes']: + yield(obj) + + def resolve_xref(self, env, fromdocname, builder, typ, target, node, + contnode): + match = [(docname, anchor) + for name, sig, typ, docname, anchor, prio + in self.get_objects() if sig == target] + + if len(match) > 0: + todocname = match[0][0] + targ = match[0][1] + + return make_refnode(builder, fromdocname, todocname, targ, + contnode, targ) + else: + print('Awww, found nothing') + return None + + def add_recipe(self, signature, ingredients): + """Add a new recipe to the domain.""" + name = '{}.{}'.format('recipe', signature) + anchor = 'recipe-{}'.format(signature) + + self.data['recipe_ingredients'][name] = ingredients + # name, dispname, type, docname, anchor, priority + self.data['recipes'].append( + (name, signature, 'Recipe', self.env.docname, anchor, 0)) + + +def setup(app): + app.add_domain(RecipeDomain) + + return { + 'version': '0.1', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/doc/development/tutorials/examples/todo.py b/sphinx/doc/development/tutorials/examples/todo.py new file mode 100644 index 0000000..7eee534 --- /dev/null +++ b/sphinx/doc/development/tutorials/examples/todo.py @@ -0,0 +1,127 @@ +from docutils import nodes +from docutils.parsers.rst import Directive + +from sphinx.locale import _ +from sphinx.util.docutils import SphinxDirective + + +class todo(nodes.Admonition, nodes.Element): + pass + + +class todolist(nodes.General, nodes.Element): + pass + + +def visit_todo_node(self, node): + self.visit_admonition(node) + + +def depart_todo_node(self, node): + self.depart_admonition(node) + + +class TodolistDirective(Directive): + + def run(self): + return [todolist('')] + + +class TodoDirective(SphinxDirective): + + # this enables content in the directive + has_content = True + + def run(self): + targetid = 'todo-%d' % self.env.new_serialno('todo') + targetnode = nodes.target('', '', ids=[targetid]) + + todo_node = todo('\n'.join(self.content)) + todo_node += nodes.title(_('Todo'), _('Todo')) + self.state.nested_parse(self.content, self.content_offset, todo_node) + + if not hasattr(self.env, 'todo_all_todos'): + self.env.todo_all_todos = [] + + self.env.todo_all_todos.append({ + 'docname': self.env.docname, + 'lineno': self.lineno, + 'todo': todo_node.deepcopy(), + 'target': targetnode, + }) + + return [targetnode, todo_node] + + +def purge_todos(app, env, docname): + if not hasattr(env, 'todo_all_todos'): + return + + env.todo_all_todos = [todo for todo in env.todo_all_todos + if todo['docname'] != docname] + + +def process_todo_nodes(app, doctree, fromdocname): + if not app.config.todo_include_todos: + for node in doctree.traverse(todo): + node.parent.remove(node) + + # Replace all todolist nodes with a list of the collected todos. + # Augment each todo with a backlink to the original location. + env = app.builder.env + + if not hasattr(env, 'todo_all_todos'): + env.todo_all_todos = [] + + for node in doctree.traverse(todolist): + if not app.config.todo_include_todos: + node.replace_self([]) + continue + + content = [] + + for todo_info in env.todo_all_todos: + para = nodes.paragraph() + filename = env.doc2path(todo_info['docname'], base=None) + description = ( + _('(The original entry is located in %s, line %d and can be found ') % + (filename, todo_info['lineno'])) + para += nodes.Text(description, description) + + # Create a reference + newnode = nodes.reference('', '') + innernode = nodes.emphasis(_('here'), _('here')) + newnode['refdocname'] = todo_info['docname'] + newnode['refuri'] = app.builder.get_relative_uri( + fromdocname, todo_info['docname']) + newnode['refuri'] += '#' + todo_info['target']['refid'] + newnode.append(innernode) + para += newnode + para += nodes.Text('.)', '.)') + + # Insert into the todolist + content.append(todo_info['todo']) + content.append(para) + + node.replace_self(content) + + +def setup(app): + app.add_config_value('todo_include_todos', False, 'html') + + app.add_node(todolist) + app.add_node(todo, + html=(visit_todo_node, depart_todo_node), + latex=(visit_todo_node, depart_todo_node), + text=(visit_todo_node, depart_todo_node)) + + app.add_directive('todo', TodoDirective) + app.add_directive('todolist', TodolistDirective) + app.connect('doctree-resolved', process_todo_nodes) + app.connect('env-purge-doc', purge_todos) + + return { + 'version': '0.1', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/doc/development/tutorials/helloworld.rst b/sphinx/doc/development/tutorials/helloworld.rst new file mode 100644 index 0000000..6eae5d6 --- /dev/null +++ b/sphinx/doc/development/tutorials/helloworld.rst @@ -0,0 +1,189 @@ +Developing a "Hello world" extension +==================================== + +The objective of this tutorial is to create a very basic extension that adds a +new directive. This directive will output a paragraph containing "hello world". + +Only basic information is provided in this tutorial. For more information, refer +to the :doc:`other tutorials ` that go into more details. + +.. warning:: + + For this extension, you will need some basic understanding of docutils_ + and Python. + + +Overview +-------- + +We want the extension to add the following to Sphinx: + +* A ``helloworld`` directive, that will simply output the text "hello world". + + +Prerequisites +------------- + +We will not be distributing this plugin via `PyPI`_ and will instead include it +as part of an existing project. This means you will need to use an existing +project or create a new one using :program:`sphinx-quickstart`. + +We assume you are using separate source (:file:`source`) and build +(:file:`build`) folders. Your extension file could be in any folder of your +project. In our case, let's do the following: + +#. Create an :file:`_ext` folder in :file:`source` +#. Create a new Python file in the :file:`_ext` folder called + :file:`helloworld.py` + +Here is an example of the folder structure you might obtain: + +.. code-block:: text + + └── source +    ├── _ext + │   └── helloworld.py +    ├── _static +    ├── conf.py +    ├── somefolder +    ├── index.rst +    ├── somefile.rst +    └── someotherfile.rst + + +Writing the extension +--------------------- + +Open :file:`helloworld.py` and paste the following code in it: + +.. literalinclude:: examples/helloworld.py + :language: python + :linenos: + +Some essential things are happening in this example, and you will see them for +all directives. + +.. rubric:: The directive class + +Our new directive is declared in the ``HelloWorld`` class. + +.. literalinclude:: examples/helloworld.py + :language: python + :linenos: + :lines: 5-9 + +This class extends the docutils_' ``Directive`` class. All extensions that +create directives should extend this class. + +.. seealso:: + + `The docutils documentation on creating directives `_ + +This class contains a ``run`` method. This method is a requirement and it is +part of every directive. It contains the main logic of the directive and it +returns a list of docutils nodes to be processed by Sphinx. These nodes are +docutils' way of representing the content of a document. There are many types of +nodes available: text, paragraph, reference, table, etc. + +.. seealso:: + + `The docutils documentation on nodes `_ + +The ``nodes.paragraph`` class creates a new paragraph node. A paragraph +node typically contains some text that we can set during instantiation using +the ``text`` parameter. + +.. rubric:: The ``setup`` function + +.. currentmodule:: sphinx.application + +This function is a requirement. We use it to plug our new directive into +Sphinx. + +.. literalinclude:: examples/helloworld.py + :language: python + :linenos: + :lines: 12- + +The simplest thing you can do it call the :meth:`~Sphinx.add_directive` method, +which is what we've done here. For this particular call, the first argument is +the name of the directive itself as used in a reST file. In this case, we would +use ``helloworld``. For example: + +.. code-block:: rst + + Some intro text here... + + .. helloworld:: + + Some more text here... + +We also return the :ref:`extension metadata ` that indicates the +version of our extension, along with the fact that it is safe to use the +extension for both parallel reading and writing. + + +Using the extension +------------------- + +The extension has to be declared in your :file:`conf.py` file to make Sphinx +aware of it. There are two steps necessary here: + +#. Add the :file:`_ext` directory to the `Python path`_ using + ``sys.path.append``. This should be placed at the top of the file. + +#. Update or create the :confval:`extensions` list and add the extension file + name to the list + +For example: + +.. code-block:: python + + import os + import sys + + sys.path.append(os.path.abspath("./_ext")) + + extensions = ['helloworld'] + +.. tip:: + + We're not distributing this extension as a `Python package`_, we need to + modify the `Python path`_ so Sphinx can find our extension. This is why we + need the call to ``sys.path.append``. + +You can now use the extension in a file. For example: + +.. code-block:: rst + + Some intro text here... + + .. helloworld:: + + Some more text here... + +The sample above would generate: + +.. code-block:: text + + Some intro text here... + + Hello World! + + Some more text here... + + +Further reading +--------------- + +This is the very basic principle of an extension that creates a new directive. + +For a more advanced example, refer to :doc:`todo`. + + +.. _docutils: http://docutils.sourceforge.net/ +.. _docutils directives: http://docutils.sourceforge.net/docs/howto/rst-directives.html +.. _docutils nodes: http://docutils.sourceforge.net/docs/ref/doctree.html +.. _PyPI: https://pypi.org/ +.. _Python package: https://packaging.python.org/ +.. _Python path: https://docs.python.org/3/using/cmdline.html#envvar-PYTHONPATH diff --git a/sphinx/doc/development/tutorials/index.rst b/sphinx/doc/development/tutorials/index.rst new file mode 100644 index 0000000..a79e6a8 --- /dev/null +++ b/sphinx/doc/development/tutorials/index.rst @@ -0,0 +1,12 @@ +Extension tutorials +=================== + +Refer to the following tutorials to get started with extension development. + +.. toctree:: + :caption: Directive tutorials + :maxdepth: 1 + + helloworld + todo + recipe diff --git a/sphinx/doc/development/tutorials/recipe.rst b/sphinx/doc/development/tutorials/recipe.rst new file mode 100644 index 0000000..dcfe42c --- /dev/null +++ b/sphinx/doc/development/tutorials/recipe.rst @@ -0,0 +1,226 @@ +Developing a "recipe" extension +=============================== + +The objective of this tutorial is to illustrate roles, directives and domains. +Once complete, we will be able to use this extension to describe a recipe and +reference that recipe from elsewhere in our documentation. + +.. note:: + + This tutorial is based on a guide first published on `opensource.com`_ and + is provided here with the original author's permission. + + .. _opensource.com: https://opensource.com/article/18/11/building-custom-workflows-sphinx + + +Overview +-------- + +We want the extension to add the following to Sphinx: + +* A ``recipe`` :term:`directive`, containing some content describing the recipe + steps, along with a ``:contains:`` option highlighting the main ingredients + of the recipe. + +* A ``ref`` :term:`role`, which provides a cross-reference to the recipe + itself. + +* A ``recipe`` :term:`domain`, which allows us to tie together the above role + and domain, along with things like indices. + +For that, we will need to add the following elements to Sphinx: + +* A new directive called ``recipe`` + +* New indexes to allow us to reference ingredient and recipes + +* A new domain called ``recipe``, which will contain the ``recipe`` directive + and ``ref`` role + + +Prerequisites +------------- + +We need the same setup as in :doc:`the previous extensions `. This time, +we will be putting out extension in a file called :file:`recipe.py`. + +Here is an example of the folder structure you might obtain: + +.. code-block:: text + + └── source +    ├── _ext + │   └── recipe.py +    ├── conf.py +    └── index.rst + + +Writing the extension +--------------------- + +Open :file:`recipe.py` and paste the following code in it, all of which we will +explain in detail shortly: + +.. literalinclude:: examples/recipe.py + :language: python + :linenos: + +Let's look at each piece of this extension step-by-step to explain what's going +on. + +.. rubric:: The directive class + +The first thing to examine is the ``RecipeDirective`` directive: + +.. literalinclude:: examples/recipe.py + :language: python + :linenos: + :pyobject: RecipeDirective + +Unlike :doc:`helloworld` and :doc:`todo`, this directive doesn't derive from +:class:`docutils.parsers.rst.Directive` and doesn't define a ``run`` method. +Instead, it derives from :class:`sphinx.directives.ObjectDescription` and +defines ``handle_signature`` and ``add_target_and_index`` methods. This is +because ``ObjectDescription`` is a special-purpose directive that's intended +for describing things like classes, functions, or, in our case, recipes. More +specifically, ``handle_signature`` implements parsing the signature of the +directive and passes on the object's name and type to its superclass, while +``add_taget_and_index`` adds a target (to link to) and an entry to the index +for this node. + +We also see that this directive defines ``has_content``, ``required_arguments`` +and ``option_spec``. Unlike the ``TodoDirective`` directive added in the +:doc:`previous tutorial `, this directive takes a single argument, the +recipe name, and an option, ``contains``, in addition to the nested +reStructuredText in the body. + +.. rubric:: The index classes + +.. currentmodule:: sphinx.domains + +.. todo:: Add brief overview of indices + +.. literalinclude:: examples/recipe.py + :language: python + :linenos: + :pyobject: IngredientIndex + +.. literalinclude:: examples/recipe.py + :language: python + :linenos: + :pyobject: RecipeIndex + +Both ``IngredientIndex`` and ``RecipeIndex`` are derived from :class:`Index`. +They implement custom logic to generate a tuple of values that define the +index. Note that ``RecipeIndex`` is a simple index that has only one entry. +Extending it to cover more object types is not yet part of the code. + +Both indices use the method :meth:`Index.generate` to do their work. This +method combines the information from our domain, sorts it, and returns it in a +list structure that will be accepted by Sphinx. This might look complicated but +all it really is is a list of tuples like ``('tomato', 'TomatoSoup', 'test', +'rec-TomatoSoup',...)``. Refer to the :doc:`domain API guide +` for more information on this API. + +These index pages can be referred by combination of domain name and its +``name`` using :rst:role:`ref` role. For example, ``RecipeIndex`` can be +referred by ``:ref:`recipe-recipe```. + +.. rubric:: The domain + +A Sphinx domain is a specialized container that ties together roles, +directives, and indices, among other things. Let's look at the domain we're +creating here. + +.. literalinclude:: examples/recipe.py + :language: python + :linenos: + :pyobject: RecipeDomain + +There are some interesting things to note about this ``recipe`` domain and domains +in general. Firstly, we actually register our directives, roles and indices +here, via the ``directives``, ``roles`` and ``indices`` attributes, rather than +via calls later on in ``setup``. We can also note that we aren't actually +defining a custom role and are instead reusing the +:class:`sphinx.roles.XRefRole` role and defining the +:class:`sphinx.domains.Domain.resolve_xref` method. This method takes two +arguments, ``typ`` and ``target``, which refer to the cross-reference type and +its target name. We'll use ``target`` to resolve our destination from our +domain's ``recipes`` because we currently have only one type of node. + +Moving on, we can see that we've defined ``initial_data``. The values defined in +``initial_data`` will be copied to ``env.domaindata[domain_name]`` as the +initial data of the domain, and domain instances can access it via +``self.data``. We see that we have defined two items in ``initial_data``: +``recipes`` and ``recipe2ingredient``. These contain a list of all objects +defined (i.e. all recipes) and a hash that maps a canonical ingredient name to +the list of objects. The way we name objects is common across our extension and +is defined in the ``get_full_qualified_name`` method. For each object created, +the canonical name is ``recipe.``, where ```` is the +name the documentation writer gives the object (a recipe). This enables the +extension to use different object types that share the same name. Having a +canonical name and central place for our objects is a huge advantage. Both our +indices and our cross-referencing code use this feature. + +.. rubric:: The ``setup`` function + +.. currentmodule:: sphinx.application + +:doc:`As always `, the ``setup`` function is a requirement and is used to +hook the various parts of our extension into Sphinx. Let's look at the +``setup`` function for this extension. + +.. literalinclude:: examples/recipe.py + :language: python + :linenos: + :pyobject: setup + +This looks a little different to what we're used to seeing. There are no calls +to :meth:`~Sphinx.add_directive` or even :meth:`~Sphinx.add_role`. Instead, we +have a single call to :meth:`~Sphinx.add_domain` followed by some +initialization of the :ref:`standard domain `. This is because we +had already registered our directives, roles and indexes as part of the +directive itself. + + +Using the extension +------------------- + +You can now use the extension throughout your project. For example: + +.. code-block:: rst + :caption: index.rst + + Joe's Recipes + ============= + + Below are a collection of my favourite recipes. I highly recommend the + :recipe:ref:`TomatoSoup` recipe in particular! + + .. toctree:: + + tomato-soup + +.. code-block:: rst + :caption: tomato-soup.rst + + The recipe contains `tomato` and `cilantro`. + + .. recipe:recipe:: TomatoSoup + :contains: tomato cilantro salt pepper + + This recipe is a tasty tomato soup, combine all ingredients + and cook. + +The important things to note are the use of the ``:recipe:ref:`` role to +cross-reference the recipe actually defined elsewhere (using the +``:recipe:recipe:`` directive. + + +Further reading +--------------- + +For more information, refer to the `docutils`_ documentation and +:doc:`/extdev/index`. + +.. _docutils: http://docutils.sourceforge.net/docs/ diff --git a/sphinx/doc/development/tutorials/todo.rst b/sphinx/doc/development/tutorials/todo.rst new file mode 100644 index 0000000..e27528b --- /dev/null +++ b/sphinx/doc/development/tutorials/todo.rst @@ -0,0 +1,355 @@ +Developing a "TODO" extension +============================= + +The objective of this tutorial is to create a more comprehensive extension than +that created in :doc:`helloworld`. Whereas that guide just covered writing a +custom :term:`directive`, this guide adds multiple directives, along with custom +nodes, additional config values and custom event handlers. To this end, we will +cover a ``todo`` extension that adds capabilities to include todo entries in the +documentation, and to collect these in a central place. This is similar the +``sphinxext.todo`` extension distributed with Sphinx. + + +Overview +-------- + +.. note:: + To understand the design of this extension, refer to + :ref:`important-objects` and :ref:`build-phases`. + +We want the extension to add the following to Sphinx: + +* A ``todo`` directive, containing some content that is marked with "TODO" and + only shown in the output if a new config value is set. Todo entries should not + be in the output by default. + +* A ``todolist`` directive that creates a list of all todo entries throughout + the documentation. + +For that, we will need to add the following elements to Sphinx: + +* New directives, called ``todo`` and ``todolist``. + +* New document tree nodes to represent these directives, conventionally also + called ``todo`` and ``todolist``. We wouldn't need new nodes if the new + directives only produced some content representable by existing nodes. + +* A new config value ``todo_include_todos`` (config value names should start + with the extension name, in order to stay unique) that controls whether todo + entries make it into the output. + +* New event handlers: one for the :event:`doctree-resolved` event, to replace + the todo and todolist nodes, and one for :event:`env-purge-doc` (the reason + for that will be covered later). + + +Prerequisites +------------- + +As with :doc:`helloworld`, we will not be distributing this plugin via PyPI so +once again we need a Sphinx project to call this from. You can use an existing +project or create a new one using :program:`sphinx-quickstart`. + +We assume you are using separate source (:file:`source`) and build +(:file:`build`) folders. Your extension file could be in any folder of your +project. In our case, let's do the following: + +#. Create an :file:`_ext` folder in :file:`source` +#. Create a new Python file in the :file:`_ext` folder called :file:`todo.py` + +Here is an example of the folder structure you might obtain: + +.. code-block:: text + + └── source +    ├── _ext + │   └── todo.py +    ├── _static +    ├── conf.py +    ├── somefolder +    ├── index.rst +    ├── somefile.rst +    └── someotherfile.rst + + +Writing the extension +--------------------- + +Open :file:`todo.py` and paste the following code in it, all of which we will +explain in detail shortly: + +.. literalinclude:: examples/todo.py + :language: python + :linenos: + +This is far more extensive extension than the one detailed in :doc:`helloworld`, +however, we will will look at each piece step-by-step to explain what's +happening. + +.. rubric:: The node classes + +Let's start with the node classes: + +.. literalinclude:: examples/todo.py + :language: python + :linenos: + :lines: 8-21 + +Node classes usually don't have to do anything except inherit from the standard +docutils classes defined in :mod:`docutils.nodes`. ``todo`` inherits from +``Admonition`` because it should be handled like a note or warning, ``todolist`` +is just a "general" node. + +.. note:: + + Many extensions will not have to create their own node classes and work fine + with the nodes already provided by `docutils + `__ and :ref:`Sphinx + `. + +.. attention:: + + It is important to know that while you can extend Sphinx without + leaving your ``conf.py``, if you declare an inherited node right + there, you'll hit an unobvious :py:class:`PickleError`. So if + something goes wrong, please make sure that you put inherited nodes + into a separate Python module. + + For more details, see: + + - https://github.com/sphinx-doc/sphinx/issues/6751 + - https://github.com/sphinx-doc/sphinx/issues/1493 + - https://github.com/sphinx-doc/sphinx/issues/1424 + +.. rubric:: The directive classes + +A directive class is a class deriving usually from +:class:`docutils.parsers.rst.Directive`. The directive interface is also +covered in detail in the `docutils documentation`_; the important thing is that +the class should have attributes that configure the allowed markup, and a +``run`` method that returns a list of nodes. + +Looking first at the ``TodolistDirective`` directive: + +.. literalinclude:: examples/todo.py + :language: python + :linenos: + :lines: 24-27 + +It's very simple, creating and returning an instance of our ``todolist`` node +class. The ``TodolistDirective`` directive itself has neither content nor +arguments that need to be handled. That brings us to the ``TodoDirective`` +directive: + +.. literalinclude:: examples/todo.py + :language: python + :linenos: + :lines: 30-53 + +Several important things are covered here. First, as you can see, we're now +subclassing the :class:`~sphinx.util.docutils.SphinxDirective` helper class +instead of the usual :class:`~docutils.parsers.rst.Directive` class. This +gives us access to the :ref:`build environment instance ` +using the ``self.env`` property. Without this, we'd have to use the rather +convoluted ``self.state.document.settings.env``. Then, to act as a link target +(from ``TodolistDirective``), the ``TodoDirective`` directive needs to return a +target node in addition to the ``todo`` node. The target ID (in HTML, this will +be the anchor name) is generated by using ``env.new_serialno`` which returns a +new unique integer on each call and therefore leads to unique target names. The +target node is instantiated without any text (the first two arguments). + +On creating admonition node, the content body of the directive are parsed using +``self.state.nested_parse``. The first argument gives the content body, and +the second one gives content offset. The third argument gives the parent node +of parsed result, in our case the ``todo`` node. Following this, the ``todo`` +node is added to the environment. This is needed to be able to create a list of +all todo entries throughout the documentation, in the place where the author +puts a ``todolist`` directive. For this case, the environment attribute +``todo_all_todos`` is used (again, the name should be unique, so it is prefixed +by the extension name). It does not exist when a new environment is created, so +the directive must check and create it if necessary. Various information about +the todo entry's location are stored along with a copy of the node. + +In the last line, the nodes that should be put into the doctree are returned: +the target node and the admonition node. + +The node structure that the directive returns looks like this:: + + +--------------------+ + | target node | + +--------------------+ + +--------------------+ + | todo node | + +--------------------+ + \__+--------------------+ + | admonition title | + +--------------------+ + | paragraph | + +--------------------+ + | ... | + +--------------------+ + +.. rubric:: The event handlers + +Event handlers are one of Sphinx's most powerful features, providing a way to +do hook into any part of the documentation process. There are many events +provided by Sphinx itself, as detailed in :ref:`the API guide `, and +we're going to use a subset of them here. + +Let's look at the event handlers used in the above example. First, the one for +the :event:`env-purge-doc` event: + +.. literalinclude:: examples/todo.py + :language: python + :linenos: + :lines: 56-61 + +Since we store information from source files in the environment, which is +persistent, it may become out of date when the source file changes. Therefore, +before each source file is read, the environment's records of it are cleared, +and the :event:`env-purge-doc` event gives extensions a chance to do the same. +Here we clear out all todos whose docname matches the given one from the +``todo_all_todos`` list. If there are todos left in the document, they will be +added again during parsing. + +The other handler belongs to the :event:`doctree-resolved` event: + +.. literalinclude:: examples/todo.py + :language: python + :linenos: + :lines: 64-103 + +The :event:`doctree-resolved` event is emitted at the end of :ref:`phase 3 +(resolving) ` and allows custom resolving to be done. The handler +we have written for this event is a bit more involved. If the +``todo_include_todos`` config value (which we'll describe shortly) is false, +all ``todo`` and ``todolist`` nodes are removed from the documents. If not, +``todo`` nodes just stay where and how they are. ``todolist`` nodes are +replaced by a list of todo entries, complete with backlinks to the location +where they come from. The list items are composed of the nodes from the +``todo`` entry and docutils nodes created on the fly: a paragraph for each +entry, containing text that gives the location, and a link (reference node +containing an italic node) with the backreference. The reference URI is built +by :meth:`sphinx.builders.Builder.get_relative_uri`` which creates a suitable +URI depending on the used builder, and appending the todo node's (the target's) +ID as the anchor name. + +.. rubric:: The ``setup`` function + +.. currentmodule:: sphinx.application + +As noted :doc:`previously `, the ``setup`` function is a requirement +and is used to plug directives into Sphinx. However, we also use it to hook up +the other parts of our extension. Let's look at our ``setup`` function: + +.. literalinclude:: examples/todo.py + :language: python + :linenos: + :lines: 106- + +The calls in this function refer to the classes and functions we added earlier. +What the individual calls do is the following: + +* :meth:`~Sphinx.add_config_value` lets Sphinx know that it should recognize the + new *config value* ``todo_include_todos``, whose default value should be + ``False`` (this also tells Sphinx that it is a boolean value). + + If the third argument was ``'html'``, HTML documents would be full rebuild if the + config value changed its value. This is needed for config values that + influence reading (build :ref:`phase 1 (reading) `). + +* :meth:`~Sphinx.add_node` adds a new *node class* to the build system. It also + can specify visitor functions for each supported output format. These visitor + functions are needed when the new nodes stay until :ref:`phase 4 (writing) + `. Since the ``todolist`` node is always replaced in + :ref:`phase 3 (resolving) `, it doesn't need any. + +* :meth:`~Sphinx.add_directive` adds a new *directive*, given by name and class. + +* Finally, :meth:`~Sphinx.connect` adds an *event handler* to the event whose + name is given by the first argument. The event handler function is called + with several arguments which are documented with the event. + +With this, our extension is complete. + + +Using the extension +------------------- + +As before, we need to enable the extension by declaring it in our +:file:`conf.py` file. There are two steps necessary here: + +#. Add the :file:`_ext` directory to the `Python path`_ using + ``sys.path.append``. This should be placed at the top of the file. + +#. Update or create the :confval:`extensions` list and add the extension file + name to the list + +In addition, we may wish to set the ``todo_include_todos`` config value. As +noted above, this defaults to ``False`` but we can set it explicitly. + +For example: + +.. code-block:: python + + import os + import sys + + sys.path.append(os.path.abspath("./_ext")) + + extensions = ['todo'] + + todo_include_todos = False + +You can now use the extension throughout your project. For example: + +.. code-block:: rst + :caption: index.rst + + Hello, world + ============ + + .. toctree:: + somefile.rst + someotherfile.rst + + Hello world. Below is the list of TODOs. + + .. todolist:: + +.. code-block:: rst + :caption: somefile.rst + + foo + === + + Some intro text here... + + .. todo:: Fix this + +.. code-block:: rst + :caption: someotherfile.rst + + bar + === + + Some more text here... + + .. todo:: Fix that + +Because we have configured ``todo_include_todos`` to ``False``, we won't +actually see anything rendered for the ``todo`` and ``todolist`` directives. +However, if we toggle this to true, we will see the output described +previously. + + +Further reading +--------------- + +For more information, refer to the `docutils`_ documentation and +:doc:`/extdev/index`. + + +.. _docutils: http://docutils.sourceforge.net/docs/ +.. _Python path: https://docs.python.org/3/using/cmdline.html#envvar-PYTHONPATH +.. _docutils documentation: http://docutils.sourceforge.net/docs/ref/rst/directives.html diff --git a/sphinx/doc/devguide.rst b/sphinx/doc/devguide.rst new file mode 100644 index 0000000..e582053 --- /dev/null +++ b/sphinx/doc/devguide.rst @@ -0,0 +1 @@ +.. include:: ../CONTRIBUTING.rst diff --git a/sphinx/doc/examples.rst b/sphinx/doc/examples.rst new file mode 100644 index 0000000..c28364a --- /dev/null +++ b/sphinx/doc/examples.rst @@ -0,0 +1,5 @@ +:tocdepth: 2 + +.. _examples: + +.. include:: ../EXAMPLES diff --git a/sphinx/doc/extdev/appapi.rst b/sphinx/doc/extdev/appapi.rst new file mode 100644 index 0000000..9615586 --- /dev/null +++ b/sphinx/doc/extdev/appapi.rst @@ -0,0 +1,385 @@ +.. highlight:: rest + +Application API +=============== + +.. module:: sphinx.application + :synopsis: Application class and extensibility interface. + + +Each Sphinx extension is a Python module with at least a :func:`setup` +function. This function is called at initialization time with one argument, +the application object representing the Sphinx process. + +.. class:: Sphinx + + This application object has the public API described in the following. + +Extension setup +--------------- + +These methods are usually called in an extension's ``setup()`` function. + +Examples of using the Sphinx extension API can be seen in the :mod:`sphinx.ext` +package. + +.. currentmodule:: sphinx.application + +.. automethod:: Sphinx.setup_extension(name) + +.. automethod:: Sphinx.require_sphinx(version) + +.. automethod:: Sphinx.connect(event, callback) + +.. automethod:: Sphinx.disconnect(listener_id) + +.. automethod:: Sphinx.add_builder(builder) + +.. automethod:: Sphinx.add_config_value(name, default, rebuild) + +.. automethod:: Sphinx.add_event(name) + +.. automethod:: Sphinx.set_translator(name, translator_class) + +.. automethod:: Sphinx.add_node(node, \*\*kwds) + +.. automethod:: Sphinx.add_enumerable_node(node, figtype, title_getter=None, \*\*kwds) + +.. automethod:: Sphinx.add_directive(name, directiveclass) + +.. automethod:: Sphinx.add_role(name, role) + +.. automethod:: Sphinx.add_generic_role(name, nodeclass) + +.. automethod:: Sphinx.add_domain(domain) + +.. automethod:: Sphinx.add_directive_to_domain(domain, name, directiveclass) + +.. automethod:: Sphinx.add_role_to_domain(domain, name, role) + +.. automethod:: Sphinx.add_index_to_domain(domain, index) + +.. automethod:: Sphinx.add_object_type(directivename, rolename, indextemplate='', parse_node=None, ref_nodeclass=None, objname='', doc_field_types=[]) + +.. automethod:: Sphinx.add_crossref_type(directivename, rolename, indextemplate='', ref_nodeclass=None, objname='') + +.. automethod:: Sphinx.add_transform(transform) + +.. automethod:: Sphinx.add_post_transform(transform) + +.. automethod:: Sphinx.add_js_file(filename, **kwargs) + +.. automethod:: Sphinx.add_css_file(filename, **kwargs) + +.. automethod:: Sphinx.add_latex_package(packagename, options=None) + +.. automethod:: Sphinx.add_lexer(alias, lexer) + +.. automethod:: Sphinx.add_autodocumenter(cls) + +.. automethod:: Sphinx.add_autodoc_attrgetter(type, getter) + +.. automethod:: Sphinx.add_search_language(cls) + +.. automethod:: Sphinx.add_source_suffix(suffix, filetype) + +.. automethod:: Sphinx.add_source_parser(parser) + +.. automethod:: Sphinx.add_env_collector(collector) + +.. automethod:: Sphinx.add_html_theme(name, theme_path) + +.. automethod:: Sphinx.add_html_math_renderer(name, inline_renderers, block_renderers) + +.. automethod:: Sphinx.add_message_catalog(catalog, locale_dir) + +.. automethod:: Sphinx.is_parallel_allowed(typ) + +.. exception:: ExtensionError + + All these methods raise this exception if something went wrong with the + extension API. + + +Emitting events +--------------- + +.. class:: Sphinx + :noindex: + + .. automethod:: emit(event, \*arguments) + + .. automethod:: emit_firstresult(event, \*arguments) + + +Sphinx runtime information +-------------------------- + +The application object also provides runtime information as attributes. + +.. attribute:: Sphinx.project + + Target project. See :class:`.Project`. + +.. attribute:: Sphinx.srcdir + + Source directory. + +.. attribute:: Sphinx.confdir + + Directory containing ``conf.py``. + +.. attribute:: Sphinx.doctreedir + + Directory for storing pickled doctrees. + +.. attribute:: Sphinx.outdir + + Directory for storing built document. + + +.. _events: + +Sphinx core events +------------------ + +These events are known to the core. The arguments shown are given to the +registered event handlers. Use :meth:`.Sphinx.connect` in an extension's +``setup`` function (note that ``conf.py`` can also have a ``setup`` function) to +connect handlers to the events. Example: + +.. code-block:: python + + def source_read_handler(app, docname, source): + print('do something here...') + + def setup(app): + app.connect('source-read', source_read_handler) + + +.. event:: builder-inited (app) + + Emitted when the builder object has been created. It is available as + ``app.builder``. + +.. event:: config-inited (app, config) + + Emitted when the config object has been initialized. + + .. versionadded:: 1.8 + +.. event:: env-get-outdated (app, env, added, changed, removed) + + Emitted when the environment determines which source files have changed and + should be re-read. *added*, *changed* and *removed* are sets of docnames + that the environment has determined. You can return a list of docnames to + re-read in addition to these. + + .. versionadded:: 1.1 + +.. event:: env-purge-doc (app, env, docname) + + Emitted when all traces of a source file should be cleaned from the + environment, that is, if the source file is removed or before it is freshly + read. This is for extensions that keep their own caches in attributes of the + environment. + + For example, there is a cache of all modules on the environment. When a + source file has been changed, the cache's entries for the file are cleared, + since the module declarations could have been removed from the file. + + .. versionadded:: 0.5 + +.. event:: env-before-read-docs (app, env, docnames) + + Emitted after the environment has determined the list of all added and + changed files and just before it reads them. It allows extension authors to + reorder the list of docnames (*inplace*) before processing, or add more + docnames that Sphinx did not consider changed (but never add any docnames + that are not in ``env.found_docs``). + + You can also remove document names; do this with caution since it will make + Sphinx treat changed files as unchanged. + + .. versionadded:: 1.3 + +.. event:: source-read (app, docname, source) + + Emitted when a source file has been read. The *source* argument is a list + whose single element is the contents of the source file. You can process the + contents and replace this item to implement source-level transformations. + + For example, if you want to use ``$`` signs to delimit inline math, like in + LaTeX, you can use a regular expression to replace ``$...$`` by + ``:math:`...```. + + .. versionadded:: 0.5 + +.. event:: object-description-transform (app, domain, objtype, contentnode) + + Emitted when an object description directive has run. The *domain* and + *objtype* arguments are strings indicating object description of the object. + And *contentnode* is a content for the object. It can be modified in-place. + + .. versionadded:: 2.4 + +.. event:: doctree-read (app, doctree) + + Emitted when a doctree has been parsed and read by the environment, and is + about to be pickled. The *doctree* can be modified in-place. + +.. event:: missing-reference (app, env, node, contnode) + + Emitted when a cross-reference to a Python module or object cannot be + resolved. If the event handler can resolve the reference, it should return a + new docutils node to be inserted in the document tree in place of the node + *node*. Usually this node is a :class:`reference` node containing *contnode* + as a child. + + :param env: The build environment (``app.builder.env``). + :param node: The :class:`pending_xref` node to be resolved. Its attributes + ``reftype``, ``reftarget``, ``modname`` and ``classname`` attributes + determine the type and target of the reference. + :param contnode: The node that carries the text and formatting inside the + future reference and should be a child of the returned reference node. + + .. versionadded:: 0.5 + +.. event:: doctree-resolved (app, doctree, docname) + + Emitted when a doctree has been "resolved" by the environment, that is, all + references have been resolved and TOCs have been inserted. The *doctree* can + be modified in place. + + Here is the place to replace custom nodes that don't have visitor methods in + the writers, so that they don't cause errors when the writers encounter them. + +.. event:: env-merge-info (app, env, docnames, other) + + This event is only emitted when parallel reading of documents is enabled. It + is emitted once for every subprocess that has read some documents. + + You must handle this event in an extension that stores data in the + environment in a custom location. Otherwise the environment in the main + process will not be aware of the information stored in the subprocess. + + *other* is the environment object from the subprocess, *env* is the + environment from the main process. *docnames* is a set of document names + that have been read in the subprocess. + + .. versionadded:: 1.3 + +.. event:: env-updated (app, env) + + Emitted when the :meth:`update` method of the build environment has + completed, that is, the environment and all doctrees are now up-to-date. + + You can return an iterable of docnames from the handler. These documents + will then be considered updated, and will be (re-)written during the writing + phase. + + .. versionadded:: 0.5 + + .. versionchanged:: 1.3 + The handlers' return value is now used. + +.. event:: env-check-consistency (app, env) + + Emitted when Consistency checks phase. You can check consistency of + metadata for whole of documents. + + .. versionadded:: 1.6 + + As a **experimental** event + +.. event:: html-collect-pages (app) + + Emitted when the HTML builder is starting to write non-document pages. You + can add pages to write by returning an iterable from this event consisting of + ``(pagename, context, templatename)``. + + .. versionadded:: 1.0 + +.. event:: html-page-context (app, pagename, templatename, context, doctree) + + Emitted when the HTML builder has created a context dictionary to render a + template with -- this can be used to add custom elements to the context. + + The *pagename* argument is the canonical name of the page being rendered, + that is, without ``.html`` suffix and using slashes as path separators. The + *templatename* is the name of the template to render, this will be + ``'page.html'`` for all pages from reST documents. + + The *context* argument is a dictionary of values that are given to the + template engine to render the page and can be modified to include custom + values. Keys must be strings. + + The *doctree* argument will be a doctree when the page is created from a reST + documents; it will be ``None`` when the page is created from an HTML template + alone. + + You can return a string from the handler, it will then replace + ``'page.html'`` as the HTML template for this page. + + .. versionadded:: 0.4 + + .. versionchanged:: 1.3 + The return value can now specify a template name. + +.. event:: build-finished (app, exception) + + Emitted when a build has finished, before Sphinx exits, usually used for + cleanup. This event is emitted even when the build process raised an + exception, given as the *exception* argument. The exception is reraised in + the application after the event handlers have run. If the build process + raised no exception, *exception* will be ``None``. This allows to customize + cleanup actions depending on the exception status. + + .. versionadded:: 0.5 + + +Checking the Sphinx version +--------------------------- + +.. currentmodule:: sphinx + +Use this to adapt your extension to API changes in Sphinx. + +.. autodata:: version_info + + +The Config object +----------------- + +.. currentmodule:: sphinx.config + +.. autoclass:: Config + + +.. _template-bridge: + +The template bridge +------------------- + +.. currentmodule:: sphinx.application + +.. autoclass:: TemplateBridge + :members: + + +.. _exceptions: + +Exceptions +---------- + +.. module:: sphinx.errors + +.. autoexception:: SphinxError + +.. autoexception:: ConfigError + +.. autoexception:: ExtensionError + +.. autoexception:: ThemeError + +.. autoexception:: VersionRequirementError diff --git a/sphinx/doc/extdev/builderapi.rst b/sphinx/doc/extdev/builderapi.rst new file mode 100644 index 0000000..0ab7a30 --- /dev/null +++ b/sphinx/doc/extdev/builderapi.rst @@ -0,0 +1,45 @@ +.. _writing-builders: + +Builder API +=========== + +.. todo:: Expand this. + +.. currentmodule:: sphinx.builders + +.. class:: Builder + + This is the base class for all builders. + + These attributes should be set on builder classes: + + .. autoattribute:: name + .. autoattribute:: format + .. autoattribute:: epilog + .. autoattribute:: supported_image_types + .. autoattribute:: supported_remote_images + .. autoattribute:: supported_data_uri_images + .. autoattribute:: default_translator_class + + These methods are predefined and will be called from the application: + + .. automethod:: get_relative_uri + .. automethod:: build_all + .. automethod:: build_specific + .. automethod:: build_update + .. automethod:: build + + These methods can be overridden in concrete builder classes: + + .. automethod:: init + .. automethod:: get_outdated_docs + .. automethod:: get_target_uri + .. automethod:: prepare_writing + .. automethod:: write_doc + .. automethod:: finish + + **Attributes** + + .. attribute:: events + + An :class:`.EventManager` object. diff --git a/sphinx/doc/extdev/collectorapi.rst b/sphinx/doc/extdev/collectorapi.rst new file mode 100644 index 0000000..cb4c30b --- /dev/null +++ b/sphinx/doc/extdev/collectorapi.rst @@ -0,0 +1,9 @@ +.. _collector-api: + +Environment Collector API +------------------------- + +.. module:: sphinx.environment.collectors + +.. autoclass:: EnvironmentCollector + :members: diff --git a/sphinx/doc/extdev/deprecated.rst b/sphinx/doc/extdev/deprecated.rst new file mode 100644 index 0000000..b0468a3 --- /dev/null +++ b/sphinx/doc/extdev/deprecated.rst @@ -0,0 +1,1382 @@ +.. _dev-deprecated-apis: + +Deprecated APIs +=============== + +On developing Sphinx, we are always careful to the compatibility of our APIs. +But, sometimes, the change of interface are needed for some reasons. In such +cases, we've marked them as deprecated. And they are kept during the two +major versions (for more details, please see :ref:`deprecation-policy`). + +The following is a list of deprecated interfaces. + +.. tabularcolumns:: |>{\raggedright}\Y{.4}|>{\centering}\Y{.1}|>{\centering}\Y{.12}|>{\raggedright\arraybackslash}\Y{.38}| + +.. |LaTeXHyphenate| raw:: latex + + \hspace{0pt} + +.. list-table:: deprecated APIs + :header-rows: 1 + :class: deprecated + :widths: 40, 10, 10, 40 + + * - Target + - |LaTeXHyphenate|\ Deprecated + - (will be) Removed + - Alternatives + + * - The ``module`` argument of + ``sphinx.ext.autosummary.generate.find_autosummary_in_docstring()`` + - 3.0 + - 5.0 + - N/A + + * - ``desc_signature['first']`` + - + - 3.0 + - N/A + + * - ``sphinx.directives.DescDirective`` + - 3.0 + - 5.0 + - ``sphinx.directives.ObjectDescription`` + + * - ``sphinx.domains.std.StandardDomain.add_object()`` + - 3.0 + - 5.0 + - ``sphinx.domains.std.StandardDomain.note_object()`` + + * - ``sphinx.domains.python.PyDecoratorMixin`` + - 3.0 + - 5.0 + - N/A + + * - ``sphinx.ext.autodoc.get_documenters()`` + - 3.0 + - 5.0 + - ``sphinx.registry.documenters`` + + * - ``sphinx.ext.autosummary.process_autosummary_toc()`` + - 3.0 + - 5.0 + - N/A + + * - ``sphinx.parsers.Parser.app`` + - 3.0 + - 5.0 + - N/A + + * - ``sphinx.testing.path.Path.text()`` + - 3.0 + - 5.0 + - ``sphinx.testing.path.Path.read_text()`` + + * - ``sphinx.testing.path.Path.bytes()`` + - 3.0 + - 5.0 + - ``sphinx.testing.path.Path.read_bytes()`` + + * - ``sphinx.util.inspect.getargspec()`` + - 3.0 + - 5.0 + - ``inspect.getargspec()`` + + * - ``sphinx.writers.latex.LaTeXWriter.format_docclass()`` + - 3.0 + - 5.0 + - LaTeX Themes + + * - ``decode`` argument of ``sphinx.pycode.ModuleAnalyzer()`` + - 2.4 + - 4.0 + - N/A + + * - ``sphinx.directives.other.Index`` + - 2.4 + - 4.0 + - ``sphinx.domains.index.IndexDirective`` + + * - ``sphinx.environment.temp_data['gloss_entries']`` + - 2.4 + - 4.0 + - ``documents.nameids`` + + * - ``sphinx.environment.BuildEnvironment.indexentries`` + - 2.4 + - 4.0 + - ``sphinx.domains.index.IndexDomain`` + + * - ``sphinx.environment.collectors.indexentries.IndexEntriesCollector`` + - 2.4 + - 4.0 + - ``sphinx.domains.index.IndexDomain`` + + * - ``sphinx.io.FiletypeNotFoundError`` + - 2.4 + - 4.0 + - ``sphinx.errors.FiletypeNotFoundError`` + + * - ``sphinx.ext.apidoc.INITPY`` + - 2.4 + - 4.0 + - N/A + + * - ``sphinx.ext.apidoc.shall_skip()`` + - 2.4 + - 4.0 + - ``sphinx.ext.apidoc.is_skipped_package`` + + * - ``sphinx.io.get_filetype()`` + - 2.4 + - 4.0 + - ``sphinx.util.get_filetype()`` + + * - ``sphinx.pycode.ModuleAnalyzer.encoding`` + - 2.4 + - 4.0 + - N/A + + * - ``sphinx.roles.Index`` + - 2.4 + - 4.0 + - ``sphinx.domains.index.IndexRole`` + + * - ``sphinx.util.detect_encoding()`` + - 2.4 + - 4.0 + - ``tokenize.detect_encoding()`` + + * - ``sphinx.util.get_module_source()`` + - 2.4 + - 4.0 + - N/A + + * - ``sphinx.util.inspect.Signature`` + - 2.4 + - 4.0 + - ``sphinx.util.inspect.signature`` and + ``sphinx.util.inspect.stringify_signature()`` + + * - ``sphinx.util.inspect.safe_getmembers()`` + - 2.4 + - 4.0 + - ``inspect.getmembers()`` + + * - ``sphinx.writers.latex.LaTeXTranslator.settings.author`` + - 2.4 + - 4.0 + - N/A + + * - ``sphinx.writers.latex.LaTeXTranslator.settings.contentsname`` + - 2.4 + - 4.0 + - ``document['contentsname']`` + + * - ``sphinx.writers.latex.LaTeXTranslator.settings.docclass`` + - 2.4 + - 4.0 + - ``document['docclass']`` + + * - ``sphinx.writers.latex.LaTeXTranslator.settings.docname`` + - 2.4 + - 4.0 + - N/A + + * - ``sphinx.writers.latex.LaTeXTranslator.settings.title`` + - 2.4 + - 4.0 + - N/A + + * - ``sphinx.writers.latex.ADDITIONAL_SETTINGS`` + - 2.4 + - 4.0 + - ``sphinx.builders.latex.constants.ADDITIONAL_SETTINGS`` + + * - ``sphinx.writers.latex.DEFAULT_SETTINGS`` + - 2.4 + - 4.0 + - ``sphinx.builders.latex.constants.DEFAULT_SETTINGS`` + + * - ``sphinx.writers.latex.LUALATEX_DEFAULT_FONTPKG`` + - 2.4 + - 4.0 + - ``sphinx.builders.latex.constants.LUALATEX_DEFAULT_FONTPKG`` + + * - ``sphinx.writers.latex.PDFLATEX_DEFAULT_FONTPKG`` + - 2.4 + - 4.0 + - ``sphinx.builders.latex.constants.PDFLATEX_DEFAULT_FONTPKG`` + + * - ``sphinx.writers.latex.XELATEX_DEFAULT_FONTPKG`` + - 2.4 + - 4.0 + - ``sphinx.builders.latex.constants.XELATEX_DEFAULT_FONTPKG`` + + * - ``sphinx.writers.latex.XELATEX_GREEK_DEFAULT_FONTPKG`` + - 2.4 + - 4.0 + - ``sphinx.builders.latex.constants.XELATEX_GREEK_DEFAULT_FONTPKG`` + + * - ``sphinx.builders.gettext.POHEADER`` + - 2.3 + - 4.0 + - ``sphinx/templates/gettext/message.pot_t`` (template file) + + * - ``sphinx.io.SphinxStandaloneReader.app`` + - 2.3 + - 4.0 + - ``sphinx.io.SphinxStandaloneReader.setup()`` + + * - ``sphinx.io.SphinxStandaloneReader.env`` + - 2.3 + - 4.0 + - ``sphinx.io.SphinxStandaloneReader.setup()`` + + * - ``sphinx.util.texescape.tex_escape_map`` + - 2.3 + - 4.0 + - ``sphinx.util.texescape.escape()`` + + * - ``sphinx.util.texescape.tex_hl_escape_map_new`` + - 2.3 + - 4.0 + - ``sphinx.util.texescape.hlescape()`` + + * - ``sphinx.writers.latex.LaTeXTranslator.no_contractions`` + - 2.3 + - 4.0 + - N/A + + * - ``sphinx.domains.math.MathDomain.add_equation()`` + - 2.2 + - 4.0 + - ``sphinx.domains.math.MathDomain.note_equation()`` + + * - ``sphinx.domains.math.MathDomain.get_next_equation_number()`` + - 2.2 + - 4.0 + - ``sphinx.domains.math.MathDomain.note_equation()`` + + * - The ``info`` and ``warn`` arguments of + ``sphinx.ext.autosummary.generate.generate_autosummary_docs()`` + - 2.2 + - 4.0 + - ``logging.info()`` and ``logging.warning()`` + + * - ``sphinx.ext.autosummary.generate._simple_info()`` + - 2.2 + - 4.0 + - ``logging.info()`` + + * - ``sphinx.ext.autosummary.generate._simple_warn()`` + - 2.2 + - 4.0 + - ``logging.warning()`` + + * - ``sphinx.ext.todo.merge_info()`` + - 2.2 + - 4.0 + - ``sphinx.ext.todo.TodoDomain`` + + * - ``sphinx.ext.todo.process_todo_nodes()`` + - 2.2 + - 4.0 + - ``sphinx.ext.todo.TodoDomain`` + + * - ``sphinx.ext.todo.process_todos()`` + - 2.2 + - 4.0 + - ``sphinx.ext.todo.TodoDomain`` + + * - ``sphinx.ext.todo.purge_todos()`` + - 2.2 + - 4.0 + - ``sphinx.ext.todo.TodoDomain`` + + * - ``sphinx.builders.latex.LaTeXBuilder.apply_transforms()`` + - 2.1 + - 4.0 + - N/A + + * - ``sphinx.builders._epub_base.EpubBuilder.esc()`` + - 2.1 + - 4.0 + - ``html.escape()`` + + * - ``sphinx.directives.Acks`` + - 2.1 + - 4.0 + - ``sphinx.directives.other.Acks`` + + * - ``sphinx.directives.Author`` + - 2.1 + - 4.0 + - ``sphinx.directives.other.Author`` + + * - ``sphinx.directives.Centered`` + - 2.1 + - 4.0 + - ``sphinx.directives.other.Centered`` + + * - ``sphinx.directives.Class`` + - 2.1 + - 4.0 + - ``sphinx.directives.other.Class`` + + * - ``sphinx.directives.CodeBlock`` + - 2.1 + - 4.0 + - ``sphinx.directives.code.CodeBlock`` + + * - ``sphinx.directives.Figure`` + - 2.1 + - 4.0 + - ``sphinx.directives.patches.Figure`` + + * - ``sphinx.directives.HList`` + - 2.1 + - 4.0 + - ``sphinx.directives.other.HList`` + + * - ``sphinx.directives.Highlight`` + - 2.1 + - 4.0 + - ``sphinx.directives.code.Highlight`` + + * - ``sphinx.directives.Include`` + - 2.1 + - 4.0 + - ``sphinx.directives.other.Include`` + + * - ``sphinx.directives.Index`` + - 2.1 + - 4.0 + - ``sphinx.directives.other.Index`` + + * - ``sphinx.directives.LiteralInclude`` + - 2.1 + - 4.0 + - ``sphinx.directives.code.LiteralInclude`` + + * - ``sphinx.directives.Meta`` + - 2.1 + - 4.0 + - ``sphinx.directives.patches.Meta`` + + * - ``sphinx.directives.Only`` + - 2.1 + - 4.0 + - ``sphinx.directives.other.Only`` + + * - ``sphinx.directives.SeeAlso`` + - 2.1 + - 4.0 + - ``sphinx.directives.other.SeeAlso`` + + * - ``sphinx.directives.TabularColumns`` + - 2.1 + - 4.0 + - ``sphinx.directives.other.TabularColumns`` + + * - ``sphinx.directives.TocTree`` + - 2.1 + - 4.0 + - ``sphinx.directives.other.TocTree`` + + * - ``sphinx.directives.VersionChange`` + - 2.1 + - 4.0 + - ``sphinx.directives.other.VersionChange`` + + * - ``sphinx.domains.python.PyClassmember`` + - 2.1 + - 4.0 + - ``sphinx.domains.python.PyAttribute``, + ``sphinx.domains.python.PyMethod``, + ``sphinx.domains.python.PyClassMethod``, + ``sphinx.domains.python.PyObject`` and + ``sphinx.domains.python.PyStaticMethod`` + + * - ``sphinx.domains.python.PyModulelevel`` + - 2.1 + - 4.0 + - ``sphinx.domains.python.PyFunction``, + ``sphinx.domains.python.PyObject`` and + ``sphinx.domains.python.PyVariable`` + + * - ``sphinx.domains.std.StandardDomain._resolve_citation_xref()`` + - 2.1 + - 4.0 + - ``sphinx.domains.citation.CitationDomain.resolve_xref()`` + + * - ``sphinx.domains.std.StandardDomain.note_citations()`` + - 2.1 + - 4.0 + - ``sphinx.domains.citation.CitationDomain.note_citation()`` + + * - ``sphinx.domains.std.StandardDomain.note_citation_refs()`` + - 2.1 + - 4.0 + - ``sphinx.domains.citation.CitationDomain.note_citation_reference()`` + + * - ``sphinx.domains.std.StandardDomain.note_labels()`` + - 2.1 + - 4.0 + - ``sphinx.domains.std.StandardDomain.process_doc()`` + + * - ``sphinx.environment.NoUri`` + - 2.1 + - 4.0 + - ``sphinx.errors.NoUri`` + * - ``sphinx.ext.apidoc.format_directive()`` + - 2.1 + - 4.0 + - N/A + + * - ``sphinx.ext.apidoc.format_heading()`` + - 2.1 + - 4.0 + - N/A + + * - ``sphinx.ext.apidoc.makename()`` + - 2.1 + - 4.0 + - ``sphinx.ext.apidoc.module_join()`` + + * - ``sphinx.ext.autodoc.importer.MockFinder`` + - 2.1 + - 4.0 + - ``sphinx.ext.autodoc.mock.MockFinder`` + + * - ``sphinx.ext.autodoc.importer.MockLoader`` + - 2.1 + - 4.0 + - ``sphinx.ext.autodoc.mock.MockLoader`` + + * - ``sphinx.ext.autodoc.importer.mock()`` + - 2.1 + - 4.0 + - ``sphinx.ext.autodoc.mock.mock()`` + + * - ``sphinx.ext.autosummary.autolink_role()`` + - 2.1 + - 4.0 + - ``sphinx.ext.autosummary.AutoLink`` + + * - ``sphinx.ext.imgmath.DOC_BODY`` + - 2.1 + - 4.0 + - N/A + + * - ``sphinx.ext.imgmath.DOC_BODY_PREVIEW`` + - 2.1 + - 4.0 + - N/A + + * - ``sphinx.ext.imgmath.DOC_HEAD`` + - 2.1 + - 4.0 + - N/A + + * - ``sphinx.transforms.CitationReferences`` + - 2.1 + - 4.0 + - ``sphinx.domains.citation.CitationReferenceTransform`` + + * - ``sphinx.transforms.SmartQuotesSkipper`` + - 2.1 + - 4.0 + - ``sphinx.domains.citation.CitationDefinitionTransform`` + + * - ``sphinx.util.docfields.DocFieldTransformer.preprocess_fieldtypes()`` + - 2.1 + - 4.0 + - ``sphinx.directives.ObjectDescription.get_field_type_map()`` + + * - ``sphinx.util.node.find_source_node()`` + - 2.1 + - 4.0 + - ``sphinx.util.node.get_node_source()`` + + * - ``sphinx.util.i18n.find_catalog()`` + - 2.1 + - 4.0 + - ``sphinx.util.i18n.docname_to_domain()`` + + * - ``sphinx.util.i18n.find_catalog_files()`` + - 2.1 + - 4.0 + - ``sphinx.util.i18n.CatalogRepository`` + + * - ``sphinx.util.i18n.find_catalog_source_files()`` + - 2.1 + - 4.0 + - ``sphinx.util.i18n.CatalogRepository`` + + * - ``encoding`` argument of ``autodoc.Documenter.get_doc()``, + ``autodoc.DocstringSignatureMixin.get_doc()``, + ``autodoc.DocstringSignatureMixin._find_signature()``, and + ``autodoc.ClassDocumenter.get_doc()`` + - 2.0 + - 4.0 + - N/A + + * - arguments of ``EpubBuilder.build_mimetype()``, + ``EpubBuilder.build_container()``, ``EpubBuilder.build_content()``, + ``EpubBuilder.build_toc()`` and ``EpubBuilder.build_epub()`` + - 2.0 + - 4.0 + - N/A + + * - arguments of ``Epub3Builder.build_navigation_doc()`` + - 2.0 + - 4.0 + - N/A + + * - ``nodetype`` argument of + ``sphinx.search.WordCollector.is_meta_keywords()`` + - 2.0 + - 4.0 + - N/A + + * - ``suffix`` argument of ``BuildEnvironment.doc2path()`` + - 2.0 + - 4.0 + - N/A + + * - string style ``base`` argument of ``BuildEnvironment.doc2path()`` + - 2.0 + - 4.0 + - ``os.path.join()`` + + * - ``sphinx.addnodes.abbreviation`` + - 2.0 + - 4.0 + - ``docutils.nodes.abbreviation`` + + * - ``sphinx.builders.applehelp`` + - 2.0 + - 4.0 + - ``sphinxcontrib.applehelp`` + + * - ``sphinx.builders.devhelp`` + - 2.0 + - 4.0 + - ``sphinxcontrib.devhelp`` + + * - ``sphinx.builders.epub3.Epub3Builder.validate_config_value()`` + - 2.0 + - 4.0 + - ``sphinx.builders.epub3.validate_config_values()`` + + * - ``sphinx.builders.html.JSONHTMLBuilder`` + - 2.0 + - 4.0 + - ``sphinx.builders.serializinghtml.JSONHTMLBuilder`` + + * - ``sphinx.builders.html.PickleHTMLBuilder`` + - 2.0 + - 4.0 + - ``sphinx.builders.serializinghtml.PickleHTMLBuilder`` + + * - ``sphinx.builders.html.SerializingHTMLBuilder`` + - 2.0 + - 4.0 + - ``sphinx.builders.serializinghtml.SerializingHTMLBuilder`` + + * - ``sphinx.builders.html.SingleFileHTMLBuilder`` + - 2.0 + - 4.0 + - ``sphinx.builders.singlehtml.SingleFileHTMLBuilder`` + + * - ``sphinx.builders.html.WebHTMLBuilder`` + - 2.0 + - 4.0 + - ``sphinx.builders.serializinghtml.PickleHTMLBuilder`` + + * - ``sphinx.builders.htmlhelp`` + - 2.0 + - 4.0 + - ``sphinxcontrib.htmlhelp`` + + * - ``sphinx.builders.htmlhelp.HTMLHelpBuilder.open_file()`` + - 2.0 + - 4.0 + - ``open()`` + + * - ``sphinx.builders.qthelp`` + - 2.0 + - 4.0 + - ``sphinxcontrib.qthelp`` + + * - ``sphinx.cmd.quickstart.term_decode()`` + - 2.0 + - 4.0 + - N/A + + * - ``sphinx.cmd.quickstart.TERM_ENCODING`` + - 2.0 + - 4.0 + - ``sys.stdin.encoding`` + + * - ``sphinx.config.check_unicode()`` + - 2.0 + - 4.0 + - N/A + + * - ``sphinx.config.string_classes`` + - 2.0 + - 4.0 + - ``[str]`` + + * - ``sphinx.domains.cpp.DefinitionError.description`` + - 2.0 + - 4.0 + - ``str(exc)`` + + * - ``sphinx.domains.cpp.NoOldIdError.description`` + - 2.0 + - 4.0 + - ``str(exc)`` + + * - ``sphinx.domains.cpp.UnsupportedMultiCharacterCharLiteral.decoded`` + - 2.0 + - 4.0 + - ``str(exc)`` + + * - ``sphinx.ext.autosummary.Autosummary.warn()`` + - 2.0 + - 4.0 + - N/A + + * - ``sphinx.ext.autosummary.Autosummary.genopt`` + - 2.0 + - 4.0 + - N/A + + * - ``sphinx.ext.autosummary.Autosummary.warnings`` + - 2.0 + - 4.0 + - N/A + + * - ``sphinx.ext.autosummary.Autosummary.result`` + - 2.0 + - 4.0 + - N/A + + * - ``sphinx.ext.doctest.doctest_encode()`` + - 2.0 + - 4.0 + - N/A + + * - ``sphinx.ext.jsmath`` + - 2.0 + - 4.0 + - ``sphinxcontrib.jsmath`` + + * - ``sphinx.roles.abbr_role()`` + - 2.0 + - 4.0 + - ``sphinx.roles.Abbreviation`` + + * - ``sphinx.roles.emph_literal_role()`` + - 2.0 + - 4.0 + - ``sphinx.roles.EmphasizedLiteral`` + + * - ``sphinx.roles.menusel_role()`` + - 2.0 + - 4.0 + - ``sphinx.roles.GUILabel`` or ``sphinx.roles.MenuSelection`` + + * - ``sphinx.roles.index_role()`` + - 2.0 + - 4.0 + - ``sphinx.roles.Index`` + + * - ``sphinx.roles.indexmarkup_role()`` + - 2.0 + - 4.0 + - ``sphinx.roles.PEP`` or ``sphinx.roles.RFC`` + + * - ``sphinx.testing.util.remove_unicode_literal()`` + - 2.0 + - 4.0 + - N/A + + * - ``sphinx.util.attrdict`` + - 2.0 + - 4.0 + - N/A + + * - ``sphinx.util.force_decode()`` + - 2.0 + - 4.0 + - N/A + + * - ``sphinx.util.get_matching_docs()`` + - 2.0 + - 4.0 + - ``sphinx.util.get_matching_files()`` + + * - ``sphinx.util.inspect.Parameter`` + - 2.0 + - 3.0 + - N/A + + * - ``sphinx.util.jsonimpl`` + - 2.0 + - 4.0 + - ``sphinxcontrib.serializinghtml.jsonimpl`` + + * - ``sphinx.util.osutil.EEXIST`` + - 2.0 + - 4.0 + - ``errno.EEXIST`` or ``FileExistsError`` + + * - ``sphinx.util.osutil.EINVAL`` + - 2.0 + - 4.0 + - ``errno.EINVAL`` + + * - ``sphinx.util.osutil.ENOENT`` + - 2.0 + - 4.0 + - ``errno.ENOENT`` or ``FileNotFoundError`` + + * - ``sphinx.util.osutil.EPIPE`` + - 2.0 + - 4.0 + - ``errno.ENOENT`` or ``BrokenPipeError`` + + * - ``sphinx.util.osutil.walk()`` + - 2.0 + - 4.0 + - ``os.walk()`` + + * - ``sphinx.util.pycompat.NoneType`` + - 2.0 + - 4.0 + - ``sphinx.util.typing.NoneType`` + + * - ``sphinx.util.pycompat.TextIOWrapper`` + - 2.0 + - 4.0 + - ``io.TextIOWrapper`` + + * - ``sphinx.util.pycompat.UnicodeMixin`` + - 2.0 + - 4.0 + - N/A + + * - ``sphinx.util.pycompat.htmlescape()`` + - 2.0 + - 4.0 + - ``html.escape()`` + + * - ``sphinx.util.pycompat.indent()`` + - 2.0 + - 4.0 + - ``textwrap.indent()`` + + * - ``sphinx.util.pycompat.sys_encoding`` + - 2.0 + - 4.0 + - ``sys.getdefaultencoding()`` + + * - ``sphinx.util.pycompat.terminal_safe()`` + - 2.0 + - 4.0 + - ``sphinx.util.console.terminal_safe()`` + + * - ``sphinx.util.pycompat.u`` + - 2.0 + - 4.0 + - N/A + + * - ``sphinx.util.PeekableIterator`` + - 2.0 + - 4.0 + - N/A + + * - Omitting the ``filename`` argument in an overriddent + ``IndexBuilder.feed()`` method. + - 2.0 + - 4.0 + - ``IndexBuilder.feed(docname, filename, title, doctree)`` + + * - ``sphinx.writers.latex.ExtBabel`` + - 2.0 + - 4.0 + - ``sphinx.builders.latex.util.ExtBabel`` + + * - ``sphinx.writers.latex.LaTeXTranslator.babel_defmacro()`` + - 2.0 + - 4.0 + - N/A + + * - ``sphinx.application.Sphinx._setting_up_extension`` + - 2.0 + - 3.0 + - N/A + + * - The ``importer`` argument of ``sphinx.ext.autodoc.importer._MockModule`` + - 2.0 + - 3.0 + - N/A + + * - ``sphinx.ext.autodoc.importer._MockImporter`` + - 2.0 + - 3.0 + - N/A + + * - ``sphinx.io.SphinxBaseFileInput`` + - 2.0 + - 3.0 + - N/A + + * - ``sphinx.io.SphinxFileInput.supported`` + - 2.0 + - 3.0 + - N/A + + * - ``sphinx.io.SphinxRSTFileInput`` + - 2.0 + - 3.0 + - N/A + + * - ``sphinx.registry.SphinxComponentRegistry.add_source_input()`` + - 2.0 + - 3.0 + - N/A + + * - ``sphinx.writers.latex.LaTeXTranslator._make_visit_admonition()`` + - 2.0 + - 3.0 + - N/A + + * - ``sphinx.writers.latex.LaTeXTranslator.collect_footnotes()`` + - 2.0 + - 4.0 + - N/A + + * - ``sphinx.writers.texinfo.TexinfoTranslator._make_visit_admonition()`` + - 2.0 + - 3.0 + - N/A + + * - ``sphinx.writers.text.TextTranslator._make_depart_admonition()`` + - 2.0 + - 3.0 + - N/A + + * - ``sphinx.writers.latex.LaTeXTranslator.generate_numfig_format()`` + - 2.0 + - 4.0 + - N/A + + * - :rst:dir:`highlightlang` + - 1.8 + - 4.0 + - :rst:dir:`highlight` + + * - :meth:`~sphinx.application.Sphinx.add_stylesheet()` + - 1.8 + - 4.0 + - :meth:`~sphinx.application.Sphinx.add_css_file()` + + * - :meth:`~sphinx.application.Sphinx.add_javascript()` + - 1.8 + - 4.0 + - :meth:`~sphinx.application.Sphinx.add_js_file()` + + * - :confval:`autodoc_default_flags` + - 1.8 + - 4.0 + - :confval:`autodoc_default_options` + + * - ``content`` arguments of ``sphinx.util.image.guess_mimetype()`` + - 1.8 + - 3.0 + - N/A + + * - ``gettext_compact`` arguments of + ``sphinx.util.i18n.find_catalog_source_files()`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.io.SphinxI18nReader.set_lineno_for_reporter()`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.io.SphinxI18nReader.line`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.directives.other.VersionChanges`` + - 1.8 + - 3.0 + - ``sphinx.domains.changeset.VersionChanges`` + + * - ``sphinx.highlighting.PygmentsBridge.unhighlight()`` + - 1.8 + - 3.0 + - N/A + + * - ``trim_doctest_flags`` arguments of + ``sphinx.highlighting.PygmentsBridge`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.ext.mathbase`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.ext.mathbase.MathDomain`` + - 1.8 + - 3.0 + - ``sphinx.domains.math.MathDomain`` + + * - ``sphinx.ext.mathbase.MathDirective`` + - 1.8 + - 3.0 + - ``sphinx.directives.patches.MathDirective`` + + * - ``sphinx.ext.mathbase.math_role()`` + - 1.8 + - 3.0 + - ``docutils.parsers.rst.roles.math_role()`` + + * - ``sphinx.ext.mathbase.setup_math()`` + - 1.8 + - 3.0 + - :meth:`~sphinx.application.Sphinx.add_html_math_renderer()` + + * - ``sphinx.ext.mathbase.is_in_section_title()`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.ext.mathbase.get_node_equation_number()`` + - 1.8 + - 3.0 + - ``sphinx.util.math.get_node_equation_number()`` + + * - ``sphinx.ext.mathbase.wrap_displaymath()`` + - 1.8 + - 3.0 + - ``sphinx.util.math.wrap_displaymath()`` + + * - ``sphinx.ext.mathbase.math`` (node) + - 1.8 + - 3.0 + - ``docutils.nodes.math`` + + * - ``sphinx.ext.mathbase.displaymath`` (node) + - 1.8 + - 3.0 + - ``docutils.nodes.math_block`` + + * - ``sphinx.ext.mathbase.eqref`` (node) + - 1.8 + - 3.0 + - ``sphinx.builders.latex.nodes.math_reference`` + + * - ``viewcode_import`` (config value) + - 1.8 + - 3.0 + - :confval:`viewcode_follow_imported_members` + + * - ``sphinx.writers.latex.Table.caption_footnotetexts`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.latex.Table.header_footnotetexts`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.latex.LaTeXTranslator.footnotestack`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.latex.LaTeXTranslator.in_container_literal_block`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.latex.LaTeXTranslator.next_section_ids`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.latex.LaTeXTranslator.next_hyperlink_ids`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.latex.LaTeXTranslator.restrict_footnote()`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.latex.LaTeXTranslator.unrestrict_footnote()`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.latex.LaTeXTranslator.push_hyperlink_ids()`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.latex.LaTeXTranslator.pop_hyperlink_ids()`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.latex.LaTeXTranslator.bibitems`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.latex.LaTeXTranslator.hlsettingstack`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.latex.ExtBabel.get_shorthandoff()`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.html.HTMLTranslator.highlightlang()`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.html.HTMLTranslator.highlightlang_base()`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.html.HTMLTranslator.highlightlangopts()`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.html.HTMLTranslator.highlightlinenothreshold()`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.html5.HTMLTranslator.highlightlang()`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.html5.HTMLTranslator.highlightlang_base()`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.html5.HTMLTranslator.highlightlangopts()`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.html5.HTMLTranslator.highlightlinenothreshold()`` + - 1.8 + - 3.0 + - N/A + + * - ``sphinx.writers.latex.LaTeXTranslator.check_latex_elements()`` + - 1.8 + - 3.0 + - Nothing + + * - ``sphinx.application.CONFIG_FILENAME`` + - 1.8 + - 3.0 + - ``sphinx.config.CONFIG_FILENAME`` + + * - ``Config.check_unicode()`` + - 1.8 + - 3.0 + - ``sphinx.config.check_unicode()`` + + * - ``Config.check_types()`` + - 1.8 + - 3.0 + - ``sphinx.config.check_confval_types()`` + + * - ``dirname``, ``filename`` and ``tags`` arguments of + ``Config.__init__()`` + - 1.8 + - 3.0 + - ``Config.read()`` + + * - The value of :confval:`html_search_options` + - 1.8 + - 3.0 + - see :confval:`html_search_options` + + * - ``sphinx.versioning.prepare()`` + - 1.8 + - 3.0 + - ``sphinx.versioning.UIDTransform`` + + * - ``Sphinx.override_domain()`` + - 1.8 + - 3.0 + - :meth:`~sphinx.application.Sphinx.add_domain()` + + * - ``Sphinx.import_object()`` + - 1.8 + - 3.0 + - ``sphinx.util.import_object()`` + + * - ``suffix`` argument of + :meth:`~sphinx.application.Sphinx.add_source_parser()` + - 1.8 + - 3.0 + - :meth:`~sphinx.application.Sphinx.add_source_suffix()` + + + * - ``BuildEnvironment.load()`` + - 1.8 + - 3.0 + - ``pickle.load()`` + + * - ``BuildEnvironment.loads()`` + - 1.8 + - 3.0 + - ``pickle.loads()`` + + * - ``BuildEnvironment.frompickle()`` + - 1.8 + - 3.0 + - ``pickle.load()`` + + * - ``BuildEnvironment.dump()`` + - 1.8 + - 3.0 + - ``pickle.dump()`` + + * - ``BuildEnvironment.dumps()`` + - 1.8 + - 3.0 + - ``pickle.dumps()`` + + * - ``BuildEnvironment.topickle()`` + - 1.8 + - 3.0 + - ``pickle.dump()`` + + * - ``BuildEnvironment._nitpick_ignore`` + - 1.8 + - 3.0 + - :confval:`nitpick_ignore` + + * - ``BuildEnvironment.versionchanges`` + - 1.8 + - 3.0 + - N/A + + * - ``BuildEnvironment.update()`` + - 1.8 + - 3.0 + - ``Builder.read()`` + + * - ``BuildEnvironment.read_doc()`` + - 1.8 + - 3.0 + - ``Builder.read_doc()`` + + * - ``BuildEnvironment._read_serial()`` + - 1.8 + - 3.0 + - ``Builder.read()`` + + * - ``BuildEnvironment._read_parallel()`` + - 1.8 + - 3.0 + - ``Builder.read()`` + + * - ``BuildEnvironment.write_doctree()`` + - 1.8 + - 3.0 + - ``Builder.write_doctree()`` + + * - ``BuildEnvironment.note_versionchange()`` + - 1.8 + - 3.0 + - ``ChangesDomain.note_changeset()`` + + * - ``warn()`` (template helper function) + - 1.8 + - 3.0 + - ``warning()`` + + * - :confval:`source_parsers` + - 1.8 + - 3.0 + - :meth:`~sphinx.application.Sphinx.add_source_parser()` + + * - ``sphinx.util.docutils.directive_helper()`` + - 1.8 + - 3.0 + - ``Directive`` class of docutils + + * - ``sphinx.cmdline`` + - 1.8 + - 3.0 + - ``sphinx.cmd.build`` + + * - ``sphinx.make_mode`` + - 1.8 + - 3.0 + - ``sphinx.cmd.make_mode`` + + * - ``sphinx.locale.l_()`` + - 1.8 + - 3.0 + - :func:`sphinx.locale._()` + + * - ``sphinx.locale.lazy_gettext()`` + - 1.8 + - 3.0 + - :func:`sphinx.locale._()` + + * - ``sphinx.locale.mygettext()`` + - 1.8 + - 3.0 + - :func:`sphinx.locale._()` + + * - ``sphinx.util.copy_static_entry()`` + - 1.5 + - 3.0 + - ``sphinx.util.fileutil.copy_asset()`` + + * - ``sphinx.build_main()`` + - 1.7 + - 2.0 + - ``sphinx.cmd.build.build_main()`` + + * - ``sphinx.ext.intersphinx.debug()`` + - 1.7 + - 2.0 + - ``sphinx.ext.intersphinx.inspect_main()`` + + * - ``sphinx.ext.autodoc.format_annotation()`` + - 1.7 + - 2.0 + - ``sphinx.util.inspect.Signature`` + + * - ``sphinx.ext.autodoc.formatargspec()`` + - 1.7 + - 2.0 + - ``sphinx.util.inspect.Signature`` + + * - ``sphinx.ext.autodoc.AutodocReporter`` + - 1.7 + - 2.0 + - ``sphinx.util.docutils.switch_source_input()`` + + * - ``sphinx.ext.autodoc.add_documenter()`` + - 1.7 + - 2.0 + - :meth:`~sphinx.application.Sphinx.add_autodocumenter()` + + * - ``sphinx.ext.autodoc.AutoDirective._register`` + - 1.7 + - 2.0 + - :meth:`~sphinx.application.Sphinx.add_autodocumenter()` + + * - ``AutoDirective._special_attrgetters`` + - 1.7 + - 2.0 + - :meth:`~sphinx.application.Sphinx.add_autodoc_attrgetter()` + + * - ``Sphinx.warn()``, ``Sphinx.info()`` + - 1.6 + - 2.0 + - :ref:`logging-api` + + * - ``BuildEnvironment.set_warnfunc()`` + - 1.6 + - 2.0 + - :ref:`logging-api` + + * - ``BuildEnvironment.note_toctree()`` + - 1.6 + - 2.0 + - ``Toctree.note()`` (in ``sphinx.environment.adapters.toctree``) + + * - ``BuildEnvironment.get_toc_for()`` + - 1.6 + - 2.0 + - ``Toctree.get_toc_for()`` (in ``sphinx.environment.adapters.toctree``) + + * - ``BuildEnvironment.get_toctree_for()`` + - 1.6 + - 2.0 + - ``Toctree.get_toctree_for()`` (in ``sphinx.environment.adapters.toctree``) + + * - ``BuildEnvironment.create_index()`` + - 1.6 + - 2.0 + - ``IndexEntries.create_index()`` (in ``sphinx.environment.adapters.indexentries``) + + * - ``sphinx.websupport`` + - 1.6 + - 2.0 + - `sphinxcontrib-websupport`_ + + .. _sphinxcontrib-websupport: https://pypi.org/project/sphinxcontrib-websupport/ + + * - ``StandaloneHTMLBuilder.css_files`` + - 1.6 + - 2.0 + - :meth:`~sphinx.application.Sphinx.add_stylesheet()` + + * - ``document.settings.gettext_compact`` + - 1.8 + - 1.8 + - :confval:`gettext_compact` + + * - ``Sphinx.status_iterator()`` + - 1.6 + - 1.7 + - ``sphinx.util.status_iterator()`` + + * - ``Sphinx.old_status_iterator()`` + - 1.6 + - 1.7 + - ``sphinx.util.old_status_iterator()`` + + * - ``Sphinx._directive_helper()`` + - 1.6 + - 1.7 + - ``sphinx.util.docutils.directive_helper()`` + + * - ``sphinx.util.compat.Directive`` + - 1.6 + - 1.7 + - ``docutils.parsers.rst.Directive`` + + * - ``sphinx.util.compat.docutils_version`` + - 1.6 + - 1.7 + - ``sphinx.util.docutils.__version_info__`` + +.. note:: On deprecating on public APIs (internal functions and classes), + we also follow the policy as much as possible. diff --git a/sphinx/doc/extdev/domainapi.rst b/sphinx/doc/extdev/domainapi.rst new file mode 100644 index 0000000..d6ecf06 --- /dev/null +++ b/sphinx/doc/extdev/domainapi.rst @@ -0,0 +1,14 @@ +.. _domain-api: + +Domain API +---------- + +.. module:: sphinx.domains + +.. autoclass:: Domain + :members: + +.. autoclass:: ObjType + +.. autoclass:: Index + :members: diff --git a/sphinx/doc/extdev/envapi.rst b/sphinx/doc/extdev/envapi.rst new file mode 100644 index 0000000..d7ec239 --- /dev/null +++ b/sphinx/doc/extdev/envapi.rst @@ -0,0 +1,58 @@ +Build environment API +===================== + +.. module:: sphinx.environment + +.. class:: BuildEnvironment + + **Attributes** + + .. attribute:: app + + Reference to the :class:`.Sphinx` (application) object. + + .. attribute:: config + + Reference to the :class:`.Config` object. + + .. attribute:: project + + Target project. See :class:`.Project`. + + .. attribute:: srcdir + + Source directory. + + .. attribute:: doctreedir + + Directory for storing pickled doctrees. + + .. attribute:: events + + An :class:`.EventManager` object. + + .. attribute:: found_docs + + A set of all existing docnames. + + .. attribute:: metadata + + Dictionary mapping docnames to "metadata" (see :ref:`metadata`). + + .. attribute:: titles + + Dictionary mapping docnames to the docutils node for their main title. + + .. autoattribute:: docname + + **Utility methods** + + .. automethod:: doc2path + + .. automethod:: relfn2path + + .. automethod:: note_dependency + + .. automethod:: new_serialno + + .. automethod:: note_reread diff --git a/sphinx/doc/extdev/i18n.rst b/sphinx/doc/extdev/i18n.rst new file mode 100644 index 0000000..75ef36c --- /dev/null +++ b/sphinx/doc/extdev/i18n.rst @@ -0,0 +1,97 @@ +.. _i18n-api: + +i18n API +======== + +.. currentmodule:: sphinx.locale + +.. autofunction:: init + +.. autofunction:: init_console + +.. autofunction:: get_translation + +.. autofunction:: _ + +.. autofunction:: __ + + +.. _ext-i18n: + +Extension internationalization (`i18n`) and localization (`l10n`) using i18n API +-------------------------------------------------------------------------------- + +.. versionadded:: 1.8 + +An extension may naturally come with message translations. This is briefly +summarized in :func:`sphinx.locale.get_translation` help. + +In practice, you have to: + +#. Choose a name for your message catalog, which must be unique. Usually + the name of your extension is used for the name of message catalog. + +#. Mark in your extension sources all messages as translatable, via + :func:`sphinx.locale.get_translation` function, usually renamed ``_()``, + e.g.: + + .. code-block:: python + :caption: src/__init__.py + + from sphinx.locale import get_translation + + MESSAGE_CATALOG_NAME = 'myextension' + _ = get_translation(MESSAGE_CATALOG_NAME) + + translated_text = _('Hello Sphinx!') + +#. Set up your extension to be aware of its dedicated translations: + + .. code-block:: python + :caption: src/__init__.py + + def setup(app): + package_dir = path.abspath(path.dirname(__file__)) + locale_dir = os.path.join(package_dir, 'locales') + app.add_message_catalog(MESSAGE_CATALOG_NAME, locale_dir) + +#. Generate message catalog template ``*.pot`` file, usually in ``locale/`` + source directory, for example via `Babel`_: + + .. code-block:: console + + $ pybabel extract --output=src/locale/myextension.pot src/ + +#. Create message catalogs (``*.po``) for each language which your extension + will provide localization, for example via `Babel`_: + + .. code-block:: console + + $ pybabel init --input-file=src/locale/myextension.pot --domain=myextension --output-dir=src/locale --locale=fr_FR + +#. Translate message catalogs for each language manually + +#. Compile message catalogs into ``*.mo`` files, for example via `Babel`_: + + .. code-block:: console + + $ pybabel compile --directory=src/locale --domain=myextension + +#. Ensure that message catalog files are distributed when your package will + be installed, by adding equivalent line in your extension ``MANIFEST.in``: + + .. code-block:: ini + :caption: MANIFEST.in + + recursive-include src *.pot *.po *.mo + + +When the messages on your extension has been changed, you need to also update +message catalog template and message catalogs, for example via `Babel`_: + +.. code-block:: console + + $ pybabel extract --output=src/locale/myextension.pot src/ + $ pybabel update --input-file=src/locale/myextension.pot --domain=myextension --output-dir=src/locale + +.. _Babel: http://babel.pocoo.org/ diff --git a/sphinx/doc/extdev/index.rst b/sphinx/doc/extdev/index.rst new file mode 100644 index 0000000..266da52 --- /dev/null +++ b/sphinx/doc/extdev/index.rst @@ -0,0 +1,210 @@ +.. _dev-extensions: + +Developing extensions for Sphinx +================================ + +Since many projects will need special features in their documentation, Sphinx is +designed to be extensible on several levels. + +This is what you can do in an extension: First, you can add new +:term:`builder`\s to support new output formats or actions on the parsed +documents. Then, it is possible to register custom reStructuredText roles and +directives, extending the markup. And finally, there are so-called "hook +points" at strategic places throughout the build process, where an extension can +register a hook and run specialized code. + +An extension is simply a Python module. When an extension is loaded, Sphinx +imports this module and executes its ``setup()`` function, which in turn +notifies Sphinx of everything the extension offers -- see the extension tutorial +for examples. + +The configuration file itself can be treated as an extension if it contains a +``setup()`` function. All other extensions to load must be listed in the +:confval:`extensions` configuration value. + +Discovery of builders by entry point +------------------------------------ + +.. versionadded:: 1.6 + +:term:`builder` extensions can be discovered by means of `entry points`_ so +that they do not have to be listed in the :confval:`extensions` configuration +value. + +Builder extensions should define an entry point in the ``sphinx.builders`` +group. The name of the entry point needs to match your builder's +:attr:`~.Builder.name` attribute, which is the name passed to the +:option:`sphinx-build -b` option. The entry point value should equal the +dotted name of the extension module. Here is an example of how an entry point +for 'mybuilder' can be defined in the extension's ``setup.py``:: + + setup( + # ... + entry_points={ + 'sphinx.builders': [ + 'mybuilder = my.extension.module', + ], + } + ) + +Note that it is still necessary to register the builder using +:meth:`~.Sphinx.add_builder` in the extension's :func:`setup` function. + +.. _entry points: https://setuptools.readthedocs.io/en/latest/setuptools.html#dynamic-discovery-of-services-and-plugins + +.. _important-objects: + +Important objects +----------------- + +There are several key objects whose API you will use while writing an +extension. These are: + +**Application** + The application object (usually called ``app``) is an instance of + :class:`.Sphinx`. It controls most high-level functionality, such as the + setup of extensions, event dispatching and producing output (logging). + + If you have the environment object, the application is available as + ``env.app``. + +**Environment** + The build environment object (usually called ``env``) is an instance of + :class:`.BuildEnvironment`. It is responsible for parsing the source + documents, stores all metadata about the document collection and is + serialized to disk after each build. + + Its API provides methods to do with access to metadata, resolving references, + etc. It can also be used by extensions to cache information that should + persist for incremental rebuilds. + + If you have the application or builder object, the environment is available + as ``app.env`` or ``builder.env``. + +**Builder** + The builder object (usually called ``builder``) is an instance of a specific + subclass of :class:`.Builder`. Each builder class knows how to convert the + parsed documents into an output format, or otherwise process them (e.g. check + external links). + + If you have the application object, the builder is available as + ``app.builder``. + +**Config** + The config object (usually called ``config``) provides the values of + configuration values set in :file:`conf.py` as attributes. It is an instance + of :class:`.Config`. + + The config is available as ``app.config`` or ``env.config``. + +To see an example of use of these objects, refer to +:doc:`../development/tutorials/index`. + +.. _build-phases: + +Build Phases +------------ + +One thing that is vital in order to understand extension mechanisms is the way +in which a Sphinx project is built: this works in several phases. + +**Phase 0: Initialization** + + In this phase, almost nothing of interest to us happens. The source + directory is searched for source files, and extensions are initialized. + Should a stored build environment exist, it is loaded, otherwise a new one is + created. + +**Phase 1: Reading** + + In Phase 1, all source files (and on subsequent builds, those that are new or + changed) are read and parsed. This is the phase where directives and roles + are encountered by docutils, and the corresponding code is executed. The + output of this phase is a *doctree* for each source file; that is a tree of + docutils nodes. For document elements that aren't fully known until all + existing files are read, temporary nodes are created. + + There are nodes provided by docutils, which are documented `in the docutils + documentation `__. + Additional nodes are provided by Sphinx and :ref:`documented here `. + + During reading, the build environment is updated with all meta- and cross + reference data of the read documents, such as labels, the names of headings, + described Python objects and index entries. This will later be used to + replace the temporary nodes. + + The parsed doctrees are stored on the disk, because it is not possible to + hold all of them in memory. + +**Phase 2: Consistency checks** + + Some checking is done to ensure no surprises in the built documents. + +**Phase 3: Resolving** + + Now that the metadata and cross-reference data of all existing documents is + known, all temporary nodes are replaced by nodes that can be converted into + output using components called transforms. For example, links are created + for object references that exist, and simple literal nodes are created for + those that don't. + +**Phase 4: Writing** + + This phase converts the resolved doctrees to the desired output format, such + as HTML or LaTeX. This happens via a so-called docutils writer that visits + the individual nodes of each doctree and produces some output in the process. + +.. note:: + + Some builders deviate from this general build plan, for example, the builder + that checks external links does not need anything more than the parsed + doctrees and therefore does not have phases 2--4. + +To see an example of application, refer to :doc:`../development/tutorials/todo`. + +.. _ext-metadata: + +Extension metadata +------------------ + +.. versionadded:: 1.3 + +The ``setup()`` function can return a dictionary. This is treated by Sphinx +as metadata of the extension. Metadata keys currently recognized are: + +* ``'version'``: a string that identifies the extension version. It is used for + extension version requirement checking (see :confval:`needs_extensions`) and + informational purposes. If not given, ``"unknown version"`` is substituted. +* ``'env_version'``: an integer that identifies the version of env data + structure if the extension stores any data to environment. It is used to + detect the data structure has been changed from last build. The extensions + have to increment the version when data structure has changed. If not given, + Sphinx considers the extension does not stores any data to environment. +* ``'parallel_read_safe'``: a boolean that specifies if parallel reading of + source files can be used when the extension is loaded. It defaults to + ``False``, i.e. you have to explicitly specify your extension to be + parallel-read-safe after checking that it is. +* ``'parallel_write_safe'``: a boolean that specifies if parallel writing of + output files can be used when the extension is loaded. Since extensions + usually don't negatively influence the process, this defaults to ``True``. + + +APIs used for writing extensions +-------------------------------- + +.. toctree:: + :maxdepth: 2 + + appapi + projectapi + envapi + builderapi + collectorapi + markupapi + domainapi + parserapi + nodes + logging + i18n + utils + deprecated diff --git a/sphinx/doc/extdev/logging.rst b/sphinx/doc/extdev/logging.rst new file mode 100644 index 0000000..e6c4dc6 --- /dev/null +++ b/sphinx/doc/extdev/logging.rst @@ -0,0 +1,66 @@ +.. _logging-api: + +Logging API +=========== + +.. currentmodule:: sphinx.util.logging + +.. autofunction:: getLogger(name) + +.. autoclass:: SphinxLoggerAdapter(logging.LoggerAdapter) + + .. method:: SphinxLoggerAdapter.error(msg, *args, **kwargs) + .. method:: SphinxLoggerAdapter.critical(msg, *args, **kwargs) + .. method:: SphinxLoggerAdapter.warning(msg, *args, **kwargs) + + Logs a message on this logger with the specified level. + Basically, the arguments are as with python's logging module. + + In addition, Sphinx logger supports following keyword arguments: + + **type**, ***subtype*** + Categories of warning logs. It is used to suppress + warnings by :confval:`suppress_warnings` setting. + + **location** + Where the warning happened. It is used to include + the path and line number in each log. It allows docname, + tuple of docname and line number and nodes:: + + logger = sphinx.util.logging.getLogger(__name__) + logger.warning('Warning happened!', location='index') + logger.warning('Warning happened!', location=('chapter1/index', 10)) + logger.warning('Warning happened!', location=some_node) + + **color** + The color of logs. By default, error level logs are colored as + ``"darkred"``, critical level ones is not colored, and warning level + ones are colored as ``"red"``. + + .. method:: SphinxLoggerAdapter.log(level, msg, *args, **kwargs) + .. method:: SphinxLoggerAdapter.info(msg, *args, **kwargs) + .. method:: SphinxLoggerAdapter.verbose(msg, *args, **kwargs) + .. method:: SphinxLoggerAdapter.debug(msg, *args, **kwargs) + + Logs a message to this logger with the specified level. + Basically, the arguments are as with python's logging module. + + In addition, Sphinx logger supports following keyword arguments: + + **nonl** + If true, the logger does not fold lines at the end of the log message. + The default is ``False``. + + **location** + Where the message emitted. For more detail, see + :meth:`SphinxLoggerAdapter.warning`. + + **color** + The color of logs. By default, info and verbose level logs are not + colored, and debug level ones are colored as ``"darkgray"``. + +.. autofunction:: pending_logging() + +.. autofunction:: pending_warnings() + +.. autofunction:: prefixed_warnings() diff --git a/sphinx/doc/extdev/markupapi.rst b/sphinx/doc/extdev/markupapi.rst new file mode 100644 index 0000000..7a21f81 --- /dev/null +++ b/sphinx/doc/extdev/markupapi.rst @@ -0,0 +1,152 @@ +Docutils markup API +=================== + +This section describes the API for adding ReST markup elements (roles and +directives). + +Roles +----- + + +Directives +---------- + +Directives are handled by classes derived from +``docutils.parsers.rst.Directive``. They have to be registered by an extension +using :meth:`.Sphinx.add_directive` or :meth:`.Sphinx.add_directive_to_domain`. + +.. module:: docutils.parsers.rst + +.. class:: Directive + + The markup syntax of the new directive is determined by the follow five class + attributes: + + .. autoattribute:: required_arguments + .. autoattribute:: optional_arguments + .. autoattribute:: final_argument_whitespace + .. autoattribute:: option_spec + + Option validator functions take a single parameter, the option argument + (or ``None`` if not given), and should validate it or convert it to the + proper form. They raise :exc:`ValueError` or :exc:`TypeError` to indicate + failure. + + There are several predefined and possibly useful validators in the + :mod:`docutils.parsers.rst.directives` module. + + .. autoattribute:: has_content + + New directives must implement the :meth:`run` method: + + .. method:: run() + + This method must process the directive arguments, options and content, and + return a list of Docutils/Sphinx nodes that will be inserted into the + document tree at the point where the directive was encountered. + + Instance attributes that are always set on the directive are: + + .. attribute:: name + + The directive name (useful when registering the same directive class under + multiple names). + + .. attribute:: arguments + + The arguments given to the directive, as a list. + + .. attribute:: options + + The options given to the directive, as a dictionary mapping option names + to validated/converted values. + + .. attribute:: content + + The directive content, if given, as a :class:`.ViewList`. + + .. attribute:: lineno + + The absolute line number on which the directive appeared. This is not + always a useful value; use :attr:`srcline` instead. + + .. attribute:: content_offset + + Internal offset of the directive content. Used when calling + ``nested_parse`` (see below). + + .. attribute:: block_text + + The string containing the entire directive. + + .. attribute:: state + state_machine + + The state and state machine which controls the parsing. Used for + ``nested_parse``. + + +ViewLists +^^^^^^^^^ + +Docutils represents document source lines in a class +``docutils.statemachine.ViewList``. This is a list with extended functionality +-- for one, slicing creates views of the original list, and also the list +contains information about the source line numbers. + +The :attr:`Directive.content` attribute is a ViewList. If you generate content +to be parsed as ReST, you have to create a ViewList yourself. Important for +content generation are the following points: + +* The constructor takes a list of strings (lines) and a source (document) name. + +* The ``.append()`` method takes a line and a source name as well. + + +Parsing directive content as ReST +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Many directives will contain more markup that must be parsed. To do this, use +one of the following APIs from the :meth:`Directive.run` method: + +* ``self.state.nested_parse`` +* :func:`sphinx.util.nodes.nested_parse_with_titles` -- this allows titles in + the parsed content. + +Both APIs parse the content into a given node. They are used like this:: + + node = docutils.nodes.paragraph() + # either + nested_parse_with_titles(self.state, self.result, node) + # or + self.state.nested_parse(self.result, 0, node) + +.. note:: + + ``sphinx.util.docutils.switch_source_input()`` allows to change a target file + during nested_parse. It is useful to mixed contents. For example, ``sphinx. + ext.autodoc`` uses it to parse docstrings:: + + from sphinx.util.docutils import switch_source_input + + # Switch source_input between parsing content. + # Inside this context, all parsing errors and warnings are reported as + # happened in new source_input (in this case, ``self.result``). + with switch_source_input(self.state, self.result): + node = docutils.nodes.paragraph() + self.state.nested_parse(self.result, 0, node) + + .. deprecated:: 1.7 + + Until Sphinx-1.6, ``sphinx.ext.autodoc.AutodocReporter`` is used for this + purpose. For now, it is replaced by ``switch_source_input()``. + +If you don't need the wrapping node, you can use any concrete node type and +return ``node.children`` from the Directive. + + +.. seealso:: + + `Creating directives`_ HOWTO of the Docutils documentation + +.. _Creating directives: http://docutils.sourceforge.net/docs/howto/rst-directives.html diff --git a/sphinx/doc/extdev/nodes.rst b/sphinx/doc/extdev/nodes.rst new file mode 100644 index 0000000..5d8272e --- /dev/null +++ b/sphinx/doc/extdev/nodes.rst @@ -0,0 +1,57 @@ +.. _nodes: + +Doctree node classes added by Sphinx +==================================== + +.. module:: sphinx.addnodes + +Nodes for domain-specific object descriptions +--------------------------------------------- + +.. autoclass:: desc +.. autoclass:: desc_signature +.. autoclass:: desc_signature_line +.. autoclass:: desc_addname +.. autoclass:: desc_type +.. autoclass:: desc_returns +.. autoclass:: desc_name +.. autoclass:: desc_parameterlist +.. autoclass:: desc_parameter +.. autoclass:: desc_optional +.. autoclass:: desc_annotation +.. autoclass:: desc_content + +New admonition-like constructs +------------------------------ + +.. autoclass:: versionmodified +.. autoclass:: seealso + +Other paragraph-level nodes +------------------------------- + +.. autoclass:: compact_paragraph + +New inline nodes +---------------- + +.. autoclass:: index +.. autoclass:: pending_xref +.. autoclass:: literal_emphasis +.. autoclass:: abbreviation +.. autoclass:: download_reference + +Special nodes +------------- + +.. autoclass:: only +.. autoclass:: meta +.. autoclass:: highlightlang + +You should not need to generate the nodes below in extensions. + +.. autoclass:: glossary +.. autoclass:: toctree +.. autoclass:: start_of_file +.. autoclass:: productionlist +.. autoclass:: production diff --git a/sphinx/doc/extdev/parserapi.rst b/sphinx/doc/extdev/parserapi.rst new file mode 100644 index 0000000..0beb517 --- /dev/null +++ b/sphinx/doc/extdev/parserapi.rst @@ -0,0 +1,37 @@ +.. _parser-api: + +Parser API +========== + +`The docutils documentation describes`__ parsers as follows: + + The Parser analyzes the input document and creates a node tree + representation. + +__ http://docutils.sourceforge.net/docs/dev/hacking.html#parsing-the-document + +In Sphinx, the parser modules works as same as docutils. The parsers are +registered to Sphinx by extensions using Application APIs; +:meth:`.Sphinx.add_source_suffix()` and :meth:`.Sphinx.add_source_parser()`. + +The *source suffix* is a mapping from file suffix to file type. For example, +``.rst`` file is mapped to ``'restructuredtext'`` type. Sphinx uses the +file type to looking for parsers from registered list. On searching, +Sphinx refers to the ``Parser.supported`` attribute and picks up a parser +which contains the file type in the attribute. + +The users can override the source suffix mappings using +:confval:`source_suffix` like following:: + + # a mapping from file suffix to file types + source_suffix = { + '.rst': 'restructuredtext', + '.md': 'markdown', + } + +You should indicate file types your parser supports. This will allow users +to configure their settings appropriately. + +.. module:: sphinx.parsers + +.. autoclass:: Parser diff --git a/sphinx/doc/extdev/projectapi.rst b/sphinx/doc/extdev/projectapi.rst new file mode 100644 index 0000000..238aeb4 --- /dev/null +++ b/sphinx/doc/extdev/projectapi.rst @@ -0,0 +1,9 @@ +.. _project-api: + +Project API +=========== + +.. currentmodule:: sphinx.project + +.. autoclass:: Project + :members: diff --git a/sphinx/doc/extdev/utils.rst b/sphinx/doc/extdev/utils.rst new file mode 100644 index 0000000..e842f30 --- /dev/null +++ b/sphinx/doc/extdev/utils.rst @@ -0,0 +1,37 @@ +Utilities +========= + +Sphinx provides utility classes and functions to develop extensions. + +Base classes for components +--------------------------- + +These base classes are useful to allow your extensions to obtain Sphinx +components (e.g. :class:`.Config`, :class:`.BuildEnvironment` and so on) easily. + +.. note:: The subclasses of them might not work with bare docutils because they + are strongly coupled with Sphinx. + +.. autoclass:: sphinx.transforms.SphinxTransform + :members: + +.. autoclass:: sphinx.transforms.post_transforms.SphinxPostTransform + :members: + +.. autoclass:: sphinx.util.docutils.SphinxDirective + :members: + +.. autoclass:: sphinx.util.docutils.SphinxRole + :members: + +.. autoclass:: sphinx.util.docutils.ReferenceRole + :members: + +.. autoclass:: sphinx.transforms.post_transforms.images.ImageConverter + :members: + +Utility components +------------------ + +.. autoclass:: sphinx.events.EventManager + :members: diff --git a/sphinx/doc/faq.rst b/sphinx/doc/faq.rst new file mode 100644 index 0000000..28d14d7 --- /dev/null +++ b/sphinx/doc/faq.rst @@ -0,0 +1,325 @@ +.. _faq: + +Sphinx FAQ +========== + +This is a list of Frequently Asked Questions about Sphinx. Feel free to +suggest new entries! + +How do I... +----------- + +... create PDF files without LaTeX? + `rinohtype`_ provides a PDF builder that can be used as a drop-in + replacement for the LaTeX builder. + + .. _rinohtype: https://github.com/brechtm/rinohtype + +... get section numbers? + They are automatic in LaTeX output; for HTML, give a ``:numbered:`` option to + the :rst:dir:`toctree` directive where you want to start numbering. + +... customize the look of the built HTML files? + Use themes, see :doc:`/usage/theming`. + +... add global substitutions or includes? + Add them in the :confval:`rst_prolog` or :confval:`rst_epilog` config value. + +... display the whole TOC tree in the sidebar? + Use the :data:`toctree` callable in a custom layout template, probably in the + ``sidebartoc`` block. + +... write my own extension? + See the :doc:`/development/tutorials/index`. + +... convert from my existing docs using MoinMoin markup? + The easiest way is to convert to xhtml, then convert `xhtml to reST`_. + You'll still need to mark up classes and such, but the headings and code + examples come through cleanly. + +For many more extensions and other contributed stuff, see the sphinx-contrib_ +repository. + +.. _sphinx-contrib: https://bitbucket.org/birkenfeld/sphinx-contrib/ + +.. _usingwith: + +Using Sphinx with... +-------------------- + +Read the Docs + `Read the Docs `_ is a documentation hosting + service based around Sphinx. They will host sphinx documentation, along + with supporting a number of other features including version support, PDF + generation, and more. The `Getting Started`_ guide is a good place to start. + +Epydoc + There's a third-party extension providing an `api role`_ which refers to + Epydoc's API docs for a given identifier. + +Doxygen + Michael Jones is developing a reST/Sphinx bridge to doxygen called `breathe + `_. + +SCons + Glenn Hutchings has written a SCons build script to build Sphinx + documentation; it is hosted here: https://bitbucket.org/zondo/sphinx-scons + +PyPI + Jannis Leidel wrote a `setuptools command + `_ that automatically + uploads Sphinx documentation to the PyPI package documentation area at + https://pythonhosted.org/. + +GitHub Pages + Please add :py:mod:`sphinx.ext.githubpages` to your project. It allows you + to publish your document in GitHub Pages. It generates helper files for + GitHub Pages on building HTML document automatically. + +MediaWiki + See https://bitbucket.org/kevindunn/sphinx-wiki/wiki/Home, a project by + Kevin Dunn. + +Google Analytics + You can use a custom ``layout.html`` template, like this: + + .. code-block:: html+jinja + + {% extends "!layout.html" %} + + {%- block extrahead %} + {{ super() }} + + {% endblock %} + + {% block footer %} + {{ super() }} + + {% endblock %} + + +Google Search + To replace Sphinx's built-in search function with Google Search, proceed as + follows: + + 1. Go to https://cse.google.com/cse/all to create the Google Search code + snippet. + + 2. Copy the code snippet and paste it into ``_templates/searchbox.html`` in + your Sphinx project: + + .. code-block:: html+jinja + +
    +

    {{ _('Quick search') }}

    + + +
    + + 3. Add ``searchbox.html`` to the :confval:`html_sidebars` configuration value. + +.. _Getting Started: https://docs.readthedocs.io/en/stable/intro/getting-started-with-sphinx.html +.. _api role: https://git.savannah.gnu.org/cgit/kenozooid.git/tree/doc/extapi.py +.. _xhtml to reST: http://docutils.sourceforge.net/sandbox/xhtml2rest/xhtml2rest.py + + +.. _epub-faq: + +Epub info +--------- + +The following list gives some hints for the creation of epub files: + +* Split the text into several files. The longer the individual HTML files are, + the longer it takes the ebook reader to render them. In extreme cases, the + rendering can take up to one minute. + +* Try to minimize the markup. This also pays in rendering time. + +* For some readers you can use embedded or external fonts using the CSS + ``@font-face`` directive. This is *extremely* useful for code listings which + are often cut at the right margin. The default Courier font (or variant) is + quite wide and you can only display up to 60 characters on a line. If you + replace it with a narrower font, you can get more characters on a line. You + may even use `FontForge `_ and create + narrow variants of some free font. In my case I get up to 70 characters on a + line. + + You may have to experiment a little until you get reasonable results. + +* Test the created epubs. You can use several alternatives. The ones I am aware + of are Epubcheck_, Calibre_, FBreader_ (although it does not render the CSS), + and Bookworm_. For Bookworm, you can download the source from + https://code.google.com/archive/p/threepress and run your own local server. + +* Large floating divs are not displayed properly. + If they cover more than one page, the div is only shown on the first page. + In that case you can copy the :file:`epub.css` from the + ``sphinx/themes/epub/static/`` directory to your local ``_static/`` + directory and remove the float settings. + +* Files that are inserted outside of the ``toctree`` directive must be manually + included. This sometimes applies to appendixes, e.g. the glossary or + the indices. You can add them with the :confval:`epub_post_files` option. + +* The handling of the epub cover page differs from the reStructuredText + procedure which automatically resolves image paths and puts the images + into the ``_images`` directory. For the epub cover page put the image in the + :confval:`html_static_path` directory and reference it with its full path in + the :confval:`epub_cover` config option. + +* kindlegen_ command can convert from epub3 resulting file to ``.mobi`` file + for Kindle. You can get ``yourdoc.mobi`` under ``_build/epub`` after the + following command: + + .. code-block:: bash + + $ make epub + $ kindlegen _build/epub/yourdoc.epub + + The kindlegen command doesn't accept documents that have section + titles surrounding ``toctree`` directive: + + .. code-block:: rst + + Section Title + ============= + + .. toctree:: + + subdocument + + Section After Toc Tree + ====================== + + kindlegen assumes all documents order in line, but the resulting document + has complicated order for kindlegen:: + + ``parent.xhtml`` -> ``child.xhtml`` -> ``parent.xhtml`` + + If you get the following error, fix your document structure:: + + Error(prcgen):E24011: TOC section scope is not included in the parent chapter:(title) + Error(prcgen):E24001: The table of content could not be built. + +.. _Epubcheck: https://github.com/IDPF/epubcheck +.. _Calibre: https://calibre-ebook.com/ +.. _FBreader: https://fbreader.org/ +.. _Bookworm: https://www.oreilly.com/bookworm/index.html +.. _kindlegen: https://www.amazon.com/gp/feature.html?docId=1000765211 + +.. _texinfo-faq: + +Texinfo info +------------ + +There are two main programs for reading Info files, ``info`` and GNU Emacs. The +``info`` program has less features but is available in most Unix environments +and can be quickly accessed from the terminal. Emacs provides better font and +color display and supports extensive customization (of course). + +.. _texinfo-links: + +Displaying Links +~~~~~~~~~~~~~~~~ + +One noticeable problem you may encounter with the generated Info files is how +references are displayed. If you read the source of an Info file, a reference +to this section would look like:: + + * note Displaying Links: target-id + +In the stand-alone reader, ``info``, references are displayed just as they +appear in the source. Emacs, on the other-hand, will by default replace +``*note:`` with ``see`` and hide the ``target-id``. For example: + + :ref:`texinfo-links` + +The exact behavior of how Emacs displays references is dependent on the variable +``Info-hide-note-references``. If set to the value of ``hide``, Emacs will hide +both the ``*note:`` part and the ``target-id``. This is generally the best way +to view Sphinx-based documents since they often make frequent use of links and +do not take this limitation into account. However, changing this variable +affects how all Info documents are displayed and most do take this behavior +into account. + +If you want Emacs to display Info files produced by Sphinx using the value +``hide`` for ``Info-hide-note-references`` and the default value for all other +Info files, try adding the following Emacs Lisp code to your start-up file, +``~/.emacs.d/init.el``. + +.. code-block:: elisp + + (defadvice info-insert-file-contents (after + sphinx-info-insert-file-contents + activate) + "Hack to make `Info-hide-note-references' buffer-local and + automatically set to `hide' iff it can be determined that this file + was created from a Texinfo file generated by Docutils or Sphinx." + (set (make-local-variable 'Info-hide-note-references) + (default-value 'Info-hide-note-references)) + (save-excursion + (save-restriction + (widen) (goto-char (point-min)) + (when (re-search-forward + "^Generated by \\(Sphinx\\|Docutils\\)" + (save-excursion (search-forward "\x1f" nil t)) t) + (set (make-local-variable 'Info-hide-note-references) + 'hide))))) + + +Notes +~~~~~ + +The following notes may be helpful if you want to create Texinfo files: + +- Each section corresponds to a different ``node`` in the Info file. + +- Colons (``:``) cannot be properly escaped in menu entries and xrefs. + They will be replaced with semicolons (``;``). + +- Links to external Info files can be created using the somewhat official URI + scheme ``info``. For example:: + + info:Texinfo#makeinfo_options + +- Inline markup + + The standard formatting for ``*strong*`` and ``_emphasis_`` can + result in ambiguous output when used to markup parameter names and + other values. Since this is a fairly common practice, the default + formatting has been changed so that ``emphasis`` and ``strong`` are + now displayed like ```literal'``\s. + + The standard formatting can be re-enabled by adding the following to + your :file:`conf.py`:: + + texinfo_elements = {'preamble': """ + @definfoenclose strong,*,* + @definfoenclose emph,_,_ + """} diff --git a/sphinx/doc/glossary.rst b/sphinx/doc/glossary.rst new file mode 100644 index 0000000..d3367e5 --- /dev/null +++ b/sphinx/doc/glossary.rst @@ -0,0 +1,100 @@ +.. _glossary: + +Glossary +======== + +.. glossary:: + + builder + A class (inheriting from :class:`~sphinx.builders.Builder`) that takes + parsed documents and performs an action on them. Normally, builders + translate the documents to an output format, but it is also possible to + use the builder builders that e.g. check for broken links in the + documentation, or build coverage information. + + See :doc:`/usage/builders/index` for an overview over Sphinx's built-in + builders. + + configuration directory + The directory containing :file:`conf.py`. By default, this is the same as + the :term:`source directory`, but can be set differently with the **-c** + command-line option. + + directive + A reStructuredText markup element that allows marking a block of content + with special meaning. Directives are supplied not only by docutils, but + Sphinx and custom extensions can add their own. The basic directive + syntax looks like this: + + .. sourcecode:: rst + + .. directivename:: argument ... + :option: value + + Content of the directive. + + See :ref:`rst-directives` for more information. + + document name + Since reST source files can have different extensions (some people like + ``.txt``, some like ``.rst`` -- the extension can be configured with + :confval:`source_suffix`) and different OSes have different path + separators, Sphinx abstracts them: :dfn:`document names` are always + relative to the :term:`source directory`, the extension is stripped, and + path separators are converted to slashes. All values, parameters and such + referring to "documents" expect such document names. + + Examples for document names are ``index``, ``library/zipfile``, or + ``reference/datamodel/types``. Note that there is no leading or trailing + slash. + + domain + A domain is a collection of markup (reStructuredText :term:`directive`\ s + and :term:`role`\ s) to describe and link to :term:`object`\ s belonging + together, e.g. elements of a programming language. Directive and role + names in a domain have names like ``domain:name``, e.g. ``py:function``. + + Having domains means that there are no naming problems when one set of + documentation wants to refer to e.g. C++ and Python classes. It also + means that extensions that support the documentation of whole new + languages are much easier to write. + + For more information, refer to :doc:`/usage/restructuredtext/domains`. + + environment + A structure where information about all documents under the root is saved, + and used for cross-referencing. The environment is pickled after the + parsing stage, so that successive runs only need to read and parse new and + changed documents. + + extension + A custom :term:`role`, :term:`directive` or other aspect of Sphinx that + allows users to modify any aspect of the build process within Sphinx. + + For more information, refer to :doc:`/usage/extensions/index`. + + master document + The document that contains the root :rst:dir:`toctree` directive. + + object + The basic building block of Sphinx documentation. Every "object + directive" (e.g. :rst:dir:`function` or :rst:dir:`object`) creates such a + block; and most objects can be cross-referenced to. + + RemoveInSphinxXXXWarning + The feature which is warned will be removed in Sphinx-XXX version. + It usually caused from Sphinx extensions which is using deprecated. + See also :ref:`when-deprecation-warnings-are-displayed`. + + role + A reStructuredText markup element that allows marking a piece of text. + Like directives, roles are extensible. The basic syntax looks like this: + ``:rolename:`content```. See :ref:`rst-inline-markup` for details. + + source directory + The directory which, including its subdirectories, contains all source + files for one Sphinx project. + + reStructuredText + An easy-to-read, what-you-see-is-what-you-get plaintext markup syntax and + parser system. diff --git a/sphinx/doc/intro.rst b/sphinx/doc/intro.rst new file mode 100644 index 0000000..3e684a9 --- /dev/null +++ b/sphinx/doc/intro.rst @@ -0,0 +1,71 @@ +Introduction +============ + +This is the documentation for the Sphinx documentation builder. Sphinx is a +tool that translates a set of reStructuredText_ source files into various output +formats, automatically producing cross-references, indices, etc. That is, if +you have a directory containing a bunch of reST-formatted documents (and +possibly subdirectories of docs in there as well), Sphinx can generate a +nicely-organized arrangement of HTML files (in some other directory) for easy +browsing and navigation. But from the same source, it can also generate a PDF +file using LaTeX. + +The focus is on hand-written documentation, rather than auto-generated API docs. +Though there is support for that kind of documentation as well (which is +intended to be freely mixed with hand-written content), if you need pure API +docs have a look at `Epydoc `_, which also +understands reST. + +For a great "introduction" to writing docs in general -- the whys and hows, see +also `Write the docs`_, written by Eric Holscher. + +.. _rinohtype: https://github.com/brechtm/rinohtype +.. _Write the docs: http://www.writethedocs.org/guide/writing/beginners-guide-to-docs/ + +Conversion from other systems +----------------------------- + +This section is intended to collect helpful hints for those wanting to migrate +to reStructuredText/Sphinx from other documentation systems. + +* Gerard Flanagan has written a script to convert pure HTML to reST; it can be + found at the `Python Package Index `_. + +* For converting the old Python docs to Sphinx, a converter was written which + can be found at `the Python SVN repository + `_. It contains generic + code to convert Python-doc-style LaTeX markup to Sphinx reST. + +* Marcin Wojdyr has written a script to convert Docbook to reST with Sphinx + markup; it is at `GitHub `_. + +* Christophe de Vienne wrote a tool to convert from Open/LibreOffice documents + to Sphinx: `odt2sphinx `_. + +* To convert different markups, `Pandoc `_ is + a very helpful tool. + + +Use with other systems +---------------------- + +See the :ref:`pertinent section in the FAQ list `. + + +Prerequisites +------------- + +Sphinx needs at least **Python 3.5** to run. +It also depends on 3rd party libraries such as docutils_ and jinja2_, but they +are automatically installed when sphinx is installed. + +.. _reStructuredText: http://docutils.sourceforge.net/rst.html +.. _docutils: http://docutils.sourceforge.net/ +.. _Jinja2: http://jinja.pocoo.org/ + + +Usage +----- + +See :doc:`/usage/quickstart` for an introduction. It also contains links to +more advanced sections in this manual for the topics it discusses. diff --git a/sphinx/doc/latex.rst b/sphinx/doc/latex.rst new file mode 100644 index 0000000..59a785c --- /dev/null +++ b/sphinx/doc/latex.rst @@ -0,0 +1,953 @@ +.. highlight:: python + +.. _latex: + +LaTeX customization +=================== + +.. module:: latex + :synopsis: LaTeX specifics. + +.. raw:: latex + + \begingroup + \sphinxsetup{% + verbatimwithframe=false, + VerbatimColor={named}{OldLace}, + TitleColor={named}{DarkGoldenrod}, + hintBorderColor={named}{LightCoral}, + attentionborder=3pt, + attentionBorderColor={named}{Crimson}, + attentionBgColor={named}{FloralWhite}, + noteborder=2pt, + noteBorderColor={named}{Olive}, + cautionborder=3pt, + cautionBorderColor={named}{Cyan}, + cautionBgColor={named}{LightCyan}} + \relax + +The *latex* target does not benefit from prepared themes. + +The :ref:`latex-options`, and particularly among them the +:ref:`latex_elements ` variable +provides much of the interface for customization. + +For some details of the LaTeX/PDF builder command line +invocation, refer to :py:class:`~sphinx.builders.latex.LaTeXBuilder`. + +.. _latex-basic: + +Example +------- + +Keep in mind that backslashes must be doubled in Python string literals to +avoid interpretation as escape sequences, or use raw strings (as is done here). + +:: + + # inside conf.py + latex_engine = 'xelatex' + latex_elements = { + 'fontpkg': r''' + \setmainfont{DejaVu Serif} + \setsansfont{DejaVu Sans} + \setmonofont{DejaVu Sans Mono} + ''', + 'preamble': r''' + \usepackage[titles]{tocloft} + \cftsetpnumwidth {1.25cm}\cftsetrmarg{1.5cm} + \setlength{\cftchapnumwidth}{0.75cm} + \setlength{\cftsecindent}{\cftchapnumwidth} + \setlength{\cftsecnumwidth}{1.25cm} + ''', + 'fncychap': r'\usepackage[Bjornstrup]{fncychap}', + 'printindex': r'\footnotesize\raggedright\printindex', + } + latex_show_urls = 'footnote' + +.. highlight:: latex + +.. _latex_elements_confval: + +The latex_elements configuration setting +---------------------------------------- + +A dictionary that contains LaTeX snippets overriding those Sphinx usually puts +into the generated ``.tex`` files. Its ``'sphinxsetup'`` key is described +:ref:`separately `. + +* Keys that you may want to override include: + + ``'papersize'`` + Paper size option of the document class (``'a4paper'`` or + ``'letterpaper'``), default ``'letterpaper'``. + + ``'pointsize'`` + Point size option of the document class (``'10pt'``, ``'11pt'`` or + ``'12pt'``), default ``'10pt'``. + + ``'pxunit'`` + the value of the ``px`` when used in image attributes ``width`` and + ``height``. The default value is ``'0.75bp'`` which achieves + ``96px=1in`` (in TeX ``1in = 72bp = 72.27pt``.) To obtain for + example ``100px=1in`` use ``'0.01in'`` or ``'0.7227pt'`` (the latter + leads to TeX computing a more precise value, due to the smaller unit + used in the specification); for ``72px=1in``, simply use ``'1bp'``; for + ``90px=1in``, use ``'0.8bp'`` or ``'0.803pt'``. + + .. versionadded:: 1.5 + + ``'passoptionstopackages'`` + A string which will be positioned early in the preamble, designed to + contain ``\\PassOptionsToPackage{options}{foo}`` commands. Default empty. + + .. versionadded:: 1.4 + + ``'babel'`` + "babel" package inclusion, default ``'\\usepackage{babel}'`` (the + suitable document language string is passed as class option, and + ``english`` is used if no language.) For Japanese documents, the + default is the empty string. + + With XeLaTeX and LuaLaTeX, Sphinx configures the LaTeX document to use + `polyglossia`_, but one should be aware that current `babel`_ has + improved its support for Unicode engines in recent years and for some + languages it may make sense to prefer ``babel`` over ``polyglossia``. + + .. hint:: + + After modifiying a core LaTeX key like this one, clean up the LaTeX + build repertory before next PDF build, else left-over auxiliary + files are likely to break the build. + + .. _`polyglossia`: https://ctan.org/pkg/polyglossia + .. _`babel`: https://ctan.org/pkg/babel + + .. versionchanged:: 1.5 + For :confval:`latex_engine` set to ``'xelatex'``, the default + is ``'\\usepackage{polyglossia}\n\\setmainlanguage{}'``. + .. versionchanged:: 1.6 + ``'lualatex'`` uses same default setting as ``'xelatex'`` + .. versionchanged:: 1.7.6 + For French, ``xelatex`` and ``lualatex`` default to using + ``babel``, not ``polyglossia``. + + ``'fontpkg'`` + Font package inclusion, the default is ``'\\usepackage{times}'`` which + uses Times for text, Helvetica for sans serif and Courier for monospace. + + .. versionchanged:: 1.2 + Defaults to ``''`` when the :confval:`language` uses the Cyrillic + script. + .. versionchanged:: 2.0 + Support for individual Greek and Cyrillic letters: + + - In order to support occasional Cyrillic (физика частиц) + or Greek letters (Σωματιδιακή φυσική) in + a document whose language is English or a Latin European + one, the default set-up is enhanced (only for ``'pdflatex'`` + engine) to do: + + .. code-block:: latex + + \substitutefont{LGR}{\rmdefault}{cmr} + \substitutefont{LGR}{\sfdefault}{cmss} + \substitutefont{LGR}{\ttdefault}{cmtt} + \substitutefont{X2}{\rmdefault}{cmr} + \substitutefont{X2}{\sfdefault}{cmss} + \substitutefont{X2}{\ttdefault}{cmtt} + + but this is activated only under the condition that the + ``'fontenc'`` key is configured to load the ``LGR`` (Greek) + and/or ``X2`` (Cyrillic) pdflatex-font encodings (if the + :confval:`language` is set to a Cyrillic language, this + ``'fontpkg'`` key must be used as "times" package has no direct + support for it; then keep only ``LGR`` lines from the above, + if support is needed for Greek in the text). + + The ``\substitutefont`` command is from the eponymous LaTeX + package, which is loaded by Sphinx if needed (on Ubuntu xenial it + is part of ``texlive-latex-extra`` which is a Sphinx + requirement). + + Only if the document actually does contain Unicode Greek letters + (in text) or Cyrillic letters, will the above default set-up + cause additional requirements for the PDF build. On Ubuntu + xenial, ``texlive-lang-greek``, ``texlive-lang-cyrillic``, and + (with the above choice of fonts) the ``cm-super`` (or + ``cm-super-minimal``) package. + + - For ``'xelatex'`` and ``'lualatex'``, the default is to + use the FreeFont family: this OpenType font family + supports both Cyrillic and Greek scripts and is available as + separate Ubuntu xenial package ``fonts-freefont-otf``, it is not + needed to install the big package ``texlive-fonts-extra``. + + - ``'platex'`` (Japanese documents) engine supports individual + Cyrillic and Greek letters with no need of extra user set-up. + + ``'fncychap'`` + Inclusion of the "fncychap" package (which makes fancy chapter titles), + default ``'\\usepackage[Bjarne]{fncychap}'`` for English documentation + (this option is slightly customized by Sphinx), + ``'\\usepackage[Sonny]{fncychap}'`` for internationalized docs (because + the "Bjarne" style uses numbers spelled out in English). Other + "fncychap" styles you can try are "Lenny", "Glenn", "Conny", "Rejne" and + "Bjornstrup". You can also set this to ``''`` to disable fncychap. + + The default is ``''`` for Japanese documents. + + ``'preamble'`` + Additional preamble content, default empty. One may move all needed + macros into some file :file:`mystyle.tex.txt` of the project source + repertory, and get LaTeX to import it at run time:: + + 'preamble': r'\input{mystyle.tex.txt}', + # or, if the \ProvidesPackage LaTeX macro is used in a file mystyle.sty + 'preamble': r'\usepackage{mystyle}', + + It is then needed to set appropriately + :confval:`latex_additional_files`, for example:: + + latex_additional_files = ["mystyle.sty"] + + + ``'figure_align'`` + Latex figure float alignment, default 'htbp' (here, top, bottom, page). + Whenever an image doesn't fit into the current page, it will be + 'floated' into the next page but may be preceded by any other text. + If you don't like this behavior, use 'H' which will disable floating + and position figures strictly in the order they appear in the source. + + .. versionadded:: 1.3 + + ``'atendofbody'`` + Additional document content (right before the indices), default empty. + + .. versionadded:: 1.5 + + ``'extrapackages'`` + Additional LaTeX packages. For example: + + .. code-block:: python + + latex_elements = { + 'packages': r'\usepackage{isodate}' + } + + It defaults to empty. + + The specified LaTeX packages will be loaded before + hyperref package and packages loaded from Sphinx extensions. + + .. hint:: If you'd like to load additional LaTeX packages after hyperref, use + ``'preamble'`` key instead. + + .. versionadded:: 2.3 + + ``'footer'`` + Additional footer content (before the indices), default empty. + + .. deprecated:: 1.5 + Use ``'atendofbody'`` key instead. + +* Keys that don't need to be overridden unless in special cases are: + + ``'extraclassoptions'`` + The default is the empty string. Example: ``'extraclassoptions': + 'openany'`` will allow chapters (for documents of the ``'manual'`` + type) to start on any page. + + .. versionadded:: 1.2 + .. versionchanged:: 1.6 + Added this documentation. + + ``'maxlistdepth'`` + LaTeX allows by default at most 6 levels for nesting list and + quote-like environments, with at most 4 enumerated lists, and 4 bullet + lists. Setting this key for example to ``'10'`` (as a string) will + allow up to 10 nested levels (of all sorts). Leaving it to the empty + string means to obey the LaTeX default. + + .. warning:: + + - Using this key may prove incompatible with some LaTeX packages + or special document classes which do their own list customization. + + - The key setting is silently *ignored* if ``\usepackage{enumitem}`` + is executed inside the document preamble. Use then rather the + dedicated commands of this LaTeX package. + + .. versionadded:: 1.5 + + ``'inputenc'`` + "inputenc" package inclusion, defaults to + ``'\\usepackage[utf8]{inputenc}'`` when using pdflatex. + Otherwise empty. + + .. versionchanged:: 1.4.3 + Previously ``'\\usepackage[utf8]{inputenc}'`` was used for all + compilers. + + ``'cmappkg'`` + "cmap" package inclusion, default ``'\\usepackage{cmap}'``. + + .. versionadded:: 1.2 + + ``'fontenc'`` + "fontenc" package inclusion, defaults to + ``'\\usepackage[T1]{fontenc}'``. + + If ``'pdflatex'`` is the :confval:`latex_engine`, one can add ``LGR`` + for support of Greek letters in the document, and also ``X2`` (or + ``T2A``) for Cyrillic letters, like this: + + .. code-block:: latex + + r'\usepackage[LGR,X2,T1]{fontenc}' + + .. attention:: + + If Greek is main language, do not use this key. Since Sphinx 2.2.1, + ``xelatex`` will be used automatically as :confval:`latex_engine`. + Formerly, Sphinx did not support producing PDF via LaTeX with Greek as + main language. + + Prior to 2.0, Unicode Greek letters were escaped to use LaTeX math + mark-up. This is not the case anymore, and the above must be used + (only in case of ``'pdflatex'`` engine) if the source contains such + Unicode Greek. + + On Ubuntu xenial, packages ``texlive-lang-greek`` and ``cm-super`` + (for the latter, only if the ``'fontpkg'`` setting is left to its + default) are needed for ``LGR`` to work. In place of ``cm-super`` + one can install smaller ``cm-super-minimal``, but it requires the + LaTeX document to execute ``\usepackage[10pt]{type1ec}`` before + loading ``fontenc``. Thus, use this key with this extra at its + start if needed. + + .. versionchanged:: 1.5 + Defaults to ``'\\usepackage{fontspec}'`` when + :confval:`latex_engine` is ``'xelatex'``. + .. versionchanged:: 1.6 + ``'lualatex'`` uses ``fontspec`` per default like ``'xelatex'``. + .. versionchanged:: 2.0 + ``'lualatex'`` executes + ``\defaultfontfeatures[\rmfamily,\sffamily]{}`` to disable TeX + ligatures transforming `<<` and `>>` as escaping working with + ``pdflatex/xelatex`` failed with ``lualatex``. + .. versionchanged:: 2.0 + Detection of ``LGR``, ``T2A``, ``X2`` to trigger support of + occasional Greek or Cyrillic (``'pdflatex'`` only, as this support + is provided natively by ``'platex'`` and only requires suitable + font with ``'xelatex'/'lualatex'``). + .. versionchanged:: 2.3.0 + ``'xelatex'`` also executes + ``\defaultfontfeatures[\rmfamily,\sffamily]{}`` in order to avoid + contractions of ``--`` into en-dash or transforms of straight quotes + into curly ones in PDF (in non-literal text paragraphs) despite + :confval:`smartquotes` being set to ``False``. + + ``'textgreek'`` + The default (``'pdflatex'`` only) is + ``'\\usepackage{textalpha}'``, but only if ``'fontenc'`` was + modified by user to include ``LGR`` option. If not, the key + value will be forced to be the empty string. + + This is needed for ``pdfLaTeX`` to support Unicode input of Greek + letters such as φύσις. Expert users may want to load the ``textalpha`` + package with its option ``normalize-symbols``. + + .. hint:: + + Unicode Greek (but no further Unicode symbols) in :rst:dir:`math` + can be supported by ``'pdflatex'`` from setting this key to + ``r'\usepackage{textalpha,alphabeta}'``. Then ``:math:`α``` (U+03B1) + will render as :math:`\alpha`. For wider Unicode support in math + input, see the discussion of :confval:`latex_engine`. + + With ``'platex'`` (Japanese), ``'xelatex'`` or ``'lualatex'``, this + key is ignored. + + .. versionadded:: 2.0 + ``'geometry'`` + "geometry" package inclusion, the default definition is: + + ``'\\usepackage{geometry}'`` + + with an additional ``[dvipdfm]`` for Japanese documents. + The Sphinx LaTeX style file executes: + + ``\PassOptionsToPackage{hmargin=1in,vmargin=1in,marginpar=0.5in}{geometry}`` + + which can be customized via corresponding :ref:`'sphinxsetup' options + `. + + .. versionadded:: 1.5 + + .. versionchanged:: 1.5.2 + ``dvipdfm`` option if :confval:`latex_engine` is ``'platex'``. + + .. versionadded:: 1.5.3 + The :ref:`'sphinxsetup' keys for the margins + `. + + .. versionchanged:: 1.5.3 + The location in the LaTeX file has been moved to after + ``\usepackage{sphinx}`` and ``\sphinxsetup{..}``, hence also after + insertion of ``'fontpkg'`` key. This is in order to handle the paper + layout options in a special way for Japanese documents: the text + width will be set to an integer multiple of the *zenkaku* width, and + the text height to an integer multiple of the baseline. See the + :ref:`hmargin ` documentation for more. + + ``'hyperref'`` + "hyperref" package inclusion; also loads package "hypcap" and issues + ``\urlstyle{same}``. This is done after :file:`sphinx.sty` file is + loaded and before executing the contents of ``'preamble'`` key. + + .. attention:: + + Loading of packages "hyperref" and "hypcap" is mandatory. + + .. versionadded:: 1.5 + Previously this was done from inside :file:`sphinx.sty`. + + ``'maketitle'`` + "maketitle" call, default ``'\\sphinxmaketitle'``. Override + if you want to generate a differently styled title page. + + .. hint:: + + If the key value is set to + ``r'\newcommand\sphinxbackoftitlepage{}\sphinxmaketitle'``, then ```` will be + typeset on back of title page (``'manual'`` docclass only). + + .. versionchanged:: 1.8.3 + Original ``\maketitle`` from document class is not overwritten, + hence is re-usable as part of some custom setting for this key. + .. versionadded:: 1.8.3 + ``\sphinxbackoftitlepage`` optional macro. It can also be defined + inside ``'preamble'`` key rather than this one. + + ``'releasename'`` + value that prefixes ``'release'`` element on title page, default + ``'Release'``. As for *title* and *author* used in the tuples of + :confval:`latex_documents`, it is inserted as LaTeX markup. + + ``'tableofcontents'`` + "tableofcontents" call, default ``'\\sphinxtableofcontents'`` (it is a + wrapper of unmodified ``\tableofcontents``, which may itself be + customized by user loaded packages.) + Override if + you want to generate a different table of contents or put content + between the title page and the TOC. + + .. versionchanged:: 1.5 + Previously the meaning of ``\tableofcontents`` itself was modified + by Sphinx. This created an incompatibility with dedicated packages + modifying it also such as "tocloft" or "etoc". + + ``'transition'`` + Commands used to display transitions, default + ``'\n\n\\bigskip\\hrule\\bigskip\n\n'``. Override if you want to + display transitions differently. + + .. versionadded:: 1.2 + .. versionchanged:: 1.6 + Remove unneeded ``{}`` after ``\\hrule``. + + ``'printindex'`` + "printindex" call, the last thing in the file, default + ``'\\printindex'``. Override if you want to generate the index + differently or append some content after the index. For example + ``'\\footnotesize\\raggedright\\printindex'`` is advisable when the + index is full of long entries. + + ``'fvset'`` + Customization of ``fancyvrb`` LaTeX package. Sphinx does by default + ``'fvset': '\\fvset{fontsize=\\small}'``, to adjust for the large + character width of the monospace font, used in code-blocks. + You may need to modify this if you use custom fonts. + + .. versionadded:: 1.8 + .. versionchanged:: 2.0 + Due to new default font choice for ``'xelatex'`` and ``'lualatex'`` + (FreeFont), Sphinx does ``\\fvset{fontsize=\\small}`` also with these + engines (and not ``\\fvset{fontsize=auto}``). + +* Keys that are set by other options and therefore should not be overridden + are: + + ``'docclass'`` + ``'classoptions'`` + ``'title'`` + ``'release'`` + ``'author'`` + ``'makeindex'`` + + +.. _latexsphinxsetup: + +\\'sphinxsetup\\' key +--------------------- + +The ``'sphinxsetup'`` key of :ref:`latex_elements ` +provides a LaTeX-type customization interface:: + + latex_elements = { + 'sphinxsetup': 'key1=value1, key2=value2, ...', + } + +It defaults to empty. If non-empty, it will be passed as argument to the +``\sphinxsetup`` macro inside the document preamble, like this:: + + \usepackage{sphinx} + \sphinxsetup{key1=value1, key2=value2,...} + +.. versionadded:: 1.5 + +.. hint:: + + It is possible to insert further uses of the ``\sphinxsetup`` LaTeX macro + directly into the body of the document, via the help of the :rst:dir:`raw` + directive. Here is how this present chapter is styled in the PDF output:: + + .. raw:: latex + + \begingroup + \sphinxsetup{% + verbatimwithframe=false, + VerbatimColor={named}{OldLace}, + TitleColor={named}{DarkGoldenrod}, + hintBorderColor={named}{LightCoral}, + attentionborder=3pt, + attentionBorderColor={named}{Crimson}, + attentionBgColor={named}{FloralWhite}, + noteborder=2pt, + noteBorderColor={named}{Olive}, + cautionborder=3pt, + cautionBorderColor={named}{Cyan}, + cautionBgColor={named}{LightCyan}} + + at the start of the chapter and:: + + .. raw:: latex + + \endgroup + + at its end. + + The colors used in the above are provided by the ``svgnames`` option of the + "xcolor" package:: + + latex_elements = { + 'passoptionstopackages': r'\PassOptionsToPackage{svgnames}{xcolor}', + } + + +LaTeX boolean keys require *lowercase* ``true`` or ``false`` values. +Spaces around the commas and equal signs are ignored, spaces inside LaTeX +macros may be significant. + +.. _latexsphinxsetuphmargin: + +``hmargin, vmargin`` + The dimensions of the horizontal (resp. vertical) margins, passed as + ``hmargin`` (resp. ``vmargin``) option to + the ``geometry`` package. The default is ``1in``, which is equivalent to + ``{1in,1in}``. Example:: + + 'sphinxsetup': 'hmargin={2in,1.5in}, vmargin={1.5in,2in}, marginpar=1in', + + Japanese documents currently accept only the one-dimension format for + these parameters. The ``geometry`` package is then passed suitable options + to get the text width set to an exact multiple of the *zenkaku* width, and + the text height set to an integer multiple of the baselineskip, with the + closest fit for the margins. + + .. hint:: + + For Japanese ``'manual'`` docclass with pointsize ``11pt`` or ``12pt``, + use the ``nomag`` extra document class option (cf. + ``'extraclassoptions'`` key of :confval:`latex_elements`) or so-called + TeX "true" units:: + + 'sphinxsetup': 'hmargin=1.5truein, vmargin=1.5truein, marginpar=5zw', + + .. versionadded:: 1.5.3 + +``marginpar`` + The ``\marginparwidth`` LaTeX dimension, defaults to ``0.5in``. For Japanese + documents, the value is modified to be the closest integer multiple of the + *zenkaku* width. + + .. versionadded:: 1.5.3 + +``verbatimwithframe`` + default ``true``. Boolean to specify if :rst:dir:`code-block`\ s and literal + includes are framed. Setting it to ``false`` does not deactivate use of + package "framed", because it is still in use for the optional background + colour. + +``verbatimwrapslines`` + default ``true``. Tells whether long lines in :rst:dir:`code-block`\ 's + contents should wrap. + +``literalblockcappos`` + default ``t`` for "top". Decides the caption position. Alternative is + ``b`` ("bottom"). + + .. versionadded:: 1.7 + +``verbatimhintsturnover`` + default ``true``. If ``true``, code-blocks display "continued on next + page", "continued from previous page" hints in case of pagebreaks. + + .. versionadded:: 1.6.3 + .. versionchanged:: 1.7 + the default changed from ``false`` to ``true``. + +``verbatimcontinuedalign``, ``verbatimcontinuesalign`` + default ``r``. Horizontal position relative to the framed contents: + either ``l`` (left aligned), ``r`` (right aligned) or ``c`` (centered). + + .. versionadded:: 1.7 + +``parsedliteralwraps`` + default ``true``. Tells whether long lines in :dudir:`parsed-literal`\ 's + contents should wrap. + + .. versionadded:: 1.5.2 + set this option value to ``false`` to recover former behaviour. + +``inlineliteralwraps`` + default ``true``. Allows linebreaks inside inline literals: but extra + potential break-points (additionally to those allowed by LaTeX at spaces + or for hyphenation) are currently inserted only after the characters + ``. , ; ? ! /`` and ``\``. Due to TeX internals, white space in the line + will be stretched (or shrunk) in order to accomodate the linebreak. + + .. versionadded:: 1.5 + set this option value to ``false`` to recover former behaviour. + + .. versionchanged:: 2.3.0 + added potential breakpoint at ``\`` characters. + +``verbatimvisiblespace`` + default ``\textcolor{red}{\textvisiblespace}``. When a long code line is + split, the last space character from the source code line right before the + linebreak location is typeset using this. + +``verbatimcontinued`` + A LaTeX macro inserted at start of continuation code lines. Its + (complicated...) default typesets a small red hook pointing to the right:: + + \makebox[2\fontcharwd\font`\x][r]{\textcolor{red}{\tiny$\hookrightarrow$}} + + .. versionchanged:: 1.5 + The breaking of long code lines was added at 1.4.2. The default + definition of the continuation symbol was changed at 1.5 to accomodate + various font sizes (e.g. code-blocks can be in footnotes). + +``TitleColor`` + default ``{rgb}{0.126,0.263,0.361}``. The colour for titles (as configured + via use of package "titlesec".) + +.. warning:: + + Colours set via ``'sphinxsetup'`` must obey the syntax of the + argument of the ``color/xcolor`` packages ``\definecolor`` command. + +``InnerLinkColor`` + default ``{rgb}{0.208,0.374,0.486}``. A colour passed to ``hyperref`` as + value of ``linkcolor`` and ``citecolor``. + +``OuterLinkColor`` + default ``{rgb}{0.216,0.439,0.388}``. A colour passed to ``hyperref`` as + value of ``filecolor``, ``menucolor``, and ``urlcolor``. + +``VerbatimColor`` + default ``{rgb}{1,1,1}``. The background colour for + :rst:dir:`code-block`\ s. The default is white. + +``VerbatimBorderColor`` + default ``{rgb}{0,0,0}``. The frame color, defaults to black. + +``VerbatimHighlightColor`` + default ``{rgb}{0.878,1,1}``. The color for highlighted lines. + + .. versionadded:: 1.6.6 + +.. note:: + + Starting with this colour key, and for all others coming next, the actual + names declared to "color" or "xcolor" are prefixed with "sphinx". + +``verbatimsep`` + default ``\fboxsep``. The separation between code lines and the frame. + +``verbatimborder`` + default ``\fboxrule``. The width of the frame around + :rst:dir:`code-block`\ s. + +``shadowsep`` + default ``5pt``. The separation between contents and frame for + :dudir:`contents` and :dudir:`topic` boxes. + +``shadowsize`` + default ``4pt``. The width of the lateral "shadow" to the right. + +``shadowrule`` + default ``\fboxrule``. The width of the frame around :dudir:`topic` boxes. + +|notebdcolors| + default ``{rgb}{0,0,0}`` (black). The colour for the two horizontal rules + used by Sphinx in LaTeX for styling a :dudir:`note` type admonition. + +``noteborder``, ``hintborder``, ``importantborder``, ``tipborder`` + default ``0.5pt``. The width of the two horizontal rules. + +.. only:: not latex + + |warningbdcolors| + default ``{rgb}{0,0,0}`` (black). The colour for the admonition frame. + +.. only:: latex + + |wgbdcolorslatex| + default ``{rgb}{0,0,0}`` (black). The colour for the admonition frame. + +|warningbgcolors| + default ``{rgb}{1,1,1}`` (white). The background colours for the respective + admonitions. + +|warningborders| + default ``1pt``. The width of the frame. + +``AtStartFootnote`` + default ``\mbox{ }``. LaTeX macros inserted at the start of the footnote + text at bottom of page, after the footnote number. + +``BeforeFootnote`` + default ``\leavevmode\unskip``. LaTeX macros inserted before the footnote + mark. The default removes possible space before it (else, TeX could insert + a linebreak there). + + .. versionadded:: 1.5 + +``HeaderFamily`` + default ``\sffamily\bfseries``. Sets the font used by headings. + + +.. |notebdcolors| replace:: ``noteBorderColor``, ``hintBorderColor``, + ``importantBorderColor``, ``tipBorderColor`` + +.. |warningbdcolors| replace:: ``warningBorderColor``, ``cautionBorderColor``, + ``attentionBorderColor``, ``dangerBorderColor``, + ``errorBorderColor`` + +.. |wgbdcolorslatex| replace:: ``warningBorderColor``, ``cautionBorderColor``, + ``attentionB..C..``, ``dangerB..C..``, + ``errorB..C..`` + +.. else latex goes into right margin, as it does not hyphenate the names + +.. |warningbgcolors| replace:: ``warningBgColor``, ``cautionBgColor``, + ``attentionBgColor``, ``dangerBgColor``, + ``errorBgColor`` + +.. |warningborders| replace:: ``warningborder``, ``cautionborder``, + ``attentionborder``, ``dangerborder``, + ``errorborder`` + +LaTeX macros and environments +----------------------------- + +Here are some macros from the package file :file:`sphinx.sty` and class files +:file:`sphinxhowto.cls`, :file:`sphinxmanual.cls`, which have public names +thus allowing redefinitions. Check the respective files for the defaults. + +.. _latex-macros: + +Macros +~~~~~~ + +- text styling commands: + + - ``\sphinxstrong``, + - ``\sphinxbfcode``, + - ``\sphinxemail``, + - ``\sphinxtablecontinued``, + - ``\sphinxtitleref``, + - ``\sphinxmenuselection``, + - ``\sphinxaccelerator``, + - ``\sphinxcrossref``, + - ``\sphinxtermref``, + - ``\sphinxoptional``. + + .. versionadded:: 1.4.5 + Use of ``\sphinx`` prefixed macro names to limit possibilities of conflict + with LaTeX packages. +- more text styling: + + - ``\sphinxstyleindexentry``, + - ``\sphinxstyleindexextra``, + - ``\sphinxstyleindexpageref``, + - ``\sphinxstyletopictitle``, + - ``\sphinxstylesidebartitle``, + - ``\sphinxstyleothertitle``, + - ``\sphinxstylesidebarsubtitle``, + - ``\sphinxstyletheadfamily``, + - ``\sphinxstyleemphasis``, + - ``\sphinxstyleliteralemphasis``, + - ``\sphinxstylestrong``, + - ``\sphinxstyleliteralstrong``, + - ``\sphinxstyleabbreviation``, + - ``\sphinxstyleliteralintitle``, + - ``\sphinxstylecodecontinued``, + - ``\sphinxstylecodecontinues``. + + .. versionadded:: 1.5 + these macros were formerly hard-coded as non customizable ``\texttt``, + ``\emph``, etc... + .. versionadded:: 1.6 + ``\sphinxstyletheadfamily`` which defaults to ``\sffamily`` and allows + multiple paragraphs in header cells of tables. + .. versionadded:: 1.6.3 + ``\sphinxstylecodecontinued`` and ``\sphinxstylecodecontinues``. + .. versionadded:: 3.0 + ``\sphinxkeyboard`` +- ``\sphinxtableofcontents``: it is a + wrapper (defined differently in :file:`sphinxhowto.cls` and in + :file:`sphinxmanual.cls`) of standard ``\tableofcontents``. The macro + ``\sphinxtableofcontentshook`` is executed during its expansion right before + ``\tableofcontents`` itself. + + .. versionchanged:: 1.5 + formerly, the meaning of ``\tableofcontents`` was modified by Sphinx. + .. versionchanged:: 2.0 + hard-coded redefinitions of ``\l@section`` and ``\l@subsection`` formerly + done during loading of ``'manual'`` docclass are now executed later via + ``\sphinxtableofcontentshook``. This macro is also executed by the + ``'howto'`` docclass, but defaults to empty with it. +- ``\sphinxmaketitle``: it is defined in the class files + :file:`sphinxmanual.cls` and :file:`sphinxhowto.cls` and is used as + default setting of ``'maketitle'`` :confval:`latex_elements` key. + + .. versionchanged:: 1.8.3 + formerly, ``\maketitle`` from LaTeX document class was modified by + Sphinx. +- ``\sphinxbackoftitlepage``: for ``'manual'`` docclass, and if it is + defined, it gets executed at end of ``\sphinxmaketitle``, before the final + ``\clearpage``. Use either the ``'maketitle'`` key or the ``'preamble'`` key + of :confval:`latex_elements` to add a custom definition of + ``\sphinxbackoftitlepage``. + + .. versionadded:: 1.8.3 +- ``\sphinxcite``: it is a wrapper of standard ``\cite`` for citation + references. + +Environments +~~~~~~~~~~~~ + +- a :dudir:`figure` may have an optional legend with arbitrary body + elements: they are rendered in a ``sphinxlegend`` environment. The default + definition issues ``\small``, and ends with ``\par``. + + .. versionadded:: 1.5.6 + formerly, the ``\small`` was hardcoded in LaTeX writer and the ending + ``\par`` was lacking. +- environments associated with admonitions: + + - ``sphinxnote``, + - ``sphinxhint``, + - ``sphinximportant``, + - ``sphinxtip``, + - ``sphinxwarning``, + - ``sphinxcaution``, + - ``sphinxattention``, + - ``sphinxdanger``, + - ``sphinxerror``. + + They may be ``\renewenvironment`` + 'd individually, and must then be defined with one argument (it is the heading + of the notice, for example ``Warning:`` for :dudir:`warning` directive, if + English is the document language). Their default definitions use either the + *sphinxheavybox* (for the last 5 ones) or the *sphinxlightbox* + environments, configured to use the parameters (colours, border thickness) + specific to each type, which can be set via ``'sphinxsetup'`` string. + + .. versionchanged:: 1.5 + use of public environment names, separate customizability of the + parameters, such as ``noteBorderColor``, ``noteborder``, + ``warningBgColor``, ``warningBorderColor``, ``warningborder``, ... +- the :dudir:`contents` directive (with ``:local:`` option) and the + :dudir:`topic` directive are implemented by environment ``sphinxShadowBox``. + + .. versionadded:: 1.4.2 + former code refactored into an environment allowing page breaks. + .. versionchanged:: 1.5 + options ``shadowsep``, ``shadowsize``, ``shadowrule``. +- the literal blocks (via ``::`` or :rst:dir:`code-block`), are + implemented using ``sphinxVerbatim`` environment which is a wrapper of + ``Verbatim`` environment from package ``fancyvrb.sty``. It adds the handling + of the top caption and the wrapping of long lines, and a frame which allows + pagebreaks. Inside tables the used + environment is ``sphinxVerbatimintable`` (it does not draw a frame, but + allows a caption). + + .. versionchanged:: 1.5 + ``Verbatim`` keeps exact same meaning as in ``fancyvrb.sty`` (also + under the name ``OriginalVerbatim``); ``sphinxVerbatimintable`` is used + inside tables. + .. versionadded:: 1.5 + options ``verbatimwithframe``, ``verbatimwrapslines``, + ``verbatimsep``, ``verbatimborder``. + .. versionadded:: 1.6.6 + support for ``:emphasize-lines:`` option + .. versionadded:: 1.6.6 + easier customizability of the formatting via exposed to user LaTeX macros + such as ``\sphinxVerbatimHighlightLine``. +- the bibliography uses ``sphinxthebibliography`` and the Python Module index + as well as the general index both use ``sphinxtheindex``; these environments + are wrappers of the ``thebibliography`` and respectively ``theindex`` + environments as provided by the document class (or packages). + + .. versionchanged:: 1.5 + formerly, the original environments were modified by Sphinx. + +Miscellany +~~~~~~~~~~ + +- the section, subsection, ... headings are set using *titlesec*'s + ``\titleformat`` command. +- for the ``'manual'`` docclass, the chapter headings can be customized using + *fncychap*'s commands ``\ChNameVar``, ``\ChNumVar``, ``\ChTitleVar``. File + :file:`sphinx.sty` has custom re-definitions in case of *fncychap* + option ``Bjarne``. + + .. versionchanged:: 1.5 + formerly, use of *fncychap* with other styles than ``Bjarne`` was + dysfunctional. + +.. hint:: + + As an experimental feature, Sphinx can use user-defined template file for + LaTeX source if you have a file named ``_templates/latex.tex_t`` in your + project. + + .. versionadded:: 1.5 + currently all template variables are unstable and undocumented. + + Additional files ``longtable.tex_t``, ``tabulary.tex_t`` and + ``tabular.tex_t`` can be added to ``_templates/`` to configure some aspects + of table rendering (such as the caption position). + + .. versionadded:: 1.6 + currently all template variables are unstable and undocumented. + +.. raw:: latex + + \endgroup diff --git a/sphinx/doc/make.bat b/sphinx/doc/make.bat new file mode 100644 index 0000000..4bc6ddb --- /dev/null +++ b/sphinx/doc/make.bat @@ -0,0 +1,32 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=python ../sphinx/cmd/build.py +) +set SOURCEDIR=. +set BUILDDIR=_build + +if "%1" == "" goto help + +%SPHINXBUILD% 2> nul +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% + +:end diff --git a/sphinx/doc/man/index.rst b/sphinx/doc/man/index.rst new file mode 100644 index 0000000..c2ca3f0 --- /dev/null +++ b/sphinx/doc/man/index.rst @@ -0,0 +1,22 @@ +Man Pages +========= + +These are the applications provided as part of Sphinx. + +Core Applications +----------------- + +.. toctree:: + :maxdepth: 3 + + sphinx-quickstart + sphinx-build + +Additional Applications +----------------------- + +.. toctree:: + :maxdepth: 3 + + sphinx-apidoc + sphinx-autogen diff --git a/sphinx/doc/man/sphinx-apidoc.rst b/sphinx/doc/man/sphinx-apidoc.rst new file mode 100644 index 0000000..725d2f1 --- /dev/null +++ b/sphinx/doc/man/sphinx-apidoc.rst @@ -0,0 +1,171 @@ +sphinx-apidoc +============= + +Synopsis +-------- + +**sphinx-apidoc** [*OPTIONS*] -o <*OUTPUT_PATH*> <*MODULE_PATH*> +[*EXCLUDE_PATTERN* ...] + +Description +----------- + +:program:`sphinx-apidoc` is a tool for automatic generation of Sphinx sources +that, using the :rst:dir:`autodoc` extension, document a whole package in the +style of other automatic API documentation tools. + +*MODULE_PATH* is the path to a Python package to document, and *OUTPUT_PATH* is +the directory where the generated sources are placed. Any *EXCLUDE_PATTERN*\s +given are `fnmatch-style`_ file and/or directory patterns that will be excluded +from generation. + +.. _fnmatch-style: https://docs.python.org/3/library/fnmatch.html + +.. warning:: + + ``sphinx-apidoc`` generates source files that use :mod:`sphinx.ext.autodoc` + to document all found modules. If any modules have side effects on import, + these will be executed by ``autodoc`` when ``sphinx-build`` is run. + + If you document scripts (as opposed to library modules), make sure their main + routine is protected by a ``if __name__ == '__main__'`` condition. + +Options +------- + +.. program:: sphinx-apidoc + +.. option:: -o + + Directory to place the output files. If it does not exist, it is created. + +.. option:: -q + + Do not output anything on standard output, only write warnings and errors to + standard error. + +.. option:: -f, --force + + Force overwriting of any existing generated files. + +.. option:: -l, --follow-links + + Follow symbolic links. + +.. option:: -n, --dry-run + + Do not create any files. + +.. option:: -s + + Suffix for the source files generated. Defaults to ``rst``. + +.. option:: -d + + Maximum depth for the generated table of contents file. + +.. option:: --tocfile + + Filename for a table of contents file. Defaults to ``modules``. + +.. option:: -T, --no-toc + + Do not create a table of contents file. Ignored when :option:`--full` is + provided. + +.. option:: -F, --full + + Generate a full Sphinx project (``conf.py``, ``Makefile`` etc.) using + the same mechanism as :program:`sphinx-quickstart`. + +.. option:: -e, --separate + + Put documentation for each module on its own page. + + .. versionadded:: 1.2 + +.. option:: -E, --no-headings + + Do not create headings for the modules/packages. This is useful, for + example, when docstrings already contain headings. + +.. option:: -P, --private + + Include "_private" modules. + + .. versionadded:: 1.2 + +.. option:: --implicit-namespaces + + By default sphinx-apidoc processes sys.path searching for modules only. + Python 3.3 introduced :pep:`420` implicit namespaces that allow module path + structures such as ``foo/bar/module.py`` or ``foo/bar/baz/__init__.py`` + (notice that ``bar`` and ``foo`` are namespaces, not modules). + + Interpret paths recursively according to PEP-0420. + +.. option:: -M, --module-first + + Put module documentation before submodule documentation. + +These options are used when :option:`--full` is specified: + +.. option:: -a + + Append module_path to sys.path. + +.. option:: -H + + Sets the project name to put in generated files (see :confval:`project`). + +.. option:: -A + + Sets the author name(s) to put in generated files (see + :confval:`copyright`). + +.. option:: -V + + Sets the project version to put in generated files (see :confval:`version`). + +.. option:: -R + + Sets the project release to put in generated files (see :confval:`release`). + +.. rubric:: Project templating + +.. versionadded:: 2.2 + Project templating options for sphinx-apidoc + +.. option:: -t, --templatedir=TEMPLATEDIR + + Template directory for template files. You can modify the templates of + sphinx project files generated by apidoc. Following Jinja2 template + files are allowed: + + * ``module.rst_t`` + * ``package.rst_t`` + * ``toc.rst_t`` + * ``master_doc.rst_t`` + * ``conf.py_t`` + * ``Makefile_t`` + * ``Makefile.new_t`` + * ``make.bat_t`` + * ``make.bat.new_t`` + + In detail, please refer the system template files Sphinx provides. + (``sphinx/templates/apidoc`` and ``sphinx/templates/quickstart``) + +Environment +----------- + +.. envvar:: SPHINX_APIDOC_OPTIONS + + A comma-separated list of option to append to generated ``automodule`` + directives. Defaults to ``members,undoc-members,show-inheritance``. + +See also +-------- + +:manpage:`sphinx-build(1)`, :manpage:`sphinx-autogen(1)` + +.. _fnmatch: https://docs.python.org/3/library/fnmatch.html diff --git a/sphinx/doc/man/sphinx-autogen.rst b/sphinx/doc/man/sphinx-autogen.rst new file mode 100644 index 0000000..18ae8d1 --- /dev/null +++ b/sphinx/doc/man/sphinx-autogen.rst @@ -0,0 +1,93 @@ +sphinx-autogen +============== + +Synopsis +-------- + +**sphinx-autogen** [*options*] ... + +Description +----------- + +:program:`sphinx-autogen` is a tool for automatic generation of Sphinx sources +that, using the :rst:dir:`autodoc` extension, document items included in +:rst:dir:`autosummary` listing(s). + +*sourcefile* is the path to one or more reStructuredText documents containing +:rst:dir:`autosummary` entries with the ``:toctree::`` option set. *sourcefile* +can be an :py:mod:`fnmatch`-style pattern. + +Options +------- + +.. program:: sphinx-autogen + +.. option:: -o + + Directory to place the output file. If it does not exist, it is created. + Defaults to the value passed to the ``:toctree:`` option. + +.. option:: -s , --suffix + + Default suffix to use for generated files. Defaults to ``rst``. + +.. option:: -t , --templates + + Custom template directory. Defaults to ``None``. + +.. option:: -i, --imported-members + + Document imported members. + +Example +------- + +Given the following directory structure:: + + docs + ├── index.rst + └── ... + foobar + ├── foo + │ └── __init__.py + └── bar + ├── __init__.py + └── baz + └── __init__.py + +and assuming ``docs/index.rst`` contained the following: + +.. code-block:: rst + + Modules + ======= + + .. autosummary:: + :toctree: modules + + foobar.foo + foobar.bar + foobar.bar.baz + +If you run the following: + +.. code-block:: bash + + $ PYTHONPATH=. sphinx-autogen docs/index.rst + +then the following stub files will be created in ``docs``:: + + docs + ├── index.rst + └── modules + ├── foobar.bar.rst + ├── foobar.bar.baz.rst + └── foobar.foo.rst + +and each of those files will contain a :rst:dir:`autodoc` directive and some +other information. + +See also +-------- + +:manpage:`sphinx-build(1)`, :manpage:`sphinx-apidoc(1)` diff --git a/sphinx/doc/man/sphinx-build.rst b/sphinx/doc/man/sphinx-build.rst new file mode 100644 index 0000000..1ef0e07 --- /dev/null +++ b/sphinx/doc/man/sphinx-build.rst @@ -0,0 +1,328 @@ +sphinx-build +============ + +Synopsis +-------- + +**sphinx-build** [*options*] <*sourcedir*> <*outputdir*> [*filenames* ...] + +Description +----------- + +:program:`sphinx-build` generates documentation from the files in +```` and places it in the ````. + +:program:`sphinx-build` looks for ``/conf.py`` for the configuration +settings. :manpage:`sphinx-quickstart(1)` may be used to generate template +files, including ``conf.py``. + +:program:`sphinx-build` can create documentation in different formats. A +format is selected by specifying the builder name on the command line; it +defaults to HTML. Builders can also perform other tasks related to +documentation processing. + +By default, everything that is outdated is built. Output only for selected +files can be built by specifying individual filenames. + +For a list of available options, refer to :option:`sphinx-build -b`. + +Options +------- + +.. program:: sphinx-build + +.. option:: -b buildername + + The most important option: it selects a builder. The most common builders + are: + + **html** + Build HTML pages. This is the default builder. + + **dirhtml** + Build HTML pages, but with a single directory per document. Makes for + prettier URLs (no ``.html``) if served from a webserver. + + **singlehtml** + Build a single HTML with the whole content. + + **htmlhelp**, **qthelp**, **devhelp**, **epub** + Build HTML files with additional information for building a documentation + collection in one of these formats. + + **applehelp** + Build an Apple Help Book. Requires :program:`hiutil` and + :program:`codesign`, which are not Open Source and presently only + available on Mac OS X 10.6 and higher. + + **latex** + Build LaTeX sources that can be compiled to a PDF document using + :program:`pdflatex`. + + **man** + Build manual pages in groff format for UNIX systems. + + **texinfo** + Build Texinfo files that can be processed into Info files using + :program:`makeinfo`. + + **text** + Build plain text files. + + **gettext** + Build gettext-style message catalogs (``.pot`` files). + + **doctest** + Run all doctests in the documentation, if the :mod:`~sphinx.ext.doctest` + extension is enabled. + + **linkcheck** + Check the integrity of all external links. + + **xml** + Build Docutils-native XML files. + + **pseudoxml** + Build compact pretty-printed "pseudo-XML" files displaying the + internal structure of the intermediate document trees. + + See :doc:`/usage/builders/index` for a list of all builders shipped with + Sphinx. Extensions can add their own builders. + +.. _make_mode: + +.. option:: -M buildername + + Alternative to :option:`-b`. Uses the Sphinx :program:`make_mode` module, + which provides the same build functionality as a default :ref:`Makefile or + Make.bat `. In addition to all Sphinx + :doc:`/usage/builders/index`, the following build pipelines are available: + + **latexpdf** + Build LaTeX files and run them through :program:`pdflatex`, or as per + :confval:`latex_engine` setting. + If :confval:`language` is set to ``'ja'``, will use automatically + the :program:`platex/dvipdfmx` latex to PDF pipeline. + + **info** + Build Texinfo files and run them through :program:`makeinfo`. + + .. important:: + Sphinx only recognizes the ``-M`` option if it is placed first. + + .. versionadded:: 1.2.1 + +.. option:: -a + + If given, always write all output files. The default is to only write output + files for new and changed source files. (This may not apply to all + builders.) + +.. option:: -E + + Don't use a saved :term:`environment` (the structure caching all + cross-references), but rebuild it completely. The default is to only read + and parse source files that are new or have changed since the last run. + +.. option:: -t tag + + Define the tag *tag*. This is relevant for :rst:dir:`only` directives that + only include their content if this tag is set. + + .. versionadded:: 0.6 + +.. option:: -d path + + Since Sphinx has to read and parse all source files before it can write an + output file, the parsed source files are cached as "doctree pickles". + Normally, these files are put in a directory called :file:`.doctrees` under + the build directory; with this option you can select a different cache + directory (the doctrees can be shared between all builders). + +.. option:: -j N + + Distribute the build over *N* processes in parallel, to make building on + multiprocessor machines more effective. Note that not all parts and not all + builders of Sphinx can be parallelized. If ``auto`` argument is given, + Sphinx uses the number of CPUs as *N*. + + .. versionadded:: 1.2 + This option should be considered *experimental*. + + .. versionchanged:: 1.7 + Support ``auto`` argument. + +.. option:: -c path + + Don't look for the :file:`conf.py` in the source directory, but use the given + configuration directory instead. Note that various other files and paths + given by configuration values are expected to be relative to the + configuration directory, so they will have to be present at this location + too. + + .. versionadded:: 0.3 + +.. option:: -C + + Don't look for a configuration file; only take options via the ``-D`` option. + + .. versionadded:: 0.5 + +.. option:: -D setting=value + + Override a configuration value set in the :file:`conf.py` file. The value + must be a number, string, list or dictionary value. + + For lists, you can separate elements with a comma like this: ``-D + html_theme_path=path1,path2``. + + For dictionary values, supply the setting name and key like this: + ``-D latex_elements.docclass=scrartcl``. + + For boolean values, use ``0`` or ``1`` as the value. + + .. versionchanged:: 0.6 + The value can now be a dictionary value. + + .. versionchanged:: 1.3 + The value can now also be a list value. + +.. option:: -A name=value + + Make the *name* assigned to *value* in the HTML templates. + + .. versionadded:: 0.5 + +.. option:: -n + + Run in nit-picky mode. Currently, this generates warnings for all missing + references. See the config value :confval:`nitpick_ignore` for a way to + exclude some references as "known missing". + +.. option:: -N + + Do not emit colored output. + +.. option:: -v + + Increase verbosity (loglevel). This option can be given up to three times + to get more debug logging output. It implies :option:`-T`. + + .. versionadded:: 1.2 + +.. option:: -q + + Do not output anything on standard output, only write warnings and errors to + standard error. + +.. option:: -Q + + Do not output anything on standard output, also suppress warnings. Only + errors are written to standard error. + +.. option:: -w file + + Write warnings (and errors) to the given file, in addition to standard error. + +.. option:: -W + + Turn warnings into errors. This means that the build stops at the first + warning and ``sphinx-build`` exits with exit status 1. + +.. option:: --keep-going + + With -W option, keep going processing when getting warnings to the end + of build, and ``sphinx-build`` exits with exit status 1. + + .. versionadded:: 1.8 + +.. option:: -T + + Display the full traceback when an unhandled exception occurs. Otherwise, + only a summary is displayed and the traceback information is saved to a file + for further analysis. + + .. versionadded:: 1.2 + +.. option:: -P + + (Useful for debugging only.) Run the Python debugger, :mod:`pdb`, if an + unhandled exception occurs while building. + +.. option:: -h, --help, --version + + Display usage summary or Sphinx version. + + .. versionadded:: 1.2 + +You can also give one or more filenames on the command line after the source +and build directories. Sphinx will then try to build only these output files +(and their dependencies). + +Environment Variables +--------------------- + +The :program:`sphinx-build` refers following environment variables: + +.. describe:: MAKE + + A path to make command. A command name is also allowed. + :program:`sphinx-build` uses it to invoke sub-build process on make-mode. + +.. _makefile_options: + +.. rubric:: Makefile Options + +The :file:`Makefile` and :file:`make.bat` files created by +:program:`sphinx-quickstart` usually run :program:`sphinx-build` only with the +:option:`-b` and :option:`-d` options. However, they support the following +variables to customize behavior: + +.. describe:: PAPER + + This sets the ``'papersize'`` key of :confval:`latex_elements`: + i.e. ``PAPER=a4`` sets it to ``'a4paper'`` and ``PAPER=letter`` to + ``'letterpaper'``. + + .. note:: + + Usage of this environment variable got broken at Sphinx 1.5 as + ``a4`` or ``letter`` ended up as option to LaTeX document in + place of the needed ``a4paper``, resp. ``letterpaper``. Fixed at + 1.7.7. + +.. describe:: SPHINXBUILD + + The command to use instead of ``sphinx-build``. + +.. describe:: BUILDDIR + + The build directory to use instead of the one chosen in + :program:`sphinx-quickstart`. + +.. describe:: SPHINXOPTS + + Additional options for :program:`sphinx-build`. These options can + also be set via the shortcut variable **O** (capital 'o'). + +.. _when-deprecation-warnings-are-displayed: + +Deprecation Warnings +-------------------- + +If any deprecation warning like ``RemovedInSphinxXXXWarning`` are displayed +when building a user's document, some Sphinx extension is using deprecated +features. In that case, please report it to author of the extension. + +To disable the deprecation warnings, please set ``PYTHONWARNINGS=`` environment +variable to your environment. For example: + +* ``PYTHONWARNINGS= make html`` (Linux/Mac) +* ``export PYTHONWARNINGS=`` and do ``make html`` (Linux/Mac) +* ``set PYTHONWARNINGS=`` and do ``make html`` (Windows) +* modify your Makefile/make.bat and set the environment variable + +See also +-------- + +:manpage:`sphinx-quickstart(1)` diff --git a/sphinx/doc/man/sphinx-quickstart.rst b/sphinx/doc/man/sphinx-quickstart.rst new file mode 100644 index 0000000..7da16ed --- /dev/null +++ b/sphinx/doc/man/sphinx-quickstart.rst @@ -0,0 +1,165 @@ +sphinx-quickstart +================= + +Synopsis +-------- + +**sphinx-quickstart** + +Description +----------- + +:program:`sphinx-quickstart` is an interactive tool that asks some questions +about your project and then generates a complete documentation directory and +sample Makefile to be used with :manpage:`sphinx-build(1)`. + +Options +------- + +.. program:: sphinx-quickstart + +.. option:: -q, --quiet + + Quiet mode that will skip interactive wizard to specify options. + This option requires `-p`, `-a` and `-v` options. + +.. option:: -h, --help, --version + + Display usage summary or Sphinx version. + +.. rubric:: Structure Options + +.. option:: --sep + + If specified, separate source and build directories. + +.. option:: --dot=DOT + + Inside the root directory, two more directories will be created; + "_templates" for custom HTML templates and "_static" for custom stylesheets + and other static files. You can enter another prefix (such as ".") to + replace the underscore. + +.. rubric:: Project Basic Options + +.. option:: -p PROJECT, --project=PROJECT + + Project name will be set. (see :confval:`project`). + +.. option:: -a AUTHOR, --author=AUTHOR + + Author names. (see :confval:`copyright`). + +.. option:: -v VERSION + + Version of project. (see :confval:`version`). + +.. option:: -r RELEASE, --release=RELEASE + + Release of project. (see :confval:`release`). + +.. option:: -l LANGUAGE, --language=LANGUAGE + + Document language. (see :confval:`language`). + +.. option:: --suffix=SUFFIX + + Source file suffix. (see :confval:`source_suffix`). + +.. option:: --master=MASTER + + Master document name. (see :confval:`master_doc`). + +.. rubric:: Extension Options + +.. option:: --ext-autodoc + + Enable `sphinx.ext.autodoc` extension. + +.. option:: --ext-doctest + + Enable `sphinx.ext.doctest` extension. + +.. option:: --ext-intersphinx + + Enable `sphinx.ext.intersphinx` extension. + +.. option:: --ext-todo + + Enable `sphinx.ext.todo` extension. + +.. option:: --ext-coverage + + Enable `sphinx.ext.coverage` extension. + +.. option:: --ext-imgmath + + Enable `sphinx.ext.imgmath` extension. + +.. option:: --ext-mathjax + + Enable `sphinx.ext.mathjax` extension. + +.. option:: --ext-ifconfig + + Enable `sphinx.ext.ifconfig` extension. + +.. option:: --ext-viewcode + + Enable `sphinx.ext.viewcode` extension. + +.. option:: --ext-githubpages + + Enable `sphinx.ext.githubpages` extension. + +.. option:: --extensions=EXTENSIONS + + Enable arbitrary extensions. + +.. rubric:: Makefile and Batchfile Creation Options + +.. option:: --use-make-mode (-m), --no-use-make-mode (-M) + + :file:`Makefile/make.bat` uses (or doesn't use) :ref:`make-mode `. + Default is ``use``, which generates a more concise :file:`Makefile/make.bat`. + + .. versionchanged:: 1.5 + make-mode is default. + +.. option:: --makefile, --no-makefile + + Create (or not create) makefile. + +.. option:: --batchfile, --no-batchfile + + Create (or not create) batchfile + +.. rubric:: Project templating + +.. versionadded:: 1.5 + Project templating options for sphinx-quickstart + +.. option:: -t, --templatedir=TEMPLATEDIR + + Template directory for template files. You can modify the templates of + sphinx project files generated by quickstart. Following Jinja2 template + files are allowed: + + * ``master_doc.rst_t`` + * ``conf.py_t`` + * ``Makefile_t`` + * ``Makefile.new_t`` + * ``make.bat_t`` + * ``make.bat.new_t`` + + In detail, please refer the system template files Sphinx provides. + (``sphinx/templates/quickstart``) + +.. option:: -d NAME=VALUE + + Define a template variable + +See also +-------- + +:manpage:`sphinx-build(1)` diff --git a/sphinx/doc/templating.rst b/sphinx/doc/templating.rst new file mode 100644 index 0000000..1f4bef9 --- /dev/null +++ b/sphinx/doc/templating.rst @@ -0,0 +1,437 @@ +.. highlight:: html+jinja + +.. _templating: + +Templating +========== + +Sphinx uses the `Jinja `_ templating engine for its HTML +templates. Jinja is a text-based engine, and inspired by Django templates, so +anyone having used Django will already be familiar with it. It also has +excellent documentation for those who need to make themselves familiar with it. + + +Do I need to use Sphinx's templates to produce HTML? +---------------------------------------------------- + +No. You have several other options: + +* You can write a :class:`~sphinx.application.TemplateBridge` subclass that + calls your template engine of choice, and set the :confval:`template_bridge` + configuration value accordingly. + +* You can :ref:`write a custom builder ` that derives from + :class:`~sphinx.builders.html.StandaloneHTMLBuilder` and calls your template + engine of choice. + +* You can use the :class:`~sphinx.builders.html.PickleHTMLBuilder` that produces + pickle files with the page contents, and postprocess them using a custom tool, + or use them in your Web application. + + +Jinja/Sphinx Templating Primer +------------------------------ + +The default templating language in Sphinx is Jinja. It's Django/Smarty inspired +and easy to understand. The most important concept in Jinja is :dfn:`template +inheritance`, which means that you can overwrite only specific blocks within a +template, customizing it while also keeping the changes at a minimum. + +To customize the output of your documentation you can override all the templates +(both the layout templates and the child templates) by adding files with the +same name as the original filename into the template directory of the structure +the Sphinx quickstart generated for you. + +Sphinx will look for templates in the folders of :confval:`templates_path` +first, and if it can't find the template it's looking for there, it falls back +to the selected theme's templates. + +A template contains **variables**, which are replaced with values when the +template is evaluated, **tags**, which control the logic of the template and +**blocks** which are used for template inheritance. + +Sphinx's *basic* theme provides base templates with a couple of blocks it will +fill with data. These are located in the :file:`themes/basic` subdirectory of +the Sphinx installation directory, and used by all builtin Sphinx themes. +Templates with the same name in the :confval:`templates_path` override templates +supplied by the selected theme. + +For example, to add a new link to the template area containing related links all +you have to do is to add a new template called ``layout.html`` with the +following contents:: + + {% extends "!layout.html" %} + {% block rootrellink %} +
  • Project Homepage »
  • + {{ super() }} + {% endblock %} + +By prefixing the name of the overridden template with an exclamation mark, +Sphinx will load the layout template from the underlying HTML theme. + +**Important**: If you override a block, call ``{{ super() }}`` somewhere to +render the block's original content in the extended template -- unless you +don't want that content to show up. + + +Working with the builtin templates +---------------------------------- + +The builtin **basic** theme supplies the templates that all builtin Sphinx +themes are based on. It has the following elements you can override or use: + +Blocks +~~~~~~ + +The following blocks exist in the ``layout.html`` template: + +`doctype` + The doctype of the output format. By default this is XHTML 1.0 Transitional + as this is the closest to what Sphinx and Docutils generate and it's a good + idea not to change it unless you want to switch to HTML 5 or a different but + compatible XHTML doctype. + +`linktags` + This block adds a couple of ```` tags to the head section of the + template. + +`extrahead` + This block is empty by default and can be used to add extra contents into + the ```` tag of the generated HTML file. This is the right place to + add references to JavaScript or extra CSS files. + +`relbar1` / `relbar2` + This block contains the *relation bar*, the list of related links (the + parent documents on the left, and the links to index, modules etc. on the + right). `relbar1` appears before the document, `relbar2` after the + document. By default, both blocks are filled; to show the relbar only + before the document, you would override `relbar2` like this:: + + {% block relbar2 %}{% endblock %} + +`rootrellink` / `relbaritems` + Inside the relbar there are three sections: The `rootrellink`, the links + from the documentation and the custom `relbaritems`. The `rootrellink` is a + block that by default contains a list item pointing to the master document + by default, the `relbaritems` is an empty block. If you override them to + add extra links into the bar make sure that they are list items and end with + the :data:`reldelim1`. + +`document` + The contents of the document itself. It contains the block "body" where the + individual content is put by subtemplates like ``page.html``. + + .. note:: + In order for the built-in JavaScript search to show a page preview on + the results page, the document or body content should be wrapped in an + HTML element containing the ``role="main"`` attribute. For example: + + .. sourcecode:: html+jinja + +
    + {% block document %}{% endblock %} +
    + +`sidebar1` / `sidebar2` + A possible location for a sidebar. `sidebar1` appears before the document + and is empty by default, `sidebar2` after the document and contains the + default sidebar. If you want to swap the sidebar location override this and + call the `sidebar` helper: + + .. sourcecode:: html+jinja + + {% block sidebar1 %}{{ sidebar() }}{% endblock %} + {% block sidebar2 %}{% endblock %} + + (The `sidebar2` location for the sidebar is needed by the ``sphinxdoc.css`` + stylesheet, for example.) + +`sidebarlogo` + The logo location within the sidebar. Override this if you want to place + some content at the top of the sidebar. + +`footer` + The block for the footer div. If you want a custom footer or markup before + or after it, override this one. + +The following four blocks are *only* used for pages that do not have assigned a +list of custom sidebars in the :confval:`html_sidebars` config value. Their use +is deprecated in favor of separate sidebar templates, which can be included via +:confval:`html_sidebars`. + +`sidebartoc` + The table of contents within the sidebar. + + .. deprecated:: 1.0 + +`sidebarrel` + The relation links (previous, next document) within the sidebar. + + .. deprecated:: 1.0 + +`sidebarsourcelink` + The "Show source" link within the sidebar (normally only shown if this is + enabled by :confval:`html_show_sourcelink`). + + .. deprecated:: 1.0 + +`sidebarsearch` + The search box within the sidebar. Override this if you want to place some + content at the bottom of the sidebar. + + .. deprecated:: 1.0 + + +Configuration Variables +~~~~~~~~~~~~~~~~~~~~~~~ + +Inside templates you can set a couple of variables used by the layout template +using the ``{% set %}`` tag: + +.. data:: reldelim1 + + The delimiter for the items on the left side of the related bar. This + defaults to ``' »'`` Each item in the related bar ends with the value + of this variable. + +.. data:: reldelim2 + + The delimiter for the items on the right side of the related bar. This + defaults to ``' |'``. Each item except of the last one in the related bar + ends with the value of this variable. + +Overriding works like this:: + + {% extends "!layout.html" %} + {% set reldelim1 = ' >' %} + +.. data:: script_files + + Add additional script files here, like this:: + + {% set script_files = script_files + ["_static/myscript.js"] %} + + .. deprecated:: 1.8.0 + + Please use ``.Sphinx.add_js_file()`` instead. + +Helper Functions +~~~~~~~~~~~~~~~~ + +Sphinx provides various Jinja functions as helpers in the template. You can use +them to generate links or output multiply used elements. + +.. function:: pathto(document) + + Return the path to a Sphinx document as a URL. Use this to refer to built + documents. + +.. function:: pathto(file, 1) + :noindex: + + Return the path to a *file* which is a filename relative to the root of the + generated output. Use this to refer to static files. + +.. function:: hasdoc(document) + + Check if a document with the name *document* exists. + +.. function:: sidebar() + + Return the rendered sidebar. + +.. function:: relbar() + + Return the rendered relation bar. + +.. function:: warning(message) + + Emit a warning message. + +Global Variables +~~~~~~~~~~~~~~~~ + +These global variables are available in every template and are safe to use. +There are more, but most of them are an implementation detail and might change +in the future. + +.. data:: builder + + The name of the builder (e.g. ``html`` or ``htmlhelp``). + +.. data:: copyright + + The value of :confval:`copyright`. + +.. data:: docstitle + + The title of the documentation (the value of :confval:`html_title`), except + when the "single-file" builder is used, when it is set to ``None``. + +.. data:: embedded + + True if the built HTML is meant to be embedded in some viewing application + that handles navigation, not the web browser, such as for HTML help or Qt + help formats. In this case, the sidebar is not included. + +.. data:: favicon + + The path to the HTML favicon in the static path, or ``''``. + +.. data:: file_suffix + + The value of the builder's :attr:`~.SerializingHTMLBuilder.out_suffix` + attribute, i.e. the file name extension that the output files will get. For + a standard HTML builder, this is usually ``.html``. + +.. data:: has_source + + True if the reST document sources are copied (if :confval:`html_copy_source` + is ``True``). + +.. data:: language + + The value of :confval:`language`. + +.. data:: last_updated + + The build date. + +.. data:: logo + + The path to the HTML logo image in the static path, or ``''``. + +.. data:: master_doc + + The value of :confval:`master_doc`, for usage with :func:`pathto`. + +.. data:: pagename + + The "page name" of the current file, i.e. either the document name if the + file is generated from a reST source, or the equivalent hierarchical name + relative to the output directory + (``[directory/]filename_without_extension``). + +.. data:: project + + The value of :confval:`project`. + +.. data:: release + + The value of :confval:`release`. + +.. data:: rellinks + + A list of links to put at the left side of the relbar, next to "next" and + "prev". This usually contains links to the general index and other indices, + such as the Python module index. If you add something yourself, it must be a + tuple ``(pagename, link title, accesskey, link text)``. + +.. data:: shorttitle + + The value of :confval:`html_short_title`. + +.. data:: show_source + + True if :confval:`html_show_sourcelink` is ``True``. + +.. data:: sphinx_version + + The version of Sphinx used to build. + +.. data:: style + + The name of the main stylesheet, as given by the theme or + :confval:`html_style`. + +.. data:: title + + The title of the current document, as used in the ```` tag. + +.. data:: use_opensearch + + The value of :confval:`html_use_opensearch`. + +.. data:: version + + The value of :confval:`version`. + + +In addition to these values, there are also all **theme options** available +(prefixed by ``theme_``), as well as the values given by the user in +:confval:`html_context`. + +In documents that are created from source files (as opposed to +automatically-generated files like the module index, or documents that already +are in HTML form), these variables are also available: + +.. data:: body + + A string containing the content of the page in HTML form as produced by the + HTML builder, before the theme is applied. + +.. data:: display_toc + + A boolean that is True if the toc contains more than one entry. + +.. data:: meta + + Document metadata (a dictionary), see :ref:`metadata`. + +.. data:: metatags + + A string containing the page's HTML :dudir:`meta` tags. + +.. data:: next + + The next document for the navigation. This variable is either false or has + two attributes `link` and `title`. The title contains HTML markup. For + example, to generate a link to the next page, you can use this snippet:: + + {% if next %} + <a href="{{ next.link|e }}">{{ next.title }}</a> + {% endif %} + + +.. data:: page_source_suffix + + The suffix of the file that was rendered. Since we support a list of + :confval:`source_suffix`, this will allow you to properly link to the + original source file. + +.. data:: parents + + A list of parent documents for navigation, structured like the :data:`next` + item. + +.. data:: prev + + Like :data:`next`, but for the previous page. + +.. data:: sourcename + + The name of the copied source file for the current document. This is only + nonempty if the :confval:`html_copy_source` value is ``True``. + This has empty value on creating automatically-generated files. + +.. data:: toc + + The local table of contents for the current page, rendered as HTML bullet + lists. + +.. data:: toctree + + A callable yielding the global TOC tree containing the current page, rendered + as HTML bullet lists. Optional keyword arguments: + + * ``collapse`` (``True`` by default): if true, all TOC entries that are not + ancestors of the current page are collapsed + + * ``maxdepth`` (defaults to the max depth selected in the toctree directive): + the maximum depth of the tree; set it to ``-1`` to allow unlimited depth + + * ``titles_only`` (``False`` by default): if true, put only toplevel document + titles in the tree + + * ``includehidden`` (``False`` by default): if true, the TOC tree will also + contain hidden entries. diff --git a/sphinx/doc/theming.rst b/sphinx/doc/theming.rst new file mode 100644 index 0000000..6a154af --- /dev/null +++ b/sphinx/doc/theming.rst @@ -0,0 +1,159 @@ +.. highlight:: python + +HTML theming support +==================== + +.. versionadded:: 0.6 + +.. note:: + + This document provides information about creating your own theme. If you + simply wish to use a pre-existing HTML themes, refer to + :doc:`/usage/theming`. + +Sphinx supports changing the appearance of its HTML output via *themes*. A +theme is a collection of HTML templates, stylesheet(s) and other static files. +Additionally, it has a configuration file which specifies from which theme to +inherit, which highlighting style to use, and what options exist for customizing +the theme's look and feel. + +Themes are meant to be project-unaware, so they can be used for different +projects without change. + + +Creating themes +--------------- + +Themes take the form of either a directory or a zipfile (whose name is the +theme name), containing the following: + +* A :file:`theme.conf` file. +* HTML templates, if needed. +* A ``static/`` directory containing any static files that will be copied to the + output static directory on build. These can be images, styles, script files. + +The :file:`theme.conf` file is in INI format [1]_ (readable by the standard +Python :mod:`ConfigParser` module) and has the following structure: + +.. sourcecode:: ini + + [theme] + inherit = base theme + stylesheet = main CSS name + pygments_style = stylename + sidebars = localtoc.html, relations.html, sourcelink.html, searchbox.html + + [options] + variable = default value + +* The **inherit** setting gives the name of a "base theme", or ``none``. The + base theme will be used to locate missing templates (most themes will not have + to supply most templates if they use ``basic`` as the base theme), its options + will be inherited, and all of its static files will be used as well. If you + want to also inherit the stylesheet, include it via CSS' ``@import`` in your + own. + +* The **stylesheet** setting gives the name of a CSS file which will be + referenced in the HTML header. If you need more than one CSS file, either + include one from the other via CSS' ``@import``, or use a custom HTML template + that adds ``<link rel="stylesheet">`` tags as necessary. Setting the + :confval:`html_style` config value will override this setting. + +* The **pygments_style** setting gives the name of a Pygments style to use for + highlighting. This can be overridden by the user in the + :confval:`pygments_style` config value. + +* The **pygments_dark_style** setting gives the name of a Pygments style to use + for highlighting when the CSS media query ``(prefers-color-scheme: dark)`` + evaluates to true. It is injected into the page using + :meth:`~Sphinx.add_css_file()`. + +* The **sidebars** setting gives the comma separated list of sidebar templates + for constructing sidebars. This can be overridden by the user in the + :confval:`html_sidebars` config value. + +* The **options** section contains pairs of variable names and default values. + These options can be overridden by the user in :confval:`html_theme_options` + and are accessible from all templates as ``theme_<name>``. + +.. versionadded:: 1.7 + sidebar settings + + +.. _distribute-your-theme: + +Distribute your theme as a Python package +----------------------------------------- + +As a way to distribute your theme, you can use Python package. Python package +brings to users easy setting up ways. + +To distribute your theme as a Python package, please define an entry point +called ``sphinx.html_themes`` in your ``setup.py`` file, and write a ``setup()`` +function to register your themes using ``add_html_theme()`` API in it:: + + # 'setup.py' + setup( + ... + entry_points = { + 'sphinx.html_themes': [ + 'name_of_theme = your_package', + ] + }, + ... + ) + + # 'your_package.py' + from os import path + + def setup(app): + app.add_html_theme('name_of_theme', path.abspath(path.dirname(__file__))) + +If your theme package contains two or more themes, please call +``add_html_theme()`` twice or more. + +.. versionadded:: 1.2 + 'sphinx_themes' entry_points feature. + +.. deprecated:: 1.6 + ``sphinx_themes`` entry_points has been deprecated. + +.. versionadded:: 1.6 + ``sphinx.html_themes`` entry_points feature. + + +Templating +---------- + +The :doc:`guide to templating <templating>` is helpful if you want to write your +own templates. What is important to keep in mind is the order in which Sphinx +searches for templates: + +* First, in the user's ``templates_path`` directories. +* Then, in the selected theme. +* Then, in its base theme, its base's base theme, etc. + +When extending a template in the base theme with the same name, use the theme +name as an explicit directory: ``{% extends "basic/layout.html" %}``. From a +user ``templates_path`` template, you can still use the "exclamation mark" +syntax as described in the templating document. + +Static templates +~~~~~~~~~~~~~~~~ + +Since theme options are meant for the user to configure a theme more easily, +without having to write a custom stylesheet, it is necessary to be able to +template static files as well as HTML files. Therefore, Sphinx supports +so-called "static templates", like this: + +If the name of a file in the ``static/`` directory of a theme (or in the user's +static path, for that matter) ends with ``_t``, it will be processed by the +template engine. The ``_t`` will be left from the final file name. For +example, the *classic* theme has a file ``static/classic.css_t`` which uses +templating to put the color options into the stylesheet. When a documentation +is built with the classic theme, the output directory will contain a +``_static/classic.css`` file where all template tags have been processed. + +.. [1] It is not an executable Python file, as opposed to :file:`conf.py`, + because that would pose an unnecessary security risk if themes are + shared. diff --git a/sphinx/doc/usage/advanced/intl.rst b/sphinx/doc/usage/advanced/intl.rst new file mode 100644 index 0000000..431c090 --- /dev/null +++ b/sphinx/doc/usage/advanced/intl.rst @@ -0,0 +1,328 @@ +.. _intl: + +Internationalization +==================== + +.. versionadded:: 1.1 + +Complementary to translations provided for Sphinx-generated messages such as +navigation bars, Sphinx provides mechanisms facilitating *document* translations +in itself. See the :ref:`intl-options` for details on configuration. + +.. figure:: /_static/translation.svg + :width: 100% + + Workflow visualization of translations in Sphinx. (The figure is created by + `plantuml <http://plantuml.com>`_.) + +.. contents:: + :local: + +Sphinx internationalization details +----------------------------------- + +**gettext** [1]_ is an established standard for internationalization and +localization. It naively maps messages in a program to a translated string. +Sphinx uses these facilities to translate whole documents. + +Initially project maintainers have to collect all translatable strings (also +referred to as *messages*) to make them known to translators. Sphinx extracts +these through invocation of ``sphinx-build -b gettext``. + +Every single element in the doctree will end up in a single message which +results in lists being equally split into different chunks while large +paragraphs will remain as coarsely-grained as they were in the original +document. This grants seamless document updates while still providing a little +bit of context for translators in free-text passages. It is the maintainer's +task to split up paragraphs which are too large as there is no sane automated +way to do that. + +After Sphinx successfully ran the +:class:`~sphinx.builders.gettext.MessageCatalogBuilder` you will find a +collection of ``.pot`` files in your output directory. These are **catalog +templates** and contain messages in your original language *only*. + +They can be delivered to translators which will transform them to ``.po`` files +--- so called **message catalogs** --- containing a mapping from the original +messages to foreign-language strings. + +*gettext* compiles them into a binary format known as **binary catalogs** +through :program:`msgfmt` for efficiency reasons. If you make these files +discoverable with :confval:`locale_dirs` for your :confval:`language`, Sphinx +will pick them up automatically. + +An example: you have a document ``usage.rst`` in your Sphinx project. The +*gettext* builder will put its messages into ``usage.pot``. Imagine you have +Spanish translations [2]_ stored in ``usage.po`` --- for your builds to +be translated you need to follow these instructions: + +* Compile your message catalog to a locale directory, say ``locale``, so it + ends up in ``./locale/es/LC_MESSAGES/usage.mo`` in your source directory + (where ``es`` is the language code for Spanish.) :: + + msgfmt "usage.po" -o "locale/es/LC_MESSAGES/usage.mo" + +* Set :confval:`locale_dirs` to ``["locale/"]``. +* Set :confval:`language` to ``es`` (also possible via + :option:`-D <sphinx-build -D>`). +* Run your desired build. + + +Translating with sphinx-intl +---------------------------- + +Quick guide +~~~~~~~~~~~ + +`sphinx-intl`_ is a useful tool to work with Sphinx translation flow. This +section describe an easy way to translate with *sphinx-intl*. + +#. Install `sphinx-intl`_. + + .. code-block:: console + + $ pip install sphinx-intl + +#. Add configurations to ``conf.py``. + + :: + + locale_dirs = ['locale/'] # path is example but recommended. + gettext_compact = False # optional. + + This case-study assumes that :confval:`locale_dirs` is set to ``locale/`` and + :confval:`gettext_compact` is set to ``False`` (the Sphinx document is + already configured as such). + +#. Extract translatable messages into pot files. + + .. code-block:: console + + $ make gettext + + The generated pot files will be placed in the ``_build/gettext`` directory. + +#. Generate po files. + + We'll use the pot files generated in the above step. + + .. code-block:: console + + $ sphinx-intl update -p _build/gettext -l de -l ja + + Once completed, the generated po files will be placed in the below + directories: + + * ``./locale/de/LC_MESSAGES/`` + * ``./locale/ja/LC_MESSAGES/`` + +#. Translate po files. + + AS noted above, these are located in the ``./locale/<lang>/LC_MESSAGES`` + directory. An example of one such file, from Sphinx, ``builders.po``, is + given below. + + .. code-block:: po + + # a5600c3d2e3d48fc8c261ea0284db79b + #: ../../builders.rst:4 + msgid "Available builders" + msgstr "<FILL HERE BY TARGET LANGUAGE>" + + Another case, msgid is multi-line text and contains reStructuredText syntax: + + .. code-block:: po + + # 302558364e1d41c69b3277277e34b184 + #: ../../builders.rst:9 + msgid "" + "These are the built-in Sphinx builders. More builders can be added by " + ":ref:`extensions <extensions>`." + msgstr "" + "FILL HERE BY TARGET LANGUAGE FILL HERE BY TARGET LANGUAGE FILL HERE " + "BY TARGET LANGUAGE :ref:`EXTENSIONS <extensions>` FILL HERE." + + Please be careful not to break reST notation. Most po-editors will help you + with that. + +#. Build translated document. + + You need a :confval:`language` parameter in ``conf.py`` or you may also + specify the parameter on the command line. + + For for BSD/GNU make, run: + + .. code-block:: console + + $ make -e SPHINXOPTS="-D language='de'" html + + For Windows :command:`cmd.exe`, run: + + .. code-block:: console + + > set SPHINXOPTS=-D language=de + > .\make.bat html + + For PowerShell, run: + + .. code-block:: console + + > Set-Item env:SPHINXOPTS "-D language=de" + > .\make.bat html + +Congratulations! You got the translated documentation in the ``_build/html`` +directory. + +.. versionadded:: 1.3 + + :program:`sphinx-build` that is invoked by make command will build po files + into mo files. + + If you are using 1.2.x or earlier, please invoke :command:`sphinx-intl build` + command before :command:`make` command. + +Translating +~~~~~~~~~~~ + +Update your po files by new pot files +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If a document is updated, it is necessary to generate updated pot files and to +apply differences to translated po files. In order to apply the updates from a +pot file to the po file, use the :command:`sphinx-intl update` command. + +.. code-block:: console + + $ sphinx-intl update -p _build/locale + + +Using Transifex service for team translation +-------------------------------------------- + +Transifex_ is one of several services that allow collaborative translation via a +web interface. It has a nifty Python-based command line client that makes it +easy to fetch and push translations. + +.. TODO: why use transifex? + + +#. Install `transifex-client`_. + + You need :command:`tx` command to upload resources (pot files). + + .. code-block:: console + + $ pip install transifex-client + + .. seealso:: `Transifex Client documentation`_ + +#. Create your transifex_ account and create new project for your document. + + Currently, transifex does not allow for a translation project to have more + than one version of the document, so you'd better include a version number in + your project name. + + For example: + + :Project ID: ``sphinx-document-test_1_0`` + :Project URL: ``https://www.transifex.com/projects/p/sphinx-document-test_1_0/`` + +#. Create config files for :command:`tx` command. + + This process will create ``.tx/config`` in the current directory, as well as + a ``~/.transifexrc`` file that includes auth information. + + .. code-block:: console + + $ tx init + Creating .tx folder... + Transifex instance [https://www.transifex.com]: + ... + Please enter your transifex username: <transifex-username> + Password: <transifex-password> + ... + Done. + +#. Upload pot files to transifex service. + + Register pot files to ``.tx/config`` file: + + .. code-block:: console + + $ cd /your/document/root + $ sphinx-intl update-txconfig-resources --pot-dir _build/locale \ + --transifex-project-name sphinx-document-test_1_0 + + and upload pot files: + + .. code-block:: console + + $ tx push -s + Pushing translations for resource sphinx-document-test_1_0.builders: + Pushing source file (locale/pot/builders.pot) + Resource does not exist. Creating... + ... + Done. + +#. Forward the translation on transifex. + + .. TODO: write this section + +#. Pull translated po files and make translated HTML. + + Get translated catalogs and build mo files. For example, to build mo files + for German (de): + + .. code-block:: console + + $ cd /your/document/root + $ tx pull -l de + Pulling translations for resource sphinx-document-test_1_0.builders (...) + -> de: locale/de/LC_MESSAGES/builders.po + ... + Done. + + Invoke :command:`make html` (for BSD/GNU make): + + .. code-block:: console + + $ make -e SPHINXOPTS="-D language='de'" html + +That's all! + +.. tip:: Translating locally and on Transifex + + If you want to push all language's po files, you can be done by using + :command:`tx push -t` command. Watch out! This operation overwrites + translations in transifex. + + In other words, if you have updated each in the service and local po files, + it would take much time and effort to integrate them. + + +Contributing to Sphinx reference translation +-------------------------------------------- + +The recommended way for new contributors to translate Sphinx reference is to +join the translation team on Transifex. + +There is `sphinx translation page`_ for Sphinx (master) documentation. + +1. Login to transifex_ service. +2. Go to `sphinx translation page`_. +3. Click ``Request language`` and fill form. +4. Wait acceptance by transifex sphinx translation maintainers. +5. (After acceptance) Translate on transifex. + +.. rubric:: Footnotes + +.. [1] See the `GNU gettext utilities + <https://www.gnu.org/software/gettext/manual/gettext.html#Introduction>`_ + for details on that software suite. +.. [2] Because nobody expects the Spanish Inquisition! + +.. _`transifex-client`: https://pypi.org/project/transifex-client/ +.. _`sphinx-intl`: https://pypi.org/project/sphinx-intl/ +.. _Transifex: https://www.transifex.com/ +.. _`sphinx translation page`: https://www.transifex.com/sphinx-doc/sphinx-doc/ +.. _`Transifex Client documentation`: https://docs.transifex.com/client/introduction/ diff --git a/sphinx/doc/usage/advanced/setuptools.rst b/sphinx/doc/usage/advanced/setuptools.rst new file mode 100644 index 0000000..f4dfb7f --- /dev/null +++ b/sphinx/doc/usage/advanced/setuptools.rst @@ -0,0 +1,196 @@ +.. _setuptools: + +Setuptools integration +====================== + +Sphinx supports integration with setuptools and distutils through a custom +command - :class:`~sphinx.setup_command.BuildDoc`. + +Using setuptools integration +---------------------------- + +The Sphinx build can then be triggered from distutils, and some Sphinx +options can be set in ``setup.py`` or ``setup.cfg`` instead of Sphinx's own +configuration file. + +For instance, from ``setup.py``:: + + # this is only necessary when not using setuptools/distribute + from sphinx.setup_command import BuildDoc + cmdclass = {'build_sphinx': BuildDoc} + + name = 'My project' + version = '1.2' + release = '1.2.0' + setup( + name=name, + author='Bernard Montgomery', + version=release, + cmdclass=cmdclass, + # these are optional and override conf.py settings + command_options={ + 'build_sphinx': { + 'project': ('setup.py', name), + 'version': ('setup.py', version), + 'release': ('setup.py', release), + 'source_dir': ('setup.py', 'doc')}}, + ) + +.. note:: + + If you set Sphinx options directly in the ``setup()`` command, replace + hyphens in variable names with underscores. In the example above, + ``source-dir`` becomes ``source_dir``. + +Or add this section in ``setup.cfg``:: + + [build_sphinx] + project = 'My project' + version = 1.2 + release = 1.2.0 + source-dir = 'doc' + +Once configured, call this by calling the relevant command on ``setup.py``:: + + $ python setup.py build_sphinx + +Options for setuptools integration +---------------------------------- + +.. setuptools-confval:: fresh-env + + A boolean that determines whether the saved environment should be discarded + on build. Default is false. + + This can also be set by passing the `-E` flag to ``setup.py``: + + .. code-block:: bash + + $ python setup.py build_sphinx -E + +.. setuptools-confval:: all-files + + A boolean that determines whether all files should be built from scratch. + Default is false. + + This can also be set by passing the `-a` flag to ``setup.py``: + + .. code-block:: bash + + $ python setup.py build_sphinx -a + +.. setuptools-confval:: source-dir + + The target source directory. This can be relative to the ``setup.py`` or + ``setup.cfg`` file, or it can be absolute. It defaults to ``./doc`` or + ``./docs`` if either contains a file named ``conf.py`` (checking ``./doc`` + first); otherwise it defaults to the current directory. + + This can also be set by passing the `-s` flag to ``setup.py``: + + .. code-block:: bash + + $ python setup.py build_sphinx -s $SOURCE_DIR + +.. setuptools-confval:: build-dir + + The target build directory. This can be relative to the ``setup.py`` or + ``setup.cfg`` file, or it can be absolute. Default is ``./build/sphinx``. + +.. setuptools-confval:: config-dir + + Location of the configuration directory. This can be relative to the + ``setup.py`` or ``setup.cfg`` file, or it can be absolute. Default is to use + `source-dir`. + + This can also be set by passing the `-c` flag to ``setup.py``: + + .. code-block:: bash + + $ python setup.py build_sphinx -c $CONFIG_DIR + + .. versionadded:: 1.0 + +.. setuptools-confval:: builder + + The builder or list of builders to use. Default is ``html``. + + This can also be set by passing the `-b` flag to ``setup.py``: + + .. code-block:: bash + + $ python setup.py build_sphinx -b $BUILDER + + .. versionchanged:: 1.6 + This can now be a comma- or space-separated list of builders + +.. setuptools-confval:: warning-is-error + + A boolean that ensures Sphinx warnings will result in a failed build. + Default is false. + + This can also be set by passing the `-W` flag to ``setup.py``: + + .. code-block:: bash + + $ python setup.py build_sphinx -W + + .. versionadded:: 1.5 + +.. setuptools-confval:: project + + The documented project's name. Default is ``''``. + + .. versionadded:: 1.0 + +.. setuptools-confval:: version + + The short X.Y version. Default is ``''``. + + .. versionadded:: 1.0 + +.. setuptools-confval:: release + + The full version, including alpha/beta/rc tags. Default is ``''``. + + .. versionadded:: 1.0 + +.. setuptools-confval:: today + + How to format the current date, used as the replacement for ``|today|``. + Default is ``''``. + + .. versionadded:: 1.0 + +.. setuptools-confval:: link-index + + A boolean that ensures index.html will be linked to the master doc. Default + is false. + + This can also be set by passing the `-i` flag to ``setup.py``: + + .. code-block:: bash + + $ python setup.py build_sphinx -i + + .. versionadded:: 1.0 + +.. setuptools-confval:: copyright + + The copyright string. Default is ``''``. + + .. versionadded:: 1.3 + +.. setuptools-confval:: nitpicky + + Run in nit-picky mode. Currently, this generates warnings for all missing + references. See the config value :confval:`nitpick_ignore` for a way to + exclude some references as "known missing". + + .. versionadded:: 1.8 + +.. setuptools-confval:: pdb + + A boolean to configure ``pdb`` on exception. Default is false. + + .. versionadded:: 1.5 diff --git a/sphinx/doc/usage/advanced/websupport/api.rst b/sphinx/doc/usage/advanced/websupport/api.rst new file mode 100644 index 0000000..79b51ee --- /dev/null +++ b/sphinx/doc/usage/advanced/websupport/api.rst @@ -0,0 +1,80 @@ +.. _websupportapi: + +.. currentmodule:: sphinxcontrib.websupport + +The WebSupport Class +==================== + +.. class:: WebSupport + + The main API class for the web support package. All interactions with the + web support package should occur through this class. + + The class takes the following keyword arguments: + + srcdir + The directory containing reStructuredText source files. + + builddir + The directory that build data and static files should be placed in. This + should be used when creating a :class:`WebSupport` object that will be + used to build data. + + datadir + The directory that the web support data is in. This should be used when + creating a :class:`WebSupport` object that will be used to retrieve data. + + search + This may contain either a string (e.g. 'xapian') referencing a built-in + search adapter to use, or an instance of a subclass of + :class:`~.search.BaseSearch`. + + storage + This may contain either a string representing a database uri, or an + instance of a subclass of :class:`~.storage.StorageBackend`. If this is + not provided, a new sqlite database will be created. + + moderation_callback + A callable to be called when a new comment is added that is not + displayed. It must accept one argument: a dictionary representing the + comment that was added. + + staticdir + If the static files should be created in a different location + **and not in** ``'/static'``, this should be a string with the name of + that location (e.g. ``builddir + '/static_files'``). + + .. note:: + If you specify ``staticdir``, you will typically want to adjust + ``staticroot`` accordingly. + + staticroot + If the static files are not served from ``'/static'``, this should be a + string with the name of that location (e.g. ``'/static_files'``). + + docroot + If the documentation is not served from the base path of a URL, this + should be a string specifying that path (e.g. ``'docs'``). + + +.. versionchanged:: 1.6 + + WebSupport class is moved to sphinxcontrib.websupport from sphinx.websupport. + Please add ``sphinxcontrib-websupport`` package in your dependency and use + moved class instead. + + +Methods +------- + +.. automethod:: sphinxcontrib.websupport.WebSupport.build + +.. automethod:: sphinxcontrib.websupport.WebSupport.get_document + +.. automethod:: sphinxcontrib.websupport.WebSupport.get_data + +.. automethod:: sphinxcontrib.websupport.WebSupport.add_comment + +.. automethod:: sphinxcontrib.websupport.WebSupport.process_vote + +.. automethod:: sphinxcontrib.websupport.WebSupport.get_search_results diff --git a/sphinx/doc/usage/advanced/websupport/index.rst b/sphinx/doc/usage/advanced/websupport/index.rst new file mode 100644 index 0000000..0816640 --- /dev/null +++ b/sphinx/doc/usage/advanced/websupport/index.rst @@ -0,0 +1,16 @@ +.. _websupport: + +Sphinx Web Support +================== + +.. versionadded:: 1.1 + +Sphinx provides a Python API to easily integrate Sphinx documentation into your +web application. To learn more read the :ref:`websupportquickstart`. + +.. toctree:: + + quickstart + api + searchadapters + storagebackends diff --git a/sphinx/doc/usage/advanced/websupport/quickstart.rst b/sphinx/doc/usage/advanced/websupport/quickstart.rst new file mode 100644 index 0000000..a550803 --- /dev/null +++ b/sphinx/doc/usage/advanced/websupport/quickstart.rst @@ -0,0 +1,255 @@ +.. _websupportquickstart: + +Web Support Quick Start +======================= + +Building Documentation Data +---------------------------- + +To make use of the web support package in your application you'll need to build +the data it uses. This data includes pickle files representing documents, +search indices, and node data that is used to track where comments and other +things are in a document. To do this you will need to create an instance of the +:class:`~.WebSupport` class and call its :meth:`~.WebSupport.build` method:: + + from sphinxcontrib.websupport import WebSupport + + support = WebSupport(srcdir='/path/to/rst/sources/', + builddir='/path/to/build/outdir', + search='xapian') + + support.build() + +This will read reStructuredText sources from ``srcdir`` and place the necessary +data in ``builddir``. The ``builddir`` will contain two sub-directories: one +named "data" that contains all the data needed to display documents, search +through documents, and add comments to documents. The other directory will be +called "static" and contains static files that should be served from "/static". + +.. note:: + + If you wish to serve static files from a path other than "/static", you can + do so by providing the *staticdir* keyword argument when creating the + :class:`~.WebSupport` object. + + +Integrating Sphinx Documents Into Your Webapp +---------------------------------------------- + +Now that the data is built, it's time to do something useful with it. Start off +by creating a :class:`~.WebSupport` object for your application:: + + from sphinxcontrib.websupport import WebSupport + + support = WebSupport(datadir='/path/to/the/data', + search='xapian') + +You'll only need one of these for each set of documentation you will be working +with. You can then call its :meth:`~.WebSupport.get_document` method to access +individual documents:: + + contents = support.get_document('contents') + +This will return a dictionary containing the following items: + +* **body**: The main body of the document as HTML +* **sidebar**: The sidebar of the document as HTML +* **relbar**: A div containing links to related documents +* **title**: The title of the document +* **css**: Links to CSS files used by Sphinx +* **script**: JavaScript containing comment options + +This dict can then be used as context for templates. The goal is to be easy to +integrate with your existing templating system. An example using `Jinja2 +<http://jinja.pocoo.org/>`_ is: + +.. code-block:: html+jinja + + {%- extends "layout.html" %} + + {%- block title %} + {{ document.title }} + {%- endblock %} + + {% block css %} + {{ super() }} + {{ document.css|safe }} + <link rel="stylesheet" href="/static/websupport-custom.css" type="text/css"> + {% endblock %} + + {%- block script %} + {{ super() }} + {{ document.script|safe }} + {%- endblock %} + + {%- block relbar %} + {{ document.relbar|safe }} + {%- endblock %} + + {%- block body %} + {{ document.body|safe }} + {%- endblock %} + + {%- block sidebar %} + {{ document.sidebar|safe }} + {%- endblock %} + + +Authentication +~~~~~~~~~~~~~~ + +To use certain features such as voting, it must be possible to authenticate +users. The details of the authentication are left to your application. Once a +user has been authenticated you can pass the user's details to certain +:class:`~.WebSupport` methods using the *username* and *moderator* keyword +arguments. The web support package will store the username with comments and +votes. The only caveat is that if you allow users to change their username you +must update the websupport package's data:: + + support.update_username(old_username, new_username) + +*username* should be a unique string which identifies a user, and *moderator* +should be a boolean representing whether the user has moderation privileges. +The default value for *moderator* is ``False``. + +An example `Flask <http://flask.pocoo.org/>`_ function that checks whether a +user is logged in and then retrieves a document is:: + + from sphinxcontrib.websupport.errors import * + + @app.route('/<path:docname>') + def doc(docname): + username = g.user.name if g.user else '' + moderator = g.user.moderator if g.user else False + try: + document = support.get_document(docname, username, moderator) + except DocumentNotFoundError: + abort(404) + return render_template('doc.html', document=document) + +The first thing to notice is that the *docname* is just the request path. This +makes accessing the correct document easy from a single view. If the user is +authenticated, then the username and moderation status are passed along with the +docname to :meth:`~.WebSupport.get_document`. The web support package will then +add this data to the ``COMMENT_OPTIONS`` that are used in the template. + +.. note:: + + This only works if your documentation is served from your + document root. If it is served from another directory, you will + need to prefix the url route with that directory, and give the `docroot` + keyword argument when creating the web support object:: + + support = WebSupport(..., docroot='docs') + + @app.route('/docs/<path:docname>') + + +Performing Searches +------------------- + +To use the search form built-in to the Sphinx sidebar, create a function to +handle requests to the URL 'search' relative to the documentation root. The +user's search query will be in the GET parameters, with the key `q`. Then use +the :meth:`~sphinxcontrib.websupport.WebSupport.get_search_results` method to +retrieve search results. In `Flask <http://flask.pocoo.org/>`_ that would be +like this:: + + @app.route('/search') + def search(): + q = request.args.get('q') + document = support.get_search_results(q) + return render_template('doc.html', document=document) + +Note that we used the same template to render our search results as we did to +render our documents. That's because :meth:`~.WebSupport.get_search_results` +returns a context dict in the same format that :meth:`~.WebSupport.get_document` +does. + + +Comments & Proposals +-------------------- + +Now that this is done it's time to define the functions that handle the AJAX +calls from the script. You will need three functions. The first function is +used to add a new comment, and will call the web support method +:meth:`~.WebSupport.add_comment`:: + + @app.route('/docs/add_comment', methods=['POST']) + def add_comment(): + parent_id = request.form.get('parent', '') + node_id = request.form.get('node', '') + text = request.form.get('text', '') + proposal = request.form.get('proposal', '') + username = g.user.name if g.user is not None else 'Anonymous' + comment = support.add_comment(text, node_id='node_id', + parent_id='parent_id', + username=username, proposal=proposal) + return jsonify(comment=comment) + +You'll notice that both a ``parent_id`` and ``node_id`` are sent with the +request. If the comment is being attached directly to a node, ``parent_id`` +will be empty. If the comment is a child of another comment, then ``node_id`` +will be empty. Then next function handles the retrieval of comments for a +specific node, and is aptly named +:meth:`~sphinxcontrib.websupport.WebSupport.get_data`:: + + @app.route('/docs/get_comments') + def get_comments(): + username = g.user.name if g.user else None + moderator = g.user.moderator if g.user else False + node_id = request.args.get('node', '') + data = support.get_data(node_id, username, moderator) + return jsonify(**data) + +The final function that is needed will call :meth:`~.WebSupport.process_vote`, +and will handle user votes on comments:: + + @app.route('/docs/process_vote', methods=['POST']) + def process_vote(): + if g.user is None: + abort(401) + comment_id = request.form.get('comment_id') + value = request.form.get('value') + if value is None or comment_id is None: + abort(400) + support.process_vote(comment_id, g.user.id, value) + return "success" + + +Comment Moderation +------------------ + +By default, all comments added through :meth:`~.WebSupport.add_comment` are +automatically displayed. If you wish to have some form of moderation, you can +pass the ``displayed`` keyword argument:: + + comment = support.add_comment(text, node_id='node_id', + parent_id='parent_id', + username=username, proposal=proposal, + displayed=False) + +You can then create a new view to handle the moderation of comments. It +will be called when a moderator decides a comment should be accepted and +displayed:: + + @app.route('/docs/accept_comment', methods=['POST']) + def accept_comment(): + moderator = g.user.moderator if g.user else False + comment_id = request.form.get('id') + support.accept_comment(comment_id, moderator=moderator) + return 'OK' + +Rejecting comments happens via comment deletion. + +To perform a custom action (such as emailing a moderator) when a new comment is +added but not displayed, you can pass callable to the :class:`~.WebSupport` +class when instantiating your support object:: + + def moderation_callback(comment): + """Do something...""" + + support = WebSupport(..., moderation_callback=moderation_callback) + +The moderation callback must take one argument, which will be the same comment +dict that is returned by :meth:`add_comment`. diff --git a/sphinx/doc/usage/advanced/websupport/searchadapters.rst b/sphinx/doc/usage/advanced/websupport/searchadapters.rst new file mode 100644 index 0000000..262d666 --- /dev/null +++ b/sphinx/doc/usage/advanced/websupport/searchadapters.rst @@ -0,0 +1,49 @@ +.. _searchadapters: + +.. currentmodule:: sphinxcontrib.websupport.search + +Search Adapters +=============== + +To create a custom search adapter you will need to subclass the +:class:`BaseSearch` class. Then create an instance of the new class and pass +that as the `search` keyword argument when you create the :class:`~.WebSupport` +object:: + + support = WebSupport(srcdir=srcdir, + builddir=builddir, + search=MySearch()) + +For more information about creating a custom search adapter, please see the +documentation of the :class:`BaseSearch` class below. + +.. class:: BaseSearch + + Defines an interface for search adapters. + +.. versionchanged:: 1.6 + + BaseSearch class is moved to sphinxcontrib.websupport.search from + sphinx.websupport.search. + +Methods +------- + +The following methods are defined in the BaseSearch class. Some methods do not +need to be overridden, but some (:meth:`~BaseSearch.add_document` and +:meth:`~BaseSearch.handle_query`) must be overridden in your subclass. For a +working example, look at the built-in adapter for whoosh. + +.. automethod:: BaseSearch.init_indexing + +.. automethod:: BaseSearch.finish_indexing + +.. automethod:: BaseSearch.feed + +.. automethod:: BaseSearch.add_document + +.. automethod:: BaseSearch.query + +.. automethod:: BaseSearch.handle_query + +.. automethod:: BaseSearch.extract_context diff --git a/sphinx/doc/usage/advanced/websupport/storagebackends.rst b/sphinx/doc/usage/advanced/websupport/storagebackends.rst new file mode 100644 index 0000000..ccb00b6 --- /dev/null +++ b/sphinx/doc/usage/advanced/websupport/storagebackends.rst @@ -0,0 +1,49 @@ +.. _storagebackends: + +.. currentmodule:: sphinxcontrib.websupport.storage + +Storage Backends +================ + +To create a custom storage backend you will need to subclass the +:class:`StorageBackend` class. Then create an instance of the new class and +pass that as the `storage` keyword argument when you create the +:class:`~.WebSupport` object:: + + support = WebSupport(srcdir=srcdir, + builddir=builddir, + storage=MyStorage()) + +For more information about creating a custom storage backend, please see the +documentation of the :class:`StorageBackend` class below. + +.. class:: StorageBackend + + Defines an interface for storage backends. + +.. versionchanged:: 1.6 + + StorageBackend class is moved to sphinxcontrib.websupport.storage from + sphinx.websupport.storage. + + +Methods +------- + +.. automethod:: StorageBackend.pre_build + +.. automethod:: StorageBackend.add_node + +.. automethod:: StorageBackend.post_build + +.. automethod:: StorageBackend.add_comment + +.. automethod:: StorageBackend.delete_comment + +.. automethod:: StorageBackend.get_data + +.. automethod:: StorageBackend.process_vote + +.. automethod:: StorageBackend.update_username + +.. automethod:: StorageBackend.accept_comment diff --git a/sphinx/doc/usage/builders/index.rst b/sphinx/doc/usage/builders/index.rst new file mode 100644 index 0000000..db67069 --- /dev/null +++ b/sphinx/doc/usage/builders/index.rst @@ -0,0 +1,564 @@ +.. _builders: + +======== +Builders +======== + +.. module:: sphinx.builders + :synopsis: Available built-in builder classes. + +These are the built-in Sphinx builders. More builders can be added by +:doc:`extensions </usage/extensions/index>`. + +The builder's "name" must be given to the **-b** command-line option of +:program:`sphinx-build` to select a builder. + + +.. module:: sphinx.builders.html +.. class:: StandaloneHTMLBuilder + + This is the standard HTML builder. Its output is a directory with HTML + files, complete with style sheets and optionally the reST sources. There are + quite a few configuration values that customize the output of this builder, + see the chapter :ref:`html-options` for details. + + .. autoattribute:: name + + .. autoattribute:: format + + .. autoattribute:: supported_image_types + +.. module:: sphinx.builders.dirhtml +.. class:: DirectoryHTMLBuilder + + This is a subclass of the standard HTML builder. Its output is a directory + with HTML files, where each file is called ``index.html`` and placed in a + subdirectory named like its page name. For example, the document + ``markup/rest.rst`` will not result in an output file ``markup/rest.html``, + but ``markup/rest/index.html``. When generating links between pages, the + ``index.html`` is omitted, so that the URL would look like ``markup/rest/``. + + .. autoattribute:: name + + .. autoattribute:: format + + .. autoattribute:: supported_image_types + + .. versionadded:: 0.6 + +.. module:: sphinx.builders.singlehtml +.. class:: SingleFileHTMLBuilder + + This is an HTML builder that combines the whole project in one output file. + (Obviously this only works with smaller projects.) The file is named like + the master document. No indices will be generated. + + .. autoattribute:: name + + .. autoattribute:: format + + .. autoattribute:: supported_image_types + + .. versionadded:: 1.0 + +.. module:: sphinxcontrib.htmlhelp +.. class:: HTMLHelpBuilder + + This builder produces the same output as the standalone HTML builder, but + also generates HTML Help support files that allow the Microsoft HTML Help + Workshop to compile them into a CHM file. + + .. autoattribute:: name + + .. autoattribute:: format + + .. autoattribute:: supported_image_types + +.. module:: sphinxcontrib.qthelp +.. class:: QtHelpBuilder + + This builder produces the same output as the standalone HTML builder, but + also generates `Qt help`_ collection support files that allow the Qt + collection generator to compile them. + + .. versionchanged:: 2.0 + + Moved to sphinxcontrib.qthelp from sphinx.builders package. + + .. autoattribute:: name + + .. autoattribute:: format + + .. autoattribute:: supported_image_types + + .. _Qt help: https://doc.qt.io/qt-4.8/qthelp-framework.html + +.. module:: sphinxcontrib.applehelp +.. class:: AppleHelpBuilder + + This builder produces an Apple Help Book based on the same output as the + standalone HTML builder. + + If the source directory contains any ``.lproj`` folders, the one + corresponding to the selected language will have its contents merged with + the generated output. These folders will be ignored by all other + documentation types. + + In order to generate a valid help book, this builder requires the command + line tool :program:`hiutil`, which is only available on Mac OS X 10.6 and + above. You can disable the indexing step by setting + :confval:`applehelp_disable_external_tools` to ``True``, in which case the + output will not be valid until :program:`hiutil` has been run on all of the + ``.lproj`` folders within the bundle. + + .. autoattribute:: name + + .. autoattribute:: format + + .. autoattribute:: supported_image_types + + .. versionadded:: 1.3 + + .. versionchanged:: 2.0 + + Moved to sphinxcontrib.applehelp from sphinx.builders package. + +.. module:: sphinxcontrib.devhelp +.. class:: DevhelpBuilder + + This builder produces the same output as the standalone HTML builder, but + also generates `GNOME Devhelp <https://wiki.gnome.org/Apps/Devhelp>`__ + support file that allows the GNOME Devhelp reader to view them. + + .. autoattribute:: name + + .. autoattribute:: format + + .. autoattribute:: supported_image_types + + .. versionchanged:: 2.0 + + Moved to sphinxcontrib.devhelp from sphinx.builders package. + +.. module:: sphinx.builders.epub3 +.. class:: Epub3Builder + + This builder produces the same output as the standalone HTML builder, but + also generates an *epub* file for ebook readers. See :ref:`epub-faq` for + details about it. For definition of the epub format, have a look at + `<http://idpf.org/epub>`_ or `<https://en.wikipedia.org/wiki/EPUB>`_. + The builder creates *EPUB 3* files. + + .. autoattribute:: name + + .. autoattribute:: format + + .. autoattribute:: supported_image_types + + .. versionadded:: 1.4 + + .. versionchanged:: 1.5 + + Since Sphinx-1.5, the epub3 builder is used for the default builder of + epub. + +.. module:: sphinx.builders.latex +.. class:: LaTeXBuilder + + This builder produces a bunch of LaTeX files in the output directory. You + have to specify which documents are to be included in which LaTeX files via + the :confval:`latex_documents` configuration value. There are a few + configuration values that customize the output of this builder, see the + chapter :ref:`latex-options` for details. + + The produced LaTeX file uses several LaTeX packages that may not be present + in a "minimal" TeX distribution installation. + + On Ubuntu xenial, the following packages need to be installed for + successful PDF builds: + + * ``texlive-latex-recommended`` + * ``texlive-fonts-recommended`` + * ``texlive-latex-extra`` + * ``latexmk`` (this is a Sphinx requirement on GNU/Linux and MacOS X + for functioning of ``make latexpdf``) + + Additional packages are needed in some circumstances (see the discussion of + the ``'fontpkg'`` key of :confval:`latex_elements` for more information): + + * to support occasional Cyrillic letters or words, and a fortiori if + :confval:`language` is set to a Cyrillic language, the package + ``texlive-lang-cyrillic`` is required, and, with unmodified ``'fontpkg'``, + also ``cm-super`` or ``cm-super-minimal``, + * to support occasional Greek letters or words (in text, not in + :rst:dir:`math` directive contents), ``texlive-lang-greek`` is required, + and, with unmodified ``'fontpkg'``, also ``cm-super`` or + ``cm-super-minimal``, + * for ``'xelatex'`` or ``'lualatex'`` (see :confval:`latex_engine`), + ``texlive-xetex`` resp. ``texlive-luatex``, and, if leaving unchanged + ``'fontpkg'``, ``fonts-freefont-otf``. + + The testing of Sphinx LaTeX is done on Ubuntu xenial whose TeX distribution + is based on a TeXLive 2015 snapshot dated March 2016. + + .. versionchanged:: 1.6 + Formerly, testing had been done on Ubuntu precise (TeXLive 2009). + + .. versionchanged:: 2.0 + Formerly, testing had been done on Ubuntu trusty (TeXLive 2013). + + .. note:: + + Since 1.6, ``make latexpdf`` uses ``latexmk`` (not on Windows). This + makes sure the needed number of runs is automatically executed to get + the cross-references, bookmarks, indices, and tables of contents right. + + One can pass to ``latexmk`` options via the ``LATEXMKOPTS`` + Makefile variable. For example: + + .. code-block:: console + + make latexpdf LATEXMKOPTS="-silent" + + reduces console output to a minimum. + + Also, if ``latexmk`` is at version 4.52b or higher (January 2017) + ``LATEXMKOPTS="-xelatex"`` speeds up PDF builds via XeLateX in case + of numerous graphics inclusions. + + To pass options directly to the ``(pdf|xe|lua)latex`` binary, use + variable ``LATEXOPTS``, for example: + + .. code-block:: console + + make latexpdf LATEXOPTS="--halt-on-error" + + .. autoattribute:: name + + .. autoattribute:: format + + .. autoattribute:: supported_image_types + +Note that a direct PDF builder is being provided by `rinohtype`_. The builder's +name is ``rinoh``. Refer to the `rinohtype manual`_ for details. + +.. _rinohtype: https://github.com/brechtm/rinohtype +.. _rinohtype manual: https://www.mos6581.org/rinohtype/quickstart.html#sphinx-builder + +.. module:: sphinx.builders.text +.. class:: TextBuilder + + This builder produces a text file for each reST file -- this is almost the + same as the reST source, but with much of the markup stripped for better + readability. + + .. autoattribute:: name + + .. autoattribute:: format + + .. autoattribute:: supported_image_types + + .. versionadded:: 0.4 + +.. module:: sphinx.builders.manpage +.. class:: ManualPageBuilder + + This builder produces manual pages in the groff format. You have to specify + which documents are to be included in which manual pages via the + :confval:`man_pages` configuration value. + + .. autoattribute:: name + + .. autoattribute:: format + + .. autoattribute:: supported_image_types + + .. versionadded:: 1.0 + + +.. module:: sphinx.builders.texinfo +.. class:: TexinfoBuilder + + This builder produces Texinfo files that can be processed into Info files by + the :program:`makeinfo` program. You have to specify which documents are to + be included in which Texinfo files via the :confval:`texinfo_documents` + configuration value. + + The Info format is the basis of the on-line help system used by GNU Emacs and + the terminal-based program :program:`info`. See :ref:`texinfo-faq` for more + details. The Texinfo format is the official documentation system used by the + GNU project. More information on Texinfo can be found at + `<https://www.gnu.org/software/texinfo/>`_. + + .. autoattribute:: name + + .. autoattribute:: format + + .. autoattribute:: supported_image_types + + .. versionadded:: 1.1 + + +.. currentmodule:: sphinxcontrib.serializinghtml +.. class:: SerializingHTMLBuilder + + This builder uses a module that implements the Python serialization API + (`pickle`, `simplejson`, `phpserialize`, and others) to dump the generated + HTML documentation. The pickle builder is a subclass of it. + + A concrete subclass of this builder serializing to the `PHP serialization`_ + format could look like this:: + + import phpserialize + + class PHPSerializedBuilder(SerializingHTMLBuilder): + name = 'phpserialized' + implementation = phpserialize + out_suffix = '.file.phpdump' + globalcontext_filename = 'globalcontext.phpdump' + searchindex_filename = 'searchindex.phpdump' + + .. _PHP serialization: https://pypi.org/project/phpserialize/ + + .. attribute:: implementation + + A module that implements `dump()`, `load()`, `dumps()` and `loads()` + functions that conform to the functions with the same names from the + pickle module. Known modules implementing this interface are + `simplejson`, `phpserialize`, `plistlib`, and others. + + .. attribute:: out_suffix + + The suffix for all regular files. + + .. attribute:: globalcontext_filename + + The filename for the file that contains the "global context". This + is a dict with some general configuration values such as the name + of the project. + + .. attribute:: searchindex_filename + + The filename for the search index Sphinx generates. + + See :ref:`serialization-details` for details about the output format. + + .. versionadded:: 0.5 + +.. class:: PickleHTMLBuilder + + This builder produces a directory with pickle files containing mostly HTML + fragments and TOC information, for use of a web application (or custom + postprocessing tool) that doesn't use the standard HTML templates. + + See :ref:`serialization-details` for details about the output format. + + .. autoattribute:: name + + The old name ``web`` still works as well. + + .. autoattribute:: format + + .. autoattribute:: supported_image_types + + The file suffix is ``.fpickle``. The global context is called + ``globalcontext.pickle``, the search index ``searchindex.pickle``. + +.. class:: JSONHTMLBuilder + + This builder produces a directory with JSON files containing mostly HTML + fragments and TOC information, for use of a web application (or custom + postprocessing tool) that doesn't use the standard HTML templates. + + See :ref:`serialization-details` for details about the output format. + + .. autoattribute:: name + + .. autoattribute:: format + + .. autoattribute:: supported_image_types + + The file suffix is ``.fjson``. The global context is called + ``globalcontext.json``, the search index ``searchindex.json``. + + .. versionadded:: 0.5 + +.. module:: sphinx.builders.gettext +.. class:: MessageCatalogBuilder + + This builder produces gettext-style message catalogs. Each top-level file or + subdirectory grows a single ``.pot`` catalog template. + + See the documentation on :ref:`intl` for further reference. + + .. autoattribute:: name + + .. autoattribute:: format + + .. autoattribute:: supported_image_types + + .. versionadded:: 1.1 + +.. module:: sphinx.builders.changes +.. class:: ChangesBuilder + + This builder produces an HTML overview of all :rst:dir:`versionadded`, + :rst:dir:`versionchanged` and :rst:dir:`deprecated` directives for the + current :confval:`version`. This is useful to generate a ChangeLog file, for + example. + + .. autoattribute:: name + + .. autoattribute:: format + + .. autoattribute:: supported_image_types + +.. module:: sphinx.builders.dummy +.. class:: DummyBuilder + + This builder produces no output. The input is only parsed and checked for + consistency. This is useful for linting purposes. + + .. autoattribute:: name + + .. autoattribute:: supported_image_types + + .. versionadded:: 1.4 + +.. module:: sphinx.builders.linkcheck +.. class:: CheckExternalLinksBuilder + + This builder scans all documents for external links, tries to open them with + ``requests``, and writes an overview which ones are broken and redirected to + standard output and to :file:`output.txt` in the output directory. + + .. autoattribute:: name + + .. autoattribute:: format + + .. autoattribute:: supported_image_types + + .. versionchanged:: 1.5 + + Since Sphinx-1.5, the linkcheck builder comes to use requests module. + +.. module:: sphinx.builders.xml +.. class:: XMLBuilder + + This builder produces Docutils-native XML files. The output can be + transformed with standard XML tools such as XSLT processors into arbitrary + final forms. + + .. autoattribute:: name + + .. autoattribute:: format + + .. autoattribute:: supported_image_types + + .. versionadded:: 1.2 + +.. class:: PseudoXMLBuilder + + This builder is used for debugging the Sphinx/Docutils "Reader to Transform + to Writer" pipeline. It produces compact pretty-printed "pseudo-XML", files + where nesting is indicated by indentation (no end-tags). External + attributes for all elements are output, and internal attributes for any + leftover "pending" elements are also given. + + .. autoattribute:: name + + .. autoattribute:: format + + .. autoattribute:: supported_image_types + + .. versionadded:: 1.2 + + +Built-in Sphinx extensions that offer more builders are: + +* :mod:`~sphinx.ext.doctest` +* :mod:`~sphinx.ext.coverage` + + +.. _serialization-details: + +Serialization builder details +----------------------------- + +All serialization builders outputs one file per source file and a few special +files. They also copy the reST source files in the directory ``_sources`` +under the output directory. + +The :class:`.PickleHTMLBuilder` is a builtin subclass that implements the pickle +serialization interface. + +The files per source file have the extensions of +:attr:`~.SerializingHTMLBuilder.out_suffix`, and are arranged in directories +just as the source files are. They unserialize to a dictionary (or dictionary +like structure) with these keys: + +``body`` + The HTML "body" (that is, the HTML rendering of the source file), as rendered + by the HTML translator. + +``title`` + The title of the document, as HTML (may contain markup). + +``toc`` + The table of contents for the file, rendered as an HTML ``<ul>``. + +``display_toc`` + A boolean that is ``True`` if the ``toc`` contains more than one entry. + +``current_page_name`` + The document name of the current file. + +``parents``, ``prev`` and ``next`` + Information about related chapters in the TOC tree. Each relation is a + dictionary with the keys ``link`` (HREF for the relation) and ``title`` + (title of the related document, as HTML). ``parents`` is a list of + relations, while ``prev`` and ``next`` are a single relation. + +``sourcename`` + The name of the source file under ``_sources``. + +The special files are located in the root output directory. They are: + +:attr:`.SerializingHTMLBuilder.globalcontext_filename` + A pickled dict with these keys: + + ``project``, ``copyright``, ``release``, ``version`` + The same values as given in the configuration file. + + ``style`` + :confval:`html_style`. + + ``last_updated`` + Date of last build. + + ``builder`` + Name of the used builder, in the case of pickles this is always + ``'pickle'``. + + ``titles`` + A dictionary of all documents' titles, as HTML strings. + +:attr:`.SerializingHTMLBuilder.searchindex_filename` + An index that can be used for searching the documentation. It is a pickled + list with these entries: + + * A list of indexed docnames. + * A list of document titles, as HTML strings, in the same order as the first + list. + * A dict mapping word roots (processed by an English-language stemmer) to a + list of integers, which are indices into the first list. + +``environment.pickle`` + The build environment. This is always a pickle file, independent of the + builder and a copy of the environment that was used when the builder was + started. + + .. todo:: Document common members. + + Unlike the other pickle files this pickle file requires that the ``sphinx`` + package is available on unpickling. diff --git a/sphinx/doc/usage/configuration.rst b/sphinx/doc/usage/configuration.rst new file mode 100644 index 0000000..12580bd --- /dev/null +++ b/sphinx/doc/usage/configuration.rst @@ -0,0 +1,2541 @@ +.. highlight:: python + +.. _build-config: + +============= +Configuration +============= + +.. module:: conf + :synopsis: Build configuration file. + +The :term:`configuration directory` must contain a file named :file:`conf.py`. +This file (containing Python code) is called the "build configuration file" +and contains (almost) all configuration needed to customize Sphinx input +and output behavior. + + An optional file `docutils.conf`_ can be added to the configuration + directory to adjust `Docutils`_ configuration if not otherwise overridden or + set by Sphinx. + + .. _`docutils`: http://docutils.sourceforge.net/ + .. _`docutils.conf`: http://docutils.sourceforge.net/docs/user/config.html + +The configuration file is executed as Python code at build time (using +:func:`execfile`, and with the current directory set to its containing +directory), and therefore can execute arbitrarily complex code. Sphinx then +reads simple names from the file's namespace as its configuration. + +Important points to note: + +* If not otherwise documented, values must be strings, and their default is the + empty string. + +* The term "fully-qualified name" refers to a string that names an importable + Python object inside a module; for example, the FQN + ``"sphinx.builders.Builder"`` means the ``Builder`` class in the + ``sphinx.builders`` module. + +* Remember that document names use ``/`` as the path separator and don't + contain the file name extension. + +* Since :file:`conf.py` is read as a Python file, the usual rules apply for + encodings and Unicode support. + +* The contents of the config namespace are pickled (so that Sphinx can find out + when configuration changes), so it may not contain unpickleable values -- + delete them from the namespace with ``del`` if appropriate. Modules are + removed automatically, so you don't need to ``del`` your imports after use. + + .. _conf-tags: + +* There is a special object named ``tags`` available in the config file. + It can be used to query and change the tags (see :ref:`tags`). Use + ``tags.has('tag')`` to query, ``tags.add('tag')`` and ``tags.remove('tag')`` + to change. Only tags set via the ``-t`` command-line option or via + ``tags.add('tag')`` can be queried using ``tags.has('tag')``. + Note that the current builder tag is not available in ``conf.py``, as it is + created *after* the builder is initialized. + + +Project information +------------------- + +.. confval:: project + + The documented project's name. + +.. confval:: author + + The author name(s) of the document. The default value is ``'unknown'``. + +.. confval:: copyright + + A copyright statement in the style ``'2008, Author Name'``. + +.. confval:: version + + The major project version, used as the replacement for ``|version|``. For + example, for the Python documentation, this may be something like ``2.6``. + +.. confval:: release + + The full project version, used as the replacement for ``|release|`` and + e.g. in the HTML templates. For example, for the Python documentation, this + may be something like ``2.6.0rc1``. + + If you don't need the separation provided between :confval:`version` and + :confval:`release`, just set them both to the same value. + + +General configuration +--------------------- + +.. confval:: extensions + + A list of strings that are module names of :doc:`extensions + <extensions/index>`. These can be extensions coming with Sphinx (named + ``sphinx.ext.*``) or custom ones. + + Note that you can extend :data:`sys.path` within the conf file if your + extensions live in another directory -- but make sure you use absolute paths. + If your extension path is relative to the :term:`configuration directory`, + use :func:`os.path.abspath` like so:: + + import sys, os + + sys.path.append(os.path.abspath('sphinxext')) + + extensions = ['extname'] + + That way, you can load an extension called ``extname`` from the subdirectory + ``sphinxext``. + + The configuration file itself can be an extension; for that, you only need + to provide a :func:`setup` function in it. + +.. confval:: source_suffix + + The file extensions of source files. Sphinx considers the files with this + suffix as sources. The value can be a dictionary mapping file extensions + to file types. For example:: + + source_suffix = { + '.rst': 'restructuredtext', + '.txt': 'restructuredtext', + '.md': 'markdown', + } + + By default, Sphinx only supports ``'restructuredtext'`` file type. You can + add a new file type using source parser extensions. Please read a document + of the extension to know which file type the extension supports. + + The value may also be a list of file extensions: then Sphinx will consider + that they all map to the ``'restructuredtext'`` file type. + + Default is ``{'.rst': 'restructuredtext'}``. + + .. note:: file extensions have to start with a dot (e.g. ``.rst``). + + .. versionchanged:: 1.3 + Can now be a list of extensions. + + .. versionchanged:: 1.8 + Support file type mapping + +.. confval:: source_encoding + + The encoding of all reST source files. The recommended encoding, and the + default value, is ``'utf-8-sig'``. + + .. versionadded:: 0.5 + Previously, Sphinx accepted only UTF-8 encoded sources. + +.. confval:: source_parsers + + If given, a dictionary of parser classes for different source suffices. The + keys are the suffix, the values can be either a class or a string giving a + fully-qualified name of a parser class. The parser class can be either + ``docutils.parsers.Parser`` or :class:`sphinx.parsers.Parser`. Files with a + suffix that is not in the dictionary will be parsed with the default + reStructuredText parser. + + For example:: + + source_parsers = {'.md': 'recommonmark.parser.CommonMarkParser'} + + .. note:: + + Refer to :doc:`/usage/markdown` for more information on using Markdown + with Sphinx. + + .. versionadded:: 1.3 + + .. deprecated:: 1.8 + Now Sphinx provides an API :meth:`.Sphinx.add_source_parser` to register + a source parser. Please use it instead. + +.. confval:: master_doc + + The document name of the "master" document, that is, the document that + contains the root :rst:dir:`toctree` directive. Default is ``'index'``. + + .. versionchanged:: 2.0 + The default is changed to ``'index'`` from ``'contents'``. + +.. confval:: exclude_patterns + + A list of glob-style patterns that should be excluded when looking for + source files. [1]_ They are matched against the source file names relative + to the source directory, using slashes as directory separators on all + platforms. + + Example patterns: + + - ``'library/xml.rst'`` -- ignores the ``library/xml.rst`` file (replaces + entry in :confval:`unused_docs`) + - ``'library/xml'`` -- ignores the ``library/xml`` directory + - ``'library/xml*'`` -- ignores all files and directories starting with + ``library/xml`` + - ``'**/.svn'`` -- ignores all ``.svn`` directories + + :confval:`exclude_patterns` is also consulted when looking for static files + in :confval:`html_static_path` and :confval:`html_extra_path`. + + .. versionadded:: 1.0 + +.. confval:: templates_path + + A list of paths that contain extra templates (or templates that overwrite + builtin/theme-specific templates). Relative paths are taken as relative to + the configuration directory. + + .. versionchanged:: 1.3 + As these files are not meant to be built, they are automatically added to + :confval:`exclude_patterns`. + +.. confval:: template_bridge + + A string with the fully-qualified name of a callable (or simply a class) + that returns an instance of :class:`~sphinx.application.TemplateBridge`. + This instance is then used to render HTML documents, and possibly the output + of other builders (currently the changes builder). (Note that the template + bridge must be made theme-aware if HTML themes are to be used.) + +.. confval:: rst_epilog + + .. index:: pair: global; substitutions + + A string of reStructuredText that will be included at the end of every source + file that is read. This is a possible place to add substitutions that should + be available in every file (another being :confval:`rst_prolog`). An + example:: + + rst_epilog = """ + .. |psf| replace:: Python Software Foundation + """ + + .. versionadded:: 0.6 + +.. confval:: rst_prolog + + .. index:: pair: global; substitutions + + A string of reStructuredText that will be included at the beginning of every + source file that is read. This is a possible place to add substitutions that + should be available in every file (another being :confval:`rst_epilog`). An + example:: + + rst_prolog = """ + .. |psf| replace:: Python Software Foundation + """ + + .. versionadded:: 1.0 + +.. confval:: primary_domain + + .. index:: default; domain + primary; domain + + The name of the default :doc:`domain </usage/restructuredtext/domains>`. + Can also be ``None`` to disable a default domain. The default is ``'py'``. + Those objects in other domains (whether the domain name is given explicitly, + or selected by a :rst:dir:`default-domain` directive) will have the domain + name explicitly prepended when named (e.g., when the default domain is C, + Python functions will be named "Python function", not just "function"). + + .. versionadded:: 1.0 + +.. confval:: default_role + + .. index:: default; role + + The name of a reST role (builtin or Sphinx extension) to use as the default + role, that is, for text marked up ```like this```. This can be set to + ``'py:obj'`` to make ```filter``` a cross-reference to the Python function + "filter". The default is ``None``, which doesn't reassign the default role. + + The default role can always be set within individual documents using the + standard reST :rst:dir:`default-role` directive. + + .. versionadded:: 0.4 + +.. confval:: keep_warnings + + If true, keep warnings as "system message" paragraphs in the built + documents. Regardless of this setting, warnings are always written to the + standard error stream when ``sphinx-build`` is run. + + The default is ``False``, the pre-0.5 behavior was to always keep them. + + .. versionadded:: 0.5 + +.. confval:: suppress_warnings + + A list of warning types to suppress arbitrary warning messages. + + Sphinx supports following warning types: + + * ``app.add_node`` + * ``app.add_directive`` + * ``app.add_role`` + * ``app.add_generic_role`` + * ``app.add_source_parser`` + * ``download.not_readable`` + * ``image.not_readable`` + * ``ref.term`` + * ``ref.ref`` + * ``ref.numref`` + * ``ref.keyword`` + * ``ref.option`` + * ``ref.citation`` + * ``ref.footnote`` + * ``ref.doc`` + * ``ref.python`` + * ``misc.highlighting_failure`` + * ``toc.circular`` + * ``toc.secnum`` + * ``epub.unknown_project_files`` + * ``autosectionlabel.*`` + + You can choose from these types. + + Now, this option should be considered *experimental*. + + .. versionadded:: 1.4 + + .. versionchanged:: 1.5 + + Added ``misc.highlighting_failure`` + + .. versionchanged:: 1.5.1 + + Added ``epub.unknown_project_files`` + + .. versionchanged:: 1.6 + + Added ``ref.footnote`` + + .. versionchanged:: 2.1 + + Added ``autosectionlabel.*`` + +.. confval:: needs_sphinx + + If set to a ``major.minor`` version string like ``'1.1'``, Sphinx will + compare it with its version and refuse to build if it is too old. Default + is no requirement. + + .. versionadded:: 1.0 + + .. versionchanged:: 1.4 + also accepts micro version string + +.. confval:: needs_extensions + + This value can be a dictionary specifying version requirements for + extensions in :confval:`extensions`, e.g. ``needs_extensions = + {'sphinxcontrib.something': '1.5'}``. The version strings should be in the + form ``major.minor``. Requirements do not have to be specified for all + extensions, only for those you want to check. + + This requires that the extension specifies its version to Sphinx (see + :ref:`dev-extensions` for how to do that). + + .. versionadded:: 1.3 + +.. confval:: manpages_url + + A URL to cross-reference :rst:role:`manpage` directives. If this is + defined to ``https://manpages.debian.org/{path}``, the + :literal:`:manpage:`man(1)`` role will link to + <https://manpages.debian.org/man(1)>. The patterns available are: + + * ``page`` - the manual page (``man``) + * ``section`` - the manual section (``1``) + * ``path`` - the original manual page and section specified (``man(1)``) + + This also supports manpages specified as ``man.1``. + + .. note:: This currently affects only HTML writers but could be + expanded in the future. + + .. versionadded:: 1.7 + +.. confval:: nitpicky + + If true, Sphinx will warn about *all* references where the target cannot be + found. Default is ``False``. You can activate this mode temporarily using + the :option:`-n <sphinx-build -n>` command-line switch. + + .. versionadded:: 1.0 + +.. confval:: nitpick_ignore + + A list of ``(type, target)`` tuples (by default empty) that should be + ignored when generating warnings in "nitpicky mode". Note that ``type`` + should include the domain name if present. Example entries would be + ``('py:func', 'int')`` or ``('envvar', 'LD_LIBRARY_PATH')``. + + .. versionadded:: 1.1 + +.. confval:: numfig + + If true, figures, tables and code-blocks are automatically numbered if they + have a caption. The :rst:role:`numref` role is enabled. + Obeyed so far only by HTML and LaTeX builders. Default is ``False``. + + .. note:: + + The LaTeX builder always assigns numbers whether this option is enabled + or not. + + .. versionadded:: 1.3 + +.. confval:: numfig_format + + A dictionary mapping ``'figure'``, ``'table'``, ``'code-block'`` and + ``'section'`` to strings that are used for format of figure numbers. + As a special character, ``%s`` will be replaced to figure number. + + Default is to use ``'Fig. %s'`` for ``'figure'``, ``'Table %s'`` for + ``'table'``, ``'Listing %s'`` for ``'code-block'`` and ``'Section'`` for + ``'section'``. + + .. versionadded:: 1.3 + +.. confval:: numfig_secnum_depth + + - if set to ``0``, figures, tables and code-blocks are continuously numbered + starting at ``1``. + - if ``1`` (default) numbers will be ``x.1``, ``x.2``, ... with ``x`` + the section number (top level sectioning; no ``x.`` if no section). + This naturally applies only if section numbering has been activated via + the ``:numbered:`` option of the :rst:dir:`toctree` directive. + - ``2`` means that numbers will be ``x.y.1``, ``x.y.2``, ... if located in + a sub-section (but still ``x.1``, ``x.2``, ... if located directly under a + section and ``1``, ``2``, ... if not in any top level section.) + - etc... + + .. versionadded:: 1.3 + + .. versionchanged:: 1.7 + The LaTeX builder obeys this setting (if :confval:`numfig` is set to + ``True``). + +.. confval:: smartquotes + + If true, the `Docutils Smart Quotes transform`__, originally based on + `SmartyPants`__ (limited to English) and currently applying to many + languages, will be used to convert quotes and dashes to typographically + correct entities. Default: ``True``. + + __ http://docutils.sourceforge.net/docs/user/smartquotes.html + __ https://daringfireball.net/projects/smartypants/ + + .. versionadded:: 1.6.6 + It replaces deprecated :confval:`html_use_smartypants`. + It applies by default to all builders except ``man`` and ``text`` + (see :confval:`smartquotes_excludes`.) + + A `docutils.conf`__ file located in the configuration directory (or a + global :file:`~/.docutils` file) is obeyed unconditionally if it + *deactivates* smart quotes via the corresponding `Docutils option`__. But + if it *activates* them, then :confval:`smartquotes` does prevail. + + __ http://docutils.sourceforge.net/docs/user/config.html + __ http://docutils.sourceforge.net/docs/user/config.html#smart-quotes + +.. confval:: smartquotes_action + + This string, for use with Docutils ``0.14`` or later, customizes the Smart + Quotes transform. See the file :file:`smartquotes.py` at the `Docutils + repository`__ for details. The default ``'qDe'`` educates normal **q**\ + uote characters ``"``, ``'``, em- and en-**D**\ ashes ``---``, ``--``, and + **e**\ llipses ``...``. + + .. versionadded:: 1.6.6 + + __ https://sourceforge.net/p/docutils/code/HEAD/tree/trunk/docutils/ + +.. confval:: smartquotes_excludes + + This is a ``dict`` whose default is:: + + {'languages': ['ja'], 'builders': ['man', 'text']} + + Each entry gives a sufficient condition to ignore the + :confval:`smartquotes` setting and deactivate the Smart Quotes transform. + Accepted keys are as above ``'builders'`` or ``'languages'``. + The values are lists. + + .. note:: Currently, in case of invocation of :program:`make` with multiple + targets, the first target name is the only one which is tested against + the ``'builders'`` entry and it decides for all. Also, a ``make text`` + following ``make html`` needs to be issued in the form ``make text + O="-E"`` to force re-parsing of source files, as the cached ones are + already transformed. On the other hand the issue does not arise with + direct usage of :program:`sphinx-build` as it caches + (in its default usage) the parsed source files in per builder locations. + + .. hint:: An alternative way to effectively deactivate (or customize) the + smart quotes for a given builder, for example ``latex``, is to use + ``make`` this way: + + .. code-block:: console + + make latex O="-D smartquotes_action=" + + This can follow some ``make html`` with no problem, in contrast to the + situation from the prior note. It requires Docutils 0.14 or later. + + .. versionadded:: 1.6.6 + +.. confval:: user_agent + + A User-Agent of Sphinx. It is used for a header on HTTP access (ex. + linkcheck, intersphinx and so on). Default is ``"Sphinx/X.Y.Z + requests/X.Y.Z python/X.Y.Z"``. + + .. versionadded:: 2.3 + +.. confval:: tls_verify + + If true, Sphinx verifies server certifications. Default is ``True``. + + .. versionadded:: 1.5 + +.. confval:: tls_cacerts + + A path to a certification file of CA or a path to directory which + contains the certificates. This also allows a dictionary mapping + hostname to the path to certificate file. + The certificates are used to verify server certifications. + + .. versionadded:: 1.5 + + .. tip:: Sphinx uses requests_ as a HTTP library internally. + Therefore, Sphinx refers a certification file on the + directory pointed ``REQUESTS_CA_BUNDLE`` environment + variable if ``tls_cacerts`` not set. + + .. _requests: https://requests.readthedocs.io/en/master/ + +.. confval:: today + today_fmt + + These values determine how to format the current date, used as the + replacement for ``|today|``. + + * If you set :confval:`today` to a non-empty value, it is used. + * Otherwise, the current time is formatted using :func:`time.strftime` and + the format given in :confval:`today_fmt`. + + The default is now :confval:`today` and a :confval:`today_fmt` of ``'%B %d, + %Y'`` (or, if translation is enabled with :confval:`language`, an equivalent + format for the selected locale). + +.. confval:: highlight_language + + The default language to highlight source code in. The default is + ``'python3'``. The value should be a valid Pygments lexer name, see + :ref:`code-examples` for more details. + + .. versionadded:: 0.5 + + .. versionchanged:: 1.4 + The default is now ``'default'``. It is similar to ``'python3'``; + it is mostly a superset of ``'python'`` but it fallbacks to + ``'none'`` without warning if failed. ``'python3'`` and other + languages will emit warning if failed. If you prefer Python 2 + only highlighting, you can set it back to ``'python'``. + +.. confval:: highlight_options + + A dictionary of options that modify how the lexer specified by + :confval:`highlight_language` generates highlighted source code. These are + lexer-specific; for the options understood by each, see the + `Pygments documentation <https://pygments.org/docs/lexers.html>`_. + + .. versionadded:: 1.3 + +.. confval:: pygments_style + + The style name to use for Pygments highlighting of source code. If not set, + either the theme's default style or ``'sphinx'`` is selected for HTML + output. + + .. versionchanged:: 0.3 + If the value is a fully-qualified name of a custom Pygments style class, + this is then used as custom style. + +.. confval:: add_function_parentheses + + A boolean that decides whether parentheses are appended to function and + method role text (e.g. the content of ``:func:`input```) to signify that the + name is callable. Default is ``True``. + +.. confval:: add_module_names + + A boolean that decides whether module names are prepended to all + :term:`object` names (for object types where a "module" of some kind is + defined), e.g. for :rst:dir:`py:function` directives. Default is ``True``. + +.. confval:: show_authors + + A boolean that decides whether :rst:dir:`codeauthor` and + :rst:dir:`sectionauthor` directives produce any output in the built files. + +.. confval:: modindex_common_prefix + + A list of prefixes that are ignored for sorting the Python module index + (e.g., if this is set to ``['foo.']``, then ``foo.bar`` is shown under ``B``, + not ``F``). This can be handy if you document a project that consists of a + single package. Works only for the HTML builder currently. Default is + ``[]``. + + .. versionadded:: 0.6 + +.. confval:: trim_footnote_reference_space + + Trim spaces before footnote references that are necessary for the reST + parser to recognize the footnote, but do not look too nice in the output. + + .. versionadded:: 0.6 + +.. confval:: trim_doctest_flags + + If true, doctest flags (comments looking like ``# doctest: FLAG, ...``) at + the ends of lines and ``<BLANKLINE>`` markers are removed for all code + blocks showing interactive Python sessions (i.e. doctests). Default is + ``True``. See the extension :mod:`~sphinx.ext.doctest` for more + possibilities of including doctests. + + .. versionadded:: 1.0 + .. versionchanged:: 1.1 + Now also removes ``<BLANKLINE>``. + +.. confval:: strip_signature_backslash + + Default is ``False``. + When backslash stripping is enabled then every occurrence of ``\\`` in a + domain directive will be changed to ``\``, even within string literals. + This was the behaviour before version 3.0, and setting this variable to + ``True`` will reinstate that behaviour. + + .. versionadded:: 3.0 + + +.. _intl-options: + +Options for internationalization +-------------------------------- + +These options influence Sphinx's *Native Language Support*. See the +documentation on :ref:`intl` for details. + +.. confval:: language + + The code for the language the docs are written in. Any text automatically + generated by Sphinx will be in that language. Also, Sphinx will try to + substitute individual paragraphs from your documents with the translation + sets obtained from :confval:`locale_dirs`. Sphinx will search + language-specific figures named by `figure_language_filename` and substitute + them for original figures. In the LaTeX builder, a suitable language will + be selected as an option for the *Babel* package. Default is ``None``, + which means that no translation will be done. + + .. versionadded:: 0.5 + + .. versionchanged:: 1.4 + + Support figure substitution + + Currently supported languages by Sphinx are: + + * ``ar`` -- Arabic + * ``bg`` -- Bulgarian + * ``bn`` -- Bengali + * ``ca`` -- Catalan + * ``cak`` -- Kaqchikel + * ``cs`` -- Czech + * ``cy`` -- Welsh + * ``da`` -- Danish + * ``de`` -- German + * ``el`` -- Greek + * ``en`` -- English + * ``eo`` -- Esperanto + * ``es`` -- Spanish + * ``et`` -- Estonian + * ``eu`` -- Basque + * ``fa`` -- Iranian + * ``fi`` -- Finnish + * ``fr`` -- French + * ``he`` -- Hebrew + * ``hi`` -- Hindi + * ``hi_IN`` -- Hindi (India) + * ``hr`` -- Croatian + * ``hu`` -- Hungarian + * ``id`` -- Indonesian + * ``it`` -- Italian + * ``ja`` -- Japanese + * ``ko`` -- Korean + * ``lt`` -- Lithuanian + * ``lv`` -- Latvian + * ``mk`` -- Macedonian + * ``nb_NO`` -- Norwegian Bokmal + * ``ne`` -- Nepali + * ``nl`` -- Dutch + * ``pl`` -- Polish + * ``pt`` -- Portuguese + * ``pt_BR`` -- Brazilian Portuguese + * ``pt_PT`` -- European Portuguese + * ``ro`` -- Romanian + * ``ru`` -- Russian + * ``si`` -- Sinhala + * ``sk`` -- Slovak + * ``sl`` -- Slovenian + * ``sq`` -- Albanian + * ``sr`` -- Serbian + * ``sr@latin`` -- Serbian (Latin) + * ``sr_RS`` -- Serbian (Cyrillic) + * ``sv`` -- Swedish + * ``ta`` -- Tamil + * ``te`` -- Telugu + * ``tr`` -- Turkish + * ``uk_UA`` -- Ukrainian + * ``ur`` -- Urdu + * ``vi`` -- Vietnamese + * ``zh_CN`` -- Simplified Chinese + * ``zh_TW`` -- Traditional Chinese + +.. confval:: locale_dirs + + .. versionadded:: 0.5 + + Directories in which to search for additional message catalogs (see + :confval:`language`), relative to the source directory. The directories on + this path are searched by the standard :mod:`gettext` module. + + Internal messages are fetched from a text domain of ``sphinx``; so if you + add the directory :file:`./locale` to this setting, the message catalogs + (compiled from ``.po`` format using :program:`msgfmt`) must be in + :file:`./locale/{language}/LC_MESSAGES/sphinx.mo`. The text domain of + individual documents depends on :confval:`gettext_compact`. + + The default is ``['locales']``. + + .. versionchanged:: 1.5 + Use ``locales`` directory as a default value + +.. confval:: gettext_compact + + .. versionadded:: 1.1 + + If true, a document's text domain is its docname if it is a top-level + project file and its very base directory otherwise. + + By default, the document ``markup/code.rst`` ends up in the ``markup`` text + domain. With this option set to ``False``, it is ``markup/code``. + +.. confval:: gettext_uuid + + If true, Sphinx generates uuid information for version tracking in message + catalogs. It is used for: + + * Add uid line for each msgids in .pot files. + * Calculate similarity between new msgids and previously saved old msgids. + This calculation takes a long time. + + If you want to accelerate the calculation, you can use + ``python-levenshtein`` 3rd-party package written in C by using + :command:`pip install python-levenshtein`. + + The default is ``False``. + + .. versionadded:: 1.3 + +.. confval:: gettext_location + + If true, Sphinx generates location information for messages in message + catalogs. + + The default is ``True``. + + .. versionadded:: 1.3 + +.. confval:: gettext_auto_build + + If true, Sphinx builds mo file for each translation catalog files. + + The default is ``True``. + + .. versionadded:: 1.3 + +.. confval:: gettext_additional_targets + + To specify names to enable gettext extracting and translation applying for + i18n additionally. You can specify below names: + + :index: index terms + :literal-block: literal blocks (``::`` annotation and ``code-block`` directive) + :doctest-block: doctest block + :raw: raw content + :image: image/figure uri and alt + + For example: ``gettext_additional_targets = ['literal-block', 'image']``. + + The default is ``[]``. + + .. versionadded:: 1.3 + +.. confval:: figure_language_filename + + The filename format for language-specific figures. The default value is + ``{root}.{language}{ext}``. It will be expanded to + ``dirname/filename.en.png`` from ``.. image:: dirname/filename.png``. + The available format tokens are: + + * ``{root}`` - the filename, including any path component, without the file + extension, e.g. ``dirname/filename`` + * ``{path}`` - the directory path component of the filename, with a trailing + slash if non-empty, e.g. ``dirname/`` + * ``{basename}`` - the filename without the directory path or file extension + components, e.g. ``filename`` + * ``{ext}`` - the file extension, e.g. ``.png`` + * ``{language}`` - the translation language, e.g. ``en`` + + For example, setting this to ``{path}{language}/{basename}{ext}`` will + expand to ``dirname/en/filename.png`` instead. + + .. versionadded:: 1.4 + + .. versionchanged:: 1.5 + Added ``{path}`` and ``{basename}`` tokens. + + +.. _math-options: + +Options for Math +---------------- + +These options influence Math notations. + +.. confval:: math_number_all + + Set this option to ``True`` if you want all displayed math to be numbered. + The default is ``False``. + +.. confval:: math_eqref_format + + A string used for formatting the labels of references to equations. + The ``{number}`` place-holder stands for the equation number. + + Example: ``'Eq.{number}'`` gets rendered as, for example, ``Eq.10``. + +.. confval:: math_numfig + + If ``True``, displayed math equations are numbered across pages when + :confval:`numfig` is enabled. The :confval:`numfig_secnum_depth` setting + is respected. The :rst:role:`eq`, not :rst:role:`numref`, role + must be used to reference equation numbers. Default is ``True``. + + .. versionadded:: 1.7 + + +.. _html-options: + +Options for HTML output +----------------------- + +These options influence HTML as well as HTML Help output, and other builders +that use Sphinx's HTMLWriter class. + +.. confval:: html_theme + + The "theme" that the HTML output should use. See the :doc:`section about + theming </usage/theming>`. The default is ``'alabaster'``. + + .. versionadded:: 0.6 + +.. confval:: html_theme_options + + A dictionary of options that influence the look and feel of the selected + theme. These are theme-specific. For the options understood by the builtin + themes, see :ref:`this section <builtin-themes>`. + + .. versionadded:: 0.6 + +.. confval:: html_theme_path + + A list of paths that contain custom themes, either as subdirectories or as + zip files. Relative paths are taken as relative to the configuration + directory. + + .. versionadded:: 0.6 + +.. confval:: html_style + + The style sheet to use for HTML pages. A file of that name must exist + either in Sphinx's :file:`static/` path, or in one of the custom paths given + in :confval:`html_static_path`. Default is the stylesheet given by the + selected theme. If you only want to add or override a few things compared + to the theme's stylesheet, use CSS ``@import`` to import the theme's + stylesheet. + +.. confval:: html_title + + The "title" for HTML documentation generated with Sphinx's own templates. + This is appended to the ``<title>`` tag of individual pages, and used in the + navigation bar as the "topmost" element. It defaults to :samp:`'{<project>} + v{<revision>} documentation'`. + +.. confval:: html_short_title + + A shorter "title" for the HTML docs. This is used in for links in the + header and in the HTML Help docs. If not given, it defaults to the value of + :confval:`html_title`. + + .. versionadded:: 0.4 + +.. confval:: html_baseurl + + The URL which points to the root of the HTML documentation. It is used to + indicate the location of document like ``canonical_url``. + + .. versionadded:: 1.8 + +.. confval:: html_context + + A dictionary of values to pass into the template engine's context for all + pages. Single values can also be put in this dictionary using the + :option:`-A <sphinx-build -A>` command-line option of ``sphinx-build``. + + .. versionadded:: 0.5 + +.. confval:: html_logo + + If given, this must be the name of an image file (path relative to the + :term:`configuration directory`) that is the logo of the docs. It is placed + at the top of the sidebar; its width should therefore not exceed 200 pixels. + Default: ``None``. + + .. versionadded:: 0.4.1 + The image file will be copied to the ``_static`` directory of the output + HTML, but only if the file does not already exist there. + +.. confval:: html_favicon + + If given, this must be the name of an image file (path relative to the + :term:`configuration directory`) that is the favicon of the docs. Modern + browsers use this as the icon for tabs, windows and bookmarks. It should + be a Windows-style icon file (``.ico``), which is 16x16 or 32x32 + pixels large. Default: ``None``. + + .. versionadded:: 0.4 + The image file will be copied to the ``_static`` directory of the output + HTML, but only if the file does not already exist there. + +.. confval:: html_css_files + + A list of CSS files. The entry must be a *filename* string or a tuple + containing the *filename* string and the *attributes* dictionary. The + *filename* must be relative to the :confval:`html_static_path`, or a full URI + with scheme like ``http://example.org/style.css``. The *attributes* is used + for attributes of ``<link>`` tag. It defaults to an empty list. + + Example:: + + html_css_files = ['custom.css', + 'https://example.com/css/custom.css', + ('print.css', {'media': 'print'})] + + .. versionadded:: 1.8 + +.. confval:: html_js_files + + A list of JavaScript *filename*. The entry must be a *filename* string or a + tuple containing the *filename* string and the *attributes* dictionary. The + *filename* must be relative to the :confval:`html_static_path`, or a full + URI with scheme like ``http://example.org/script.js``. The *attributes* is + used for attributes of ``<script>`` tag. It defaults to an empty list. + + Example:: + + html_js_files = ['script.js', + 'https://example.com/scripts/custom.js', + ('custom.js', {'async': 'async'})] + + .. versionadded:: 1.8 + +.. confval:: html_static_path + + A list of paths that contain custom static files (such as style + sheets or script files). Relative paths are taken as relative to + the configuration directory. They are copied to the output's + :file:`_static` directory after the theme's static files, so a file + named :file:`default.css` will overwrite the theme's + :file:`default.css`. + + As these files are not meant to be built, they are automatically excluded + from source files. + + .. note:: + + For security reasons, dotfiles under ``html_static_path`` will + not be copied. If you would like to copy them intentionally, please + add each filepath to this setting:: + + html_static_path = ['_static', '_static/.htaccess'] + + Another way to do that, you can also use + :confval:`html_extra_path`. It allows to copy dotfiles under + the directories. + + .. versionchanged:: 0.4 + The paths in :confval:`html_static_path` can now contain subdirectories. + + .. versionchanged:: 1.0 + The entries in :confval:`html_static_path` can now be single files. + + .. versionchanged:: 1.8 + The files under :confval:`html_static_path` are excluded from source + files. + +.. confval:: html_extra_path + + A list of paths that contain extra files not directly related to + the documentation, such as :file:`robots.txt` or :file:`.htaccess`. + Relative paths are taken as relative to the configuration + directory. They are copied to the output directory. They will + overwrite any existing file of the same name. + + As these files are not meant to be built, they are automatically excluded + from source files. + + .. versionadded:: 1.2 + + .. versionchanged:: 1.4 + The dotfiles in the extra directory will be copied to the output + directory. And it refers :confval:`exclude_patterns` on copying extra + files and directories, and ignores if path matches to patterns. + +.. confval:: html_last_updated_fmt + + If this is not None, a 'Last updated on:' timestamp is inserted + at every page bottom, using the given :func:`strftime` format. + The empty string is equivalent to ``'%b %d, %Y'`` (or a + locale-dependent equivalent). + +.. confval:: html_use_smartypants + + If true, quotes and dashes are converted to typographically correct + entities. Default: ``True``. + + .. deprecated:: 1.6 + To disable smart quotes, use rather :confval:`smartquotes`. + +.. confval:: html_add_permalinks + + Sphinx will add "permalinks" for each heading and description environment as + paragraph signs that become visible when the mouse hovers over them. + + This value determines the text for the permalink; it defaults to ``"¶"``. + Set it to ``None`` or the empty string to disable permalinks. + + .. versionadded:: 0.6 + Previously, this was always activated. + + .. versionchanged:: 1.1 + This can now be a string to select the actual text of the link. + Previously, only boolean values were accepted. + +.. confval:: html_sidebars + + Custom sidebar templates, must be a dictionary that maps document names to + template names. + + The keys can contain glob-style patterns [1]_, in which case all matching + documents will get the specified sidebars. (A warning is emitted when a + more than one glob-style pattern matches for any document.) + + The values can be either lists or single strings. + + * If a value is a list, it specifies the complete list of sidebar templates + to include. If all or some of the default sidebars are to be included, + they must be put into this list as well. + + The default sidebars (for documents that don't match any pattern) are + defined by theme itself. Builtin themes are using these templates by + default: ``['localtoc.html', 'relations.html', 'sourcelink.html', + 'searchbox.html']``. + + * If a value is a single string, it specifies a custom sidebar to be added + between the ``'sourcelink.html'`` and ``'searchbox.html'`` entries. This + is for compatibility with Sphinx versions before 1.0. + + .. deprecated:: 1.7 + + a single string value for ``html_sidebars`` will be removed in 2.0 + + Builtin sidebar templates that can be rendered are: + + * **localtoc.html** -- a fine-grained table of contents of the current + document + * **globaltoc.html** -- a coarse-grained table of contents for the whole + documentation set, collapsed + * **relations.html** -- two links to the previous and next documents + * **sourcelink.html** -- a link to the source of the current document, if + enabled in :confval:`html_show_sourcelink` + * **searchbox.html** -- the "quick search" box + + Example:: + + html_sidebars = { + '**': ['globaltoc.html', 'sourcelink.html', 'searchbox.html'], + 'using/windows': ['windowssidebar.html', 'searchbox.html'], + } + + This will render the custom template ``windowssidebar.html`` and the quick + search box within the sidebar of the given document, and render the default + sidebars for all other pages (except that the local TOC is replaced by the + global TOC). + + .. versionadded:: 1.0 + The ability to use globbing keys and to specify multiple sidebars. + + Note that this value only has no effect if the chosen theme does not possess + a sidebar, like the builtin **scrolls** and **haiku** themes. + +.. confval:: html_additional_pages + + Additional templates that should be rendered to HTML pages, must be a + dictionary that maps document names to template names. + + Example:: + + html_additional_pages = { + 'download': 'customdownload.html', + } + + This will render the template ``customdownload.html`` as the page + ``download.html``. + +.. confval:: html_domain_indices + + If true, generate domain-specific indices in addition to the general index. + For e.g. the Python domain, this is the global module index. Default is + ``True``. + + This value can be a bool or a list of index names that should be generated. + To find out the index name for a specific index, look at the HTML file name. + For example, the Python module index has the name ``'py-modindex'``. + + .. versionadded:: 1.0 + +.. confval:: html_use_index + + If true, add an index to the HTML documents. Default is ``True``. + + .. versionadded:: 0.4 + +.. confval:: html_split_index + + If true, the index is generated twice: once as a single page with all the + entries, and once as one page per starting letter. Default is ``False``. + + .. versionadded:: 0.4 + +.. confval:: html_copy_source + + If true, the reST sources are included in the HTML build as + :file:`_sources/{name}`. The default is ``True``. + +.. confval:: html_show_sourcelink + + If true (and :confval:`html_copy_source` is true as well), links to the + reST sources will be added to the sidebar. The default is ``True``. + + .. versionadded:: 0.6 + +.. confval:: html_sourcelink_suffix + + Suffix to be appended to source links (see :confval:`html_show_sourcelink`), + unless they have this suffix already. Default is ``'.txt'``. + + .. versionadded:: 1.5 + +.. confval:: html_use_opensearch + + If nonempty, an `OpenSearch <http://www.opensearch.org/Home>`_ description + file will be output, and all pages will contain a ``<link>`` tag referring + to it. Since OpenSearch doesn't support relative URLs for its search page + location, the value of this option must be the base URL from which these + documents are served (without trailing slash), e.g. + ``"https://docs.python.org"``. The default is ``''``. + +.. confval:: html_file_suffix + + This is the file name suffix for generated HTML files. The default is + ``".html"``. + + .. versionadded:: 0.4 + +.. confval:: html_link_suffix + + Suffix for generated links to HTML files. The default is whatever + :confval:`html_file_suffix` is set to; it can be set differently (e.g. to + support different web server setups). + + .. versionadded:: 0.6 + +.. confval:: html_show_copyright + + If true, "(C) Copyright ..." is shown in the HTML footer. Default is + ``True``. + + .. versionadded:: 1.0 + +.. confval:: html_show_sphinx + + If true, "Created using Sphinx" is shown in the HTML footer. Default is + ``True``. + + .. versionadded:: 0.4 + +.. confval:: html_output_encoding + + Encoding of HTML output files. Default is ``'utf-8'``. Note that this + encoding name must both be a valid Python encoding name and a valid HTML + ``charset`` value. + + .. versionadded:: 1.0 + +.. confval:: html_compact_lists + + If true, a list all whose items consist of a single paragraph and/or a + sub-list all whose items etc... (recursive definition) will not use the + ``<p>`` element for any of its items. This is standard docutils behavior. + Default: ``True``. + + .. versionadded:: 1.0 + +.. confval:: html_secnumber_suffix + + Suffix for section numbers. Default: ``". "``. Set to ``" "`` to suppress + the final dot on section numbers. + + .. versionadded:: 1.0 + +.. confval:: html_search_language + + Language to be used for generating the HTML full-text search index. This + defaults to the global language selected with :confval:`language`. If there + is no support for this language, ``"en"`` is used which selects the English + language. + + Support is present for these languages: + + * ``da`` -- Danish + * ``nl`` -- Dutch + * ``en`` -- English + * ``fi`` -- Finnish + * ``fr`` -- French + * ``de`` -- German + * ``hu`` -- Hungarian + * ``it`` -- Italian + * ``ja`` -- Japanese + * ``no`` -- Norwegian + * ``pt`` -- Portuguese + * ``ro`` -- Romanian + * ``ru`` -- Russian + * ``es`` -- Spanish + * ``sv`` -- Swedish + * ``tr`` -- Turkish + * ``zh`` -- Chinese + + .. admonition:: Accelerating build speed + + Each language (except Japanese) provides its own stemming algorithm. + Sphinx uses a Python implementation by default. You can use a C + implementation to accelerate building the index file. + + * `PorterStemmer <https://pypi.org/project/PorterStemmer/>`_ (``en``) + * `PyStemmer <https://pypi.org/project/PyStemmer/>`_ (all languages) + + .. versionadded:: 1.1 + With support for ``en`` and ``ja``. + + .. versionchanged:: 1.3 + Added additional languages. + +.. confval:: html_search_options + + A dictionary with options for the search language support, empty by default. + The meaning of these options depends on the language selected. + + The English support has no options. + + The Japanese support has these options: + + :type: + _`type` is dotted module path string to specify Splitter implementation + which should be derived from :class:`sphinx.search.ja.BaseSplitter`. If + not specified or None is specified, + ``'sphinx.search.ja.DefaultSplitter'`` will be used. + + You can choose from these modules: + + :'sphinx.search.ja.DefaultSplitter': + TinySegmenter algorithm. This is default splitter. + :'sphinx.search.ja.MecabSplitter': + MeCab binding. To use this splitter, 'mecab' python binding or dynamic + link library ('libmecab.so' for linux, 'libmecab.dll' for windows) is + required. + :'sphinx.search.ja.JanomeSplitter': + Janome binding. To use this splitter, + `Janome <https://pypi.org/project/Janome/>`_ is required. + + .. deprecated:: 1.6 + ``'mecab'``, ``'janome'`` and ``'default'`` is deprecated. + To keep compatibility, ``'mecab'``, ``'janome'`` and ``'default'`` are + also acceptable. + + Other option values depend on splitter value which you choose. + + Options for ``'mecab'``: + :dic_enc: + _`dic_enc option` is the encoding for the MeCab algorithm. + :dict: + _`dict option` is the dictionary to use for the MeCab algorithm. + :lib: + _`lib option` is the library name for finding the MeCab library via + ctypes if the Python binding is not installed. + + For example:: + + html_search_options = { + 'type': 'mecab', + 'dic_enc': 'utf-8', + 'dict': '/path/to/mecab.dic', + 'lib': '/path/to/libmecab.so', + } + + Options for ``'janome'``: + :user_dic: + _`user_dic option` is the user dictionary file path for Janome. + :user_dic_enc: + _`user_dic_enc option` is the encoding for the user dictionary file + specified by ``user_dic`` option. Default is 'utf8'. + + .. versionadded:: 1.1 + + .. versionchanged:: 1.4 + html_search_options for Japanese is re-organized and any custom splitter + can be used by `type`_ settings. + + The Chinese support has these options: + + * ``dict`` -- the ``jieba`` dictionary path if want to use + custom dictionary. + +.. confval:: html_search_scorer + + The name of a JavaScript file (relative to the configuration directory) that + implements a search results scorer. If empty, the default will be used. + + .. XXX describe interface for scorer here + + .. versionadded:: 1.2 + +.. confval:: html_scaled_image_link + + If true, images itself links to the original image if it doesn't have + 'target' option or scale related options: 'scale', 'width', 'height'. + The default is ``True``. + + Document authors can this feature manually with giving ``no-scaled-link`` + class to the image: + + .. code-block:: rst + + .. image:: sphinx.png + :scale: 50% + :class: no-scaled-link + + .. versionadded:: 1.3 + + .. versionchanged:: 2.4 + + It is disabled for images having ``no-scaled-link`` class + +.. confval:: html_math_renderer + + The name of math_renderer extension for HTML output. The default is + ``'mathjax'``. + + .. versionadded:: 1.8 + +.. confval:: html_experimental_html5_writer + + Output is processed with HTML5 writer. This feature needs docutils 0.13 or + newer. Default is ``False``. + + .. versionadded:: 1.6 + + .. deprecated:: 2.0 + +.. confval:: html4_writer + + Output is processed with HTML4 writer. Default is ``False``. + +Options for Single HTML output +------------------------------- + +.. confval:: singlehtml_sidebars + + Custom sidebar templates, must be a dictionary that maps document names to + template names. And it only allows a key named `'index'`. All other keys + are ignored. For more information, refer to :confval:`html_sidebars`. By + default, it is same as :confval:`html_sidebars`. + + +.. _htmlhelp-options: + +Options for HTML help output +----------------------------- + +.. confval:: htmlhelp_basename + + Output file base name for HTML help builder. Default is ``'pydoc'``. + +.. confval:: htmlhelp_file_suffix + + This is the file name suffix for generated HTML help files. The + default is ``".html"``. + + .. versionadded:: 2.0 + +.. confval:: htmlhelp_link_suffix + + Suffix for generated links to HTML files. The default is ``".html"``. + + .. versionadded:: 2.0 + + +.. _applehelp-options: + +Options for Apple Help output +----------------------------- + +.. versionadded:: 1.3 + +These options influence the Apple Help output. This builder derives from the +HTML builder, so the HTML options also apply where appropriate. + +.. note:: + + Apple Help output will only work on Mac OS X 10.6 and higher, as it + requires the :program:`hiutil` and :program:`codesign` command line tools, + neither of which are Open Source. + + You can disable the use of these tools using + :confval:`applehelp_disable_external_tools`, but the result will not be a + valid help book until the indexer is run over the ``.lproj`` folders within + the bundle. + +.. confval:: applehelp_bundle_name + + The basename for the Apple Help Book. Defaults to the :confval:`project` + name. + +.. confval:: applehelp_bundle_id + + The bundle ID for the help book bundle. + + .. warning:: + + You *must* set this value in order to generate Apple Help. + +.. confval:: applehelp_dev_region + + The development region. Defaults to ``'en-us'``, which is Apple’s + recommended setting. + +.. confval:: applehelp_bundle_version + + The bundle version (as a string). Defaults to ``'1'``. + +.. confval:: applehelp_icon + + The help bundle icon file, or ``None`` for no icon. According to Apple's + documentation, this should be a 16-by-16 pixel version of the application's + icon with a transparent background, saved as a PNG file. + +.. confval:: applehelp_kb_product + + The product tag for use with :confval:`applehelp_kb_url`. Defaults to + :samp:`'{<project>}-{<release>}'`. + +.. confval:: applehelp_kb_url + + The URL for your knowledgebase server, + e.g. ``https://example.com/kbsearch.py?p='product'&q='query'&l='lang'``. + Help Viewer will replace the values ``'product'``, ``'query'`` and + ``'lang'`` at runtime with the contents of :confval:`applehelp_kb_product`, + the text entered by the user in the search box and the user's system + language respectively. + + Defaults to ``None`` for no remote search. + +.. confval:: applehelp_remote_url + + The URL for remote content. You can place a copy of your Help Book's + ``Resources`` folder at this location and Help Viewer will attempt to use + it to fetch updated content. + + e.g. if you set it to ``https://example.com/help/Foo/`` and Help Viewer + wants a copy of ``index.html`` for an English speaking customer, it will + look at ``https://example.com/help/Foo/en.lproj/index.html``. + + Defaults to ``None`` for no remote content. + +.. confval:: applehelp_index_anchors + + If ``True``, tell the help indexer to index anchors in the generated HTML. + This can be useful for jumping to a particular topic using the + ``AHLookupAnchor`` function or the ``openHelpAnchor:inBook:`` method in + your code. It also allows you to use ``help:anchor`` URLs; see the Apple + documentation for more information on this topic. + +.. confval:: applehelp_min_term_length + + Controls the minimum term length for the help indexer. Defaults to + ``None``, which means the default will be used. + +.. confval:: applehelp_stopwords + + Either a language specification (to use the built-in stopwords), or the + path to a stopwords plist, or ``None`` if you do not want to use stopwords. + The default stopwords plist can be found at + ``/usr/share/hiutil/Stopwords.plist`` and contains, at time of writing, + stopwords for the following languages: + + ========= ==== + Language Code + ========= ==== + English en + German de + Spanish es + French fr + Swedish sv + Hungarian hu + Italian it + ========= ==== + + Defaults to :confval:`language`, or if that is not set, to :confval:`en`. + +.. confval:: applehelp_locale + + Specifies the locale to generate help for. This is used to determine + the name of the ``.lproj`` folder inside the Help Book’s ``Resources``, and + is passed to the help indexer. + + Defaults to :confval:`language`, or if that is not set, to :confval:`en`. + +.. confval:: applehelp_title + + Specifies the help book title. Defaults to :samp:`'{<project>} Help'`. + +.. confval:: applehelp_codesign_identity + + Specifies the identity to use for code signing, or ``None`` if code signing + is not to be performed. + + Defaults to the value of the environment variable ``CODE_SIGN_IDENTITY``, + which is set by Xcode for script build phases, or ``None`` if that variable + is not set. + +.. confval:: applehelp_codesign_flags + + A *list* of additional arguments to pass to :program:`codesign` when + signing the help book. + + Defaults to a list based on the value of the environment variable + ``OTHER_CODE_SIGN_FLAGS``, which is set by Xcode for script build phases, + or the empty list if that variable is not set. + +.. confval:: applehelp_indexer_path + + The path to the :program:`hiutil` program. Defaults to + ``'/usr/bin/hiutil'``. + +.. confval:: applehelp_codesign_path + + The path to the :program:`codesign` program. Defaults to + ``'/usr/bin/codesign'``. + +.. confval:: applehelp_disable_external_tools + + If ``True``, the builder will not run the indexer or the code signing tool, + no matter what other settings are specified. + + This is mainly useful for testing, or where you want to run the Sphinx + build on a non-Mac OS X platform and then complete the final steps on OS X + for some reason. + + Defaults to ``False``. + + +.. _epub-options: + +Options for epub output +----------------------- + +These options influence the epub output. As this builder derives from the HTML +builder, the HTML options also apply where appropriate. The actual values for +some of the options is not really important, they just have to be entered into +the `Dublin Core metadata <http://dublincore.org/>`_. + +.. confval:: epub_basename + + The basename for the epub file. It defaults to the :confval:`project` name. + +.. confval:: epub_theme + + 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. + +.. confval:: epub_theme_options + + A dictionary of options that influence the look and feel of the selected + theme. These are theme-specific. For the options understood by the builtin + themes, see :ref:`this section <builtin-themes>`. + + .. versionadded:: 1.2 + +.. confval:: epub_title + + The title of the document. It defaults to the :confval:`html_title` option + but can be set independently for epub creation. It defaults to the + :confval:`project` option. + + .. versionchanged:: 2.0 + It defaults to the ``project`` option. + +.. confval:: epub_description + + The description of the document. The default value is ``'unknown'``. + + .. versionadded:: 1.4 + + .. versionchanged:: 1.5 + Renamed from ``epub3_description`` + +.. confval:: epub_author + + The author of the document. This is put in the Dublin Core metadata. It + defaults to the :confval:`author` option. + +.. confval:: epub_contributor + + The name of a person, organization, etc. that played a secondary role in + the creation of the content of an EPUB Publication. The default value is + ``'unknown'``. + + .. versionadded:: 1.4 + + .. versionchanged:: 1.5 + Renamed from ``epub3_contributor`` + +.. confval:: epub_language + + The language of the document. This is put in the Dublin Core metadata. The + default is the :confval:`language` option or ``'en'`` if unset. + +.. confval:: epub_publisher + + The publisher of the document. This is put in the Dublin Core metadata. + You may use any sensible string, e.g. the project homepage. The defaults to + the :confval:`author` option. + +.. confval:: epub_copyright + + The copyright of the document. It defaults to the :confval:`copyright` + option but can be set independently for epub creation. + +.. confval:: epub_identifier + + An identifier for the document. This is put in the Dublin Core metadata. + For published documents this is the ISBN number, but you can also use an + alternative scheme, e.g. the project homepage. The default value is + ``'unknown'``. + +.. confval:: epub_scheme + + The publication scheme for the :confval:`epub_identifier`. This is put in + the Dublin Core metadata. For published books the scheme is ``'ISBN'``. If + you use the project homepage, ``'URL'`` seems reasonable. The default value + is ``'unknown'``. + +.. confval:: epub_uid + + A unique identifier for the document. This is put in the Dublin Core + metadata. You may use a + `XML's Name format <https://www.w3.org/TR/REC-xml/#NT-NameStartChar>`_ + string. You can't use hyphen, period, numbers as a first character. The + default value is ``'unknown'``. + +.. confval:: epub_cover + + The cover page information. This is a tuple containing the filenames of + the cover image and the html template. The rendered html cover page is + inserted as the first item in the spine in :file:`content.opf`. If the + template filename is empty, no html cover page is created. No cover at all + is created if the tuple is empty. Examples:: + + epub_cover = ('_static/cover.png', 'epub-cover.html') + epub_cover = ('_static/cover.png', '') + epub_cover = () + + The default value is ``()``. + + .. versionadded:: 1.1 + +.. confval:: epub_css_files + + A list of CSS files. The entry must be a *filename* string or a tuple + containing the *filename* string and the *attributes* dictionary. For more + information, see :confval:`html_css_files`. + + .. versionadded:: 1.8 + +.. confval:: epub_guide + + Meta data for the guide element of :file:`content.opf`. This is a + sequence of tuples containing the *type*, the *uri* and the *title* of + the optional guide information. See the OPF documentation + at `<http://idpf.org/epub>`_ for details. If possible, default entries + for the *cover* and *toc* types are automatically inserted. However, + the types can be explicitly overwritten if the default entries are not + appropriate. Example:: + + epub_guide = (('cover', 'cover.html', u'Cover Page'),) + + The default value is ``()``. + +.. confval:: epub_pre_files + + Additional files that should be inserted before the text generated by + Sphinx. It is a list of tuples containing the file name and the title. + If the title is empty, no entry is added to :file:`toc.ncx`. Example:: + + epub_pre_files = [ + ('index.html', 'Welcome'), + ] + + The default value is ``[]``. + +.. confval:: epub_post_files + + Additional files that should be inserted after the text generated by Sphinx. + It is a list of tuples containing the file name and the title. This option + can be used to add an appendix. If the title is empty, no entry is added + to :file:`toc.ncx`. The default value is ``[]``. + +.. confval:: epub_exclude_files + + A list of files that are generated/copied in the build directory but should + not be included in the epub file. The default value is ``[]``. + +.. confval:: epub_tocdepth + + The depth of the table of contents in the file :file:`toc.ncx`. It should + be an integer greater than zero. The default value is 3. Note: A deeply + nested table of contents may be difficult to navigate. + +.. confval:: epub_tocdup + + This flag determines if a toc entry is inserted again at the beginning of + its nested toc listing. This allows easier navigation to the top of + a chapter, but can be confusing because it mixes entries of different + depth in one list. The default value is ``True``. + +.. confval:: epub_tocscope + + This setting control the scope of the epub table of contents. The setting + can have the following values: + + * ``'default'`` -- include all toc entries that are not hidden (default) + * ``'includehidden'`` -- include all toc entries + + .. versionadded:: 1.2 + +.. confval:: epub_fix_images + + This flag determines if sphinx should try to fix image formats that are not + supported by some epub readers. At the moment palette images with a small + color table are upgraded. You need Pillow, the Python Image Library, + installed to use this option. The default value is ``False`` because the + automatic conversion may lose information. + + .. versionadded:: 1.2 + +.. confval:: epub_max_image_width + + This option specifies the maximum width of images. If it is set to a value + greater than zero, images with a width larger than the given value are + scaled accordingly. If it is zero, no scaling is performed. The default + value is ``0``. You need the Python Image Library (Pillow) installed to use + this option. + + .. versionadded:: 1.2 + +.. confval:: epub_show_urls + + Control whether to display URL addresses. This is very useful for + readers that have no other means to display the linked URL. The + settings can have the following values: + + * ``'inline'`` -- display URLs inline in parentheses (default) + * ``'footnote'`` -- display URLs in footnotes + * ``'no'`` -- do not display URLs + + The display of inline URLs can be customized by adding CSS rules for the + class ``link-target``. + + .. versionadded:: 1.2 + +.. confval:: epub_use_index + + If true, add an index to the epub document. It defaults to the + :confval:`html_use_index` option but can be set independently for epub + creation. + + .. versionadded:: 1.2 + +.. confval:: epub_writing_mode + + It specifies writing direction. It can accept ``'horizontal'`` (default) and + ``'vertical'`` + + .. list-table:: + :header-rows: 1 + :stub-columns: 1 + + - * ``epub_writing_mode`` + * ``'horizontal'`` + * ``'vertical'`` + - * writing-mode [#]_ + * ``horizontal-tb`` + * ``vertical-rl`` + - * page progression + * left to right + * right to left + - * iBook's Scroll Theme support + * scroll-axis is vertical. + * scroll-axis is horizontal. + + .. [#] https://developer.mozilla.org/en-US/docs/Web/CSS/writing-mode + + +.. _latex-options: + +Options for LaTeX output +------------------------ + +These options influence LaTeX output. + +.. confval:: latex_engine + + The LaTeX engine to build the docs. The setting can have the following + values: + + * ``'pdflatex'`` -- PDFLaTeX (default) + * ``'xelatex'`` -- XeLaTeX + * ``'lualatex'`` -- LuaLaTeX + * ``'platex'`` -- pLaTeX (default if :confval:`language` is ``'ja'``) + * ``'uplatex'`` -- upLaTeX (experimental) + + ``'pdflatex'``\ 's support for Unicode characters is limited. + + .. note:: + + 2.0 adds to ``'pdflatex'`` support in Latin language document of + occasional Cyrillic or Greek letters or words. This is not automatic, + see the discussion of the :confval:`latex_elements` ``'fontenc'`` key. + + If your project uses Unicode characters, setting the engine to + ``'xelatex'`` or ``'lualatex'`` and making sure to use an OpenType font + with wide-enough glyph coverage is often easier than trying to make + ``'pdflatex'`` work with the extra Unicode characters. Since Sphinx 2.0 + the default is the GNU FreeFont which covers well Latin, Cyrillic and + Greek. + + .. versionchanged:: 2.1.0 + + Use ``xelatex`` (and LaTeX package ``xeCJK``) by default for Chinese + documents. + + .. versionchanged:: 2.2.1 + + Use ``xelatex`` by default for Greek documents. + + .. versionchanged:: 2.3 + + Add ``uplatex`` support. + + Contrarily to :ref:`MathJaX math rendering in HTML output <math-support>`, + LaTeX requires some extra configuration to support Unicode literals in + :rst:dir:`math`: the only comprehensive solution (as far as we know) is to + use ``'xelatex'`` or ``'lualatex'`` *and* to add + ``r'\usepackage{unicode-math}'`` (e.g. via the :confval:`latex_elements` + ``'preamble'`` key). You may prefer + ``r'\usepackage[math-style=literal]{unicode-math}'`` to keep a Unicode + literal such as ``α`` (U+03B1) for example as is in output, rather than + being rendered as :math:`\alpha`. + +.. confval:: latex_documents + + This value determines how to group the document tree into LaTeX source files. + It must be a list of tuples ``(startdocname, targetname, title, author, + theme, toctree_only)``, where the items are: + + *startdocname* + String that specifies the :term:`document name` of the LaTeX file's master + document. All documents referenced by the *startdoc* document in TOC trees + will be included in the LaTeX file. (If you want to use the default master + document for your LaTeX build, provide your :confval:`master_doc` here.) + + *targetname* + File name of the LaTeX file in the output directory. + + *title* + LaTeX document title. Can be empty to use the title of the *startdoc* + document. This is inserted as LaTeX markup, so special characters like a + backslash or ampersand must be represented by the proper LaTeX commands if + they are to be inserted literally. + + *author* + Author for the LaTeX document. The same LaTeX markup caveat as for *title* + applies. Use ``\\and`` to separate multiple authors, as in: + ``'John \\and Sarah'`` (backslashes must be Python-escaped to reach LaTeX). + + *theme* + LaTeX theme. See :confval:`latex_theme`. + + *toctree_only* + Must be ``True`` or ``False``. If true, the *startdoc* document itself is + not included in the output, only the documents referenced by it via TOC + trees. With this option, you can put extra stuff in the master document + that shows up in the HTML, but not the LaTeX output. + + .. versionadded:: 1.2 + In the past including your own document class required you to prepend the + document class name with the string "sphinx". This is not necessary + anymore. + + .. versionadded:: 0.3 + The 6th item ``toctree_only``. Tuples with 5 items are still accepted. + +.. confval:: latex_logo + + If given, this must be the name of an image file (relative to the + configuration directory) that is the logo of the docs. It is placed at the + top of the title page. Default: ``None``. + +.. confval:: latex_toplevel_sectioning + + This value determines the topmost sectioning unit. It should be chosen from + ``'part'``, ``'chapter'`` or ``'section'``. The default is ``None``; + the topmost + sectioning unit is switched by documentclass: ``section`` is used if + documentclass will be ``howto``, otherwise ``chapter`` will be used. + + Note that if LaTeX uses ``\part`` command, then the numbering of sectioning + units one level deep gets off-sync with HTML numbering, because LaTeX + numbers continuously ``\chapter`` (or ``\section`` for ``howto``.) + + .. versionadded:: 1.4 + +.. confval:: latex_appendices + + A list of document names to append as an appendix to all manuals. + +.. confval:: latex_domain_indices + + If true, generate domain-specific indices in addition to the general index. + For e.g. the Python domain, this is the global module index. Default is + ``True``. + + This value can be a bool or a list of index names that should be generated, + like for :confval:`html_domain_indices`. + + .. versionadded:: 1.0 + +.. confval:: latex_show_pagerefs + + If true, add page references after internal references. This is very useful + for printed copies of the manual. Default is ``False``. + + .. versionadded:: 1.0 + +.. confval:: latex_show_urls + + Control whether to display URL addresses. This is very useful for printed + copies of the manual. The setting can have the following values: + + * ``'no'`` -- do not display URLs (default) + * ``'footnote'`` -- display URLs in footnotes + * ``'inline'`` -- display URLs inline in parentheses + + .. versionadded:: 1.0 + .. versionchanged:: 1.1 + This value is now a string; previously it was a boolean value, and a true + value selected the ``'inline'`` display. For backwards compatibility, + ``True`` is still accepted. + +.. confval:: latex_use_latex_multicolumn + + The default is ``False``: it means that Sphinx's own macros are used for + merged cells from grid tables. They allow general contents (literal blocks, + lists, blockquotes, ...) but may have problems if the + :rst:dir:`tabularcolumns` directive was used to inject LaTeX mark-up of the + type ``>{..}``, ``<{..}``, ``@{..}`` as column specification. + + Setting to ``True`` means to use LaTeX's standard ``\multicolumn``; this is + incompatible with literal blocks in the horizontally merged cell, and also + with multiple paragraphs in such cell if the table is rendered using + ``tabulary``. + + .. versionadded:: 1.6 + +.. confval:: latex_use_xindy + + If ``True``, the PDF build from the LaTeX files created by Sphinx + will use :program:`xindy` (doc__) rather than :program:`makeindex` + for preparing the index of general terms (from :rst:dir:`index` + usage). This means that words with UTF-8 characters will get + ordered correctly for the :confval:`language`. + + __ http://xindy.sourceforge.net/ + + - This option is ignored if :confval:`latex_engine` is ``'platex'`` + (Japanese documents; :program:`mendex` replaces :program:`makeindex` + then). + + - The default is ``True`` for ``'xelatex'`` or ``'lualatex'`` as + :program:`makeindex`, if any indexed term starts with a non-ascii + character, creates ``.ind`` files containing invalid bytes for + UTF-8 encoding. With ``'lualatex'`` this then breaks the PDF + build. + + - The default is ``False`` for ``'pdflatex'`` but ``True`` is + recommended for non-English documents as soon as some indexed + terms use non-ascii characters from the language script. + + Sphinx adds to :program:`xindy` base distribution some dedicated support + for using ``'pdflatex'`` engine with Cyrillic scripts. And whether with + ``'pdflatex'`` or Unicode engines, Cyrillic documents handle correctly the + indexing of Latin names, even with diacritics. + + .. versionadded:: 1.8 + +.. confval:: latex_elements + + .. versionadded:: 0.5 + + Its :ref:`documentation <latex_elements_confval>` has moved to :doc:`/latex`. + +.. confval:: latex_docclass + + A dictionary mapping ``'howto'`` and ``'manual'`` to names of real document + classes that will be used as the base for the two Sphinx classes. Default + is to use ``'article'`` for ``'howto'`` and ``'report'`` for ``'manual'``. + + .. versionadded:: 1.0 + + .. versionchanged:: 1.5 + + In Japanese docs (:confval:`language` is ``'ja'``), by default + ``'jreport'`` is used for ``'howto'`` and ``'jsbook'`` for ``'manual'``. + +.. confval:: latex_additional_files + + A list of file names, relative to the configuration directory, to copy to + the build directory when building LaTeX output. This is useful to copy + files that Sphinx doesn't copy automatically, e.g. if they are referenced in + custom LaTeX added in ``latex_elements``. Image files that are referenced + in source files (e.g. via ``.. image::``) are copied automatically. + + You have to make sure yourself that the filenames don't collide with those + of any automatically copied files. + + .. versionadded:: 0.6 + + .. versionchanged:: 1.2 + This overrides the files which is provided from Sphinx such as + ``sphinx.sty``. + +.. confval:: latex_theme + + The "theme" that the LaTeX output should use. It is a collection of settings + for LaTeX output (ex. document class, top level sectioning unit and so on). + + As a built-in LaTeX themes, ``manual`` and ``howto`` are bundled. + + ``manual`` + A LaTeX theme for writing a manual. It imports the ``report`` document + class (Japanese documents use ``jsbook``). + + ``howto`` + A LaTeX theme for writing an article. It imports the ``article`` document + class (Japanese documents use ``jreport`` rather). :confval:`latex_appendices` + is available only for this theme. + + It defaults to ``'manual'``. + + .. versionadded:: 3.0 + +.. confval:: latex_theme_path + + A list of paths that contain custom LaTeX themes as subdirectories. Relative + paths are taken as relative to the configuration directory. + + .. versionadded:: 3.0 + + +.. _text-options: + +Options for text output +----------------------- + +These options influence text output. + +.. confval:: text_newlines + + Determines which end-of-line character(s) are used in text output. + + * ``'unix'``: use Unix-style line endings (``\n``) + * ``'windows'``: use Windows-style line endings (``\r\n``) + * ``'native'``: use the line ending style of the platform the documentation + is built on + + Default: ``'unix'``. + + .. versionadded:: 1.1 + +.. confval:: text_sectionchars + + A string of 7 characters that should be used for underlining sections. + The first character is used for first-level headings, the second for + second-level headings and so on. + + The default is ``'*=-~"+`'``. + + .. versionadded:: 1.1 + +.. confval:: text_add_secnumbers + + A boolean that decides whether section numbers are included in text output. + Default is ``True``. + + .. versionadded:: 1.7 + +.. confval:: text_secnumber_suffix + + Suffix for section numbers in text output. Default: ``". "``. Set to + ``" "`` to suppress the final dot on section numbers. + + .. versionadded:: 1.7 + + +.. _man-options: + +Options for manual page output +------------------------------ + +These options influence manual page output. + +.. confval:: man_pages + + This value determines how to group the document tree into manual pages. It + must be a list of tuples ``(startdocname, name, description, authors, + section)``, where the items are: + + *startdocname* + String that specifies the :term:`document name` of the manual page's master + document. All documents referenced by the *startdoc* document in TOC trees + will be included in the manual file. (If you want to use the default + master document for your manual pages build, use your :confval:`master_doc` + here.) + + *name* + Name of the manual page. This should be a short string without spaces or + special characters. It is used to determine the file name as well as the + name of the manual page (in the NAME section). + + *description* + Description of the manual page. This is used in the NAME section. + + *authors* + A list of strings with authors, or a single string. Can be an empty + string or list if you do not want to automatically generate an AUTHORS + section in the manual page. + + *section* + The manual page section. Used for the output file name as well as in the + manual page header. + + .. versionadded:: 1.0 + +.. confval:: man_show_urls + + If true, add URL addresses after links. Default is ``False``. + + .. versionadded:: 1.1 + + +.. _texinfo-options: + +Options for Texinfo output +-------------------------- + +These options influence Texinfo output. + +.. confval:: texinfo_documents + + This value determines how to group the document tree into Texinfo source + files. It must be a list of tuples ``(startdocname, targetname, title, + author, dir_entry, description, category, toctree_only)``, where the items + are: + + *startdocname* + String that specifies the :term:`document name` of the the Texinfo file's + master document. All documents referenced by the *startdoc* document in + TOC trees will be included in the Texinfo file. (If you want to use the + default master document for your Texinfo build, provide your + :confval:`master_doc` here.) + + *targetname* + File name (no extension) of the Texinfo file in the output directory. + + *title* + Texinfo document title. Can be empty to use the title of the *startdoc* + document. Inserted as Texinfo markup, so special characters like ``@`` and + ``{}`` will need to be escaped to be inserted literally. + + *author* + Author for the Texinfo document. Inserted as Texinfo markup. Use ``@*`` + to separate multiple authors, as in: ``'John@*Sarah'``. + + *dir_entry* + The name that will appear in the top-level ``DIR`` menu file. + + *description* + Descriptive text to appear in the top-level ``DIR`` menu file. + + *category* + Specifies the section which this entry will appear in the top-level + ``DIR`` menu file. + + *toctree_only* + Must be ``True`` or ``False``. If true, the *startdoc* document itself is + not included in the output, only the documents referenced by it via TOC + trees. With this option, you can put extra stuff in the master document + that shows up in the HTML, but not the Texinfo output. + + .. versionadded:: 1.1 + +.. confval:: texinfo_appendices + + A list of document names to append as an appendix to all manuals. + + .. versionadded:: 1.1 + +.. confval:: texinfo_domain_indices + + If true, generate domain-specific indices in addition to the general index. + For e.g. the Python domain, this is the global module index. Default is + ``True``. + + This value can be a bool or a list of index names that should be generated, + like for :confval:`html_domain_indices`. + + .. versionadded:: 1.1 + +.. confval:: texinfo_show_urls + + Control how to display URL addresses. + + * ``'footnote'`` -- display URLs in footnotes (default) + * ``'no'`` -- do not display URLs + * ``'inline'`` -- display URLs inline in parentheses + + .. versionadded:: 1.1 + +.. confval:: texinfo_no_detailmenu + + If true, do not generate a ``@detailmenu`` in the "Top" node's menu + containing entries for each sub-node in the document. Default is ``False``. + + .. versionadded:: 1.2 + +.. confval:: texinfo_elements + + A dictionary that contains Texinfo snippets that override those Sphinx + usually puts into the generated ``.texi`` files. + + * Keys that you may want to override include: + + ``'paragraphindent'`` + Number of spaces to indent the first line of each paragraph, default + ``2``. Specify ``0`` for no indentation. + + ``'exampleindent'`` + Number of spaces to indent the lines for examples or literal blocks, + default ``4``. Specify ``0`` for no indentation. + + ``'preamble'`` + Texinfo markup inserted near the beginning of the file. + + ``'copying'`` + Texinfo markup inserted within the ``@copying`` block and displayed + after the title. The default value consists of a simple title page + identifying the project. + + * Keys that are set by other options and therefore should not be overridden + are: + + ``'author'`` + ``'body'`` + ``'date'`` + ``'direntry'`` + ``'filename'`` + ``'project'`` + ``'release'`` + ``'title'`` + + .. versionadded:: 1.1 + + +.. _qthelp-options: + +Options for QtHelp output +-------------------------- + +These options influence qthelp output. As this builder derives from the HTML +builder, the HTML options also apply where appropriate. + +.. confval:: qthelp_basename + + The basename for the qthelp file. It defaults to the :confval:`project` + name. + +.. confval:: qthelp_namespace + + The namespace for the qthelp file. It defaults to + ``org.sphinx.<project_name>.<project_version>``. + +.. confval:: qthelp_theme + + The HTML theme for the qthelp output. + This defaults to ``'nonav'``. + +.. confval:: qthelp_theme_options + + A dictionary of options that influence the look and feel of the selected + theme. These are theme-specific. For the options understood by the builtin + themes, see :ref:`this section <builtin-themes>`. + + +Options for the linkcheck builder +--------------------------------- + +.. confval:: linkcheck_ignore + + A list of regular expressions that match URIs that should not be checked + when doing a ``linkcheck`` build. Example:: + + linkcheck_ignore = [r'http://localhost:\d+/'] + + .. versionadded:: 1.1 + +.. confval:: linkcheck_retries + + The number of times the linkcheck builder will attempt to check a URL before + declaring it broken. Defaults to 1 attempt. + + .. versionadded:: 1.4 + +.. confval:: linkcheck_timeout + + A timeout value, in seconds, for the linkcheck builder. The default is to + use Python's global socket timeout. + + .. versionadded:: 1.1 + +.. confval:: linkcheck_workers + + The number of worker threads to use when checking links. Default is 5 + threads. + + .. versionadded:: 1.1 + +.. confval:: linkcheck_anchors + + If true, check the validity of ``#anchor``\ s in links. Since this requires + downloading the whole document, it's considerably slower when enabled. + Default is ``True``. + + .. versionadded:: 1.2 + +.. confval:: linkcheck_anchors_ignore + + A list of regular expressions that match anchors Sphinx should skip when + checking the validity of anchors in links. This allows skipping anchors that + a website's JavaScript adds to control dynamic pages or when triggering an + internal REST request. Default is ``["^!"]``. + + .. note:: + + If you want to ignore anchors of a specific page or of pages that match a + specific pattern (but still check occurrences of the same page(s) that + don't have anchors), use :confval:`linkcheck_ignore` instead, for example + as follows:: + + linkcheck_ignore = [ + 'http://www.sphinx-doc.org/en/1.7/intro.html#' + ] + + .. versionadded:: 1.5 + +.. confval:: linkcheck_auth + + Pass authentication information when doing a ``linkcheck`` build. + + A list of ``(regex_pattern, auth_info)`` tuples where the items are: + + *regex_pattern* + A regular expression that matches a URI. + *auth_info* + Authentication information to use for that URI. The value can be anything + that is understood by the ``requests`` library (see `requests + Authentication <requests-auth>`_ for details). + + .. _requests-auth: https://requests.readthedocs.io/en/master/user/authentication/ + + The ``linkcheck`` builder will use the first matching ``auth_info`` value + it can find in the :confval:`linkcheck_auth` list, so values earlier in the + list have higher priority. + + Example:: + + linkcheck_auth = [ + ('https://foo\.yourcompany\.com/.+', ('johndoe', 'secret')), + ('https://.+\.yourcompany\.com/.+', HTTPDigestAuth(...)), + ] + + .. versionadded:: 2.3 + + +Options for the XML builder +--------------------------- + +.. confval:: xml_pretty + + If true, pretty-print the XML. Default is ``True``. + + .. versionadded:: 1.2 + + +.. rubric:: Footnotes + +.. [1] A note on available globbing syntax: you can use the standard shell + constructs ``*``, ``?``, ``[...]`` and ``[!...]`` with the feature that + these all don't match slashes. A double star ``**`` can be used to + match any sequence of characters *including* slashes. + + +.. _c-config: + +Options for the C domain +------------------------ + +.. confval:: c_id_attributes + + A list of strings that the parser additionally should accept as attributes. + This can for example be used when attributes have been ``#define`` d for + portability. + + .. versionadded:: 3.0 + +.. confval:: c_paren_attributes + + A list of strings that the parser additionally should accept as attributes + with one argument. That is, if ``my_align_as`` is in the list, then + ``my_align_as(X)`` is parsed as an attribute for all strings ``X`` that have + balanced braces (``()``, ``[]``, and ``{}``). This can for example be used + when attributes have been ``#define`` d for portability. + + .. versionadded:: 3.0 + + +.. _cpp-config: + +Options for the C++ domain +-------------------------- + +.. confval:: cpp_index_common_prefix + + A list of prefixes that will be ignored when sorting C++ objects in the + global index. For example ``['awesome_lib::']``. + + .. versionadded:: 1.5 + +.. confval:: cpp_id_attributes + + A list of strings that the parser additionally should accept as attributes. + This can for example be used when attributes have been ``#define`` d for + portability. + + .. versionadded:: 1.5 + +.. confval:: cpp_paren_attributes + + A list of strings that the parser additionally should accept as attributes + with one argument. That is, if ``my_align_as`` is in the list, then + ``my_align_as(X)`` is parsed as an attribute for all strings ``X`` that have + balanced braces (``()``, ``[]``, and ``{}``). This can for example be used + when attributes have been ``#define`` d for portability. + + .. versionadded:: 1.5 + + +Example of configuration file +============================= + +.. literalinclude:: /_static/conf.py.txt + :language: python diff --git a/sphinx/doc/usage/extensions/autodoc.rst b/sphinx/doc/usage/extensions/autodoc.rst new file mode 100644 index 0000000..60cde1a --- /dev/null +++ b/sphinx/doc/usage/extensions/autodoc.rst @@ -0,0 +1,602 @@ +.. highlight:: rest + +:mod:`sphinx.ext.autodoc` -- Include documentation from docstrings +================================================================== + +.. module:: sphinx.ext.autodoc + :synopsis: Include documentation from docstrings. + +.. index:: pair: automatic; documentation + single: docstring + +This extension can import the modules you are documenting, and pull in +documentation from docstrings in a semi-automatic way. + +.. note:: + + For Sphinx (actually, the Python interpreter that executes Sphinx) to find + your module, it must be importable. That means that the module or the + package must be in one of the directories on :data:`sys.path` -- adapt your + :data:`sys.path` in the configuration file accordingly. + +.. warning:: + + :mod:`~sphinx.ext.autodoc` **imports** the modules to be documented. If any + modules have side effects on import, these will be executed by ``autodoc`` + when ``sphinx-build`` is run. + + If you document scripts (as opposed to library modules), make sure their main + routine is protected by a ``if __name__ == '__main__'`` condition. + +For this to work, the docstrings must of course be written in correct +reStructuredText. You can then use all of the usual Sphinx markup in the +docstrings, and it will end up correctly in the documentation. Together with +hand-written documentation, this technique eases the pain of having to maintain +two locations for documentation, while at the same time avoiding +auto-generated-looking pure API documentation. + +If you prefer `NumPy`_ or `Google`_ style docstrings over reStructuredText, +you can also enable the :mod:`napoleon <sphinx.ext.napoleon>` extension. +:mod:`napoleon <sphinx.ext.napoleon>` is a preprocessor that converts your +docstrings to correct reStructuredText before :mod:`autodoc` processes them. + +.. _Google: https://github.com/google/styleguide/blob/gh-pages/pyguide.md#38-comments-and-docstrings +.. _NumPy: https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt + + +Directives +---------- + +:mod:`autodoc` provides several directives that are versions of the usual +:rst:dir:`py:module`, :rst:dir:`py:class` and so forth. On parsing time, they +import the corresponding module and extract the docstring of the given objects, +inserting them into the page source under a suitable :rst:dir:`py:module`, +:rst:dir:`py:class` etc. directive. + +.. note:: + + Just as :rst:dir:`py:class` respects the current :rst:dir:`py:module`, + :rst:dir:`autoclass` will also do so. Likewise, :rst:dir:`automethod` will + respect the current :rst:dir:`py:class`. + + +.. rst:directive:: automodule + autoclass + autoexception + + Document a module, class or exception. All three directives will by default + only insert the docstring of the object itself:: + + .. autoclass:: Noodle + + will produce source like this:: + + .. class:: Noodle + + Noodle's docstring. + + The "auto" directives can also contain content of their own, it will be + inserted into the resulting non-auto directive source after the docstring + (but before any automatic member documentation). + + Therefore, you can also mix automatic and non-automatic member documentation, + like so:: + + .. autoclass:: Noodle + :members: eat, slurp + + .. method:: boil(time=10) + + Boil the noodle *time* minutes. + + **Options and advanced usage** + + * If you want to automatically document members, there's a ``members`` + option:: + + .. automodule:: noodle + :members: + + will document all module members (recursively), and :: + + .. autoclass:: Noodle + :members: + + will document all non-private member functions and properties (that is, + those whose name doesn't start with ``_``). + + For modules, ``__all__`` will be respected when looking for members unless + you give the ``ignore-module-all`` flag option. Without + ``ignore-module-all``, the order of the members will also be the order in + ``__all__``. + + You can also give an explicit list of members; only these will then be + documented:: + + .. autoclass:: Noodle + :members: eat, slurp + + * If you want to make the ``members`` option (or other options described + below) the default, see :confval:`autodoc_default_options`. + + .. tip:: + + You can use a negated form, :samp:`'no-{flag}'`, as an option of + autodoc directive, to disable it temporarily. For example:: + + .. automodule:: foo + :no-undoc-members: + + + * Members without docstrings will be left out, unless you give the + ``undoc-members`` flag option:: + + .. automodule:: noodle + :members: + :undoc-members: + + * "Private" members (that is, those named like ``_private`` or ``__private``) + will be included if the ``private-members`` flag option is given. + + .. versionadded:: 1.1 + + * autodoc considers a member private if its docstring contains + ``:meta private:`` in its :ref:`info-field-lists`. + For example: + + .. code-block:: rst + + def my_function(my_arg, my_other_arg): + """blah blah blah + + :meta private: + """ + + .. versionadded:: 3.0 + + * Python "special" members (that is, those named like ``__special__``) will + be included if the ``special-members`` flag option is given:: + + .. autoclass:: my.Class + :members: + :private-members: + :special-members: + + would document both "private" and "special" members of the class. + + .. versionadded:: 1.1 + + .. versionchanged:: 1.2 + The option can now take arguments, i.e. the special members to document. + + * For classes and exceptions, members inherited from base classes will be + left out when documenting all members, unless you give the + ``inherited-members`` option, in addition to ``members``:: + + .. autoclass:: Noodle + :members: + :inherited-members: + + This can be combined with ``undoc-members`` to document *all* available + members of the class or module. + + It can take an ancestor class not to document inherited members from it. + By default, members of ``object`` class are not documented. To show them + all, give ``None`` to the option. + + For example; If your class ``Foo`` is derived from ``list`` class and + you don't want to document ``list.__len__()``, you should specify a + option ``:inherited-members: list`` to avoid special members of list + class. + + Another example; If your class Foo has ``__str__`` special method and + autodoc directive has both ``inherited-members`` and ``special-members``, + ``__str__`` will be documented as in the past, but other special method + that are not implemented in your class ``Foo``. + + Note: this will lead to markup errors if the inherited members come from a + module whose docstrings are not reST formatted. + + .. versionadded:: 0.3 + + .. versionchanged:: 3.0 + + It takes an anchestor class name as an argument. + + * It's possible to override the signature for explicitly documented callable + objects (functions, methods, classes) with the regular syntax that will + override the signature gained from introspection:: + + .. autoclass:: Noodle(type) + + .. automethod:: eat(persona) + + This is useful if the signature from the method is hidden by a decorator. + + .. versionadded:: 0.4 + + * The :rst:dir:`automodule`, :rst:dir:`autoclass` and + :rst:dir:`autoexception` directives also support a flag option called + ``show-inheritance``. When given, a list of base classes will be inserted + just below the class signature (when used with :rst:dir:`automodule`, this + will be inserted for every class that is documented in the module). + + .. versionadded:: 0.4 + + * All autodoc directives support the ``noindex`` flag option that has the + same effect as for standard :rst:dir:`py:function` etc. directives: no + index entries are generated for the documented object (and all + autodocumented members). + + .. versionadded:: 0.4 + + * :rst:dir:`automodule` also recognizes the ``synopsis``, ``platform`` and + ``deprecated`` options that the standard :rst:dir:`py:module` directive + supports. + + .. versionadded:: 0.5 + + * :rst:dir:`automodule` and :rst:dir:`autoclass` also has an ``member-order`` + option that can be used to override the global value of + :confval:`autodoc_member_order` for one directive. + + .. versionadded:: 0.6 + + * The directives supporting member documentation also have a + ``exclude-members`` option that can be used to exclude single member names + from documentation, if all members are to be documented. + + .. versionadded:: 0.6 + + * In an :rst:dir:`automodule` directive with the ``members`` option set, only + module members whose ``__module__`` attribute is equal to the module name + as given to ``automodule`` will be documented. This is to prevent + documentation of imported classes or functions. Set the + ``imported-members`` option if you want to prevent this behavior and + document all available members. Note that attributes from imported modules + will not be documented, because attribute documentation is discovered by + parsing the source file of the current module. + + .. versionadded:: 1.2 + + * Add a list of modules in the :confval:`autodoc_mock_imports` to prevent + import errors to halt the building process when some external dependencies + are not importable at build time. + + .. versionadded:: 1.3 + + +.. rst:directive:: autofunction + autodecorator + autodata + automethod + autoattribute + + These work exactly like :rst:dir:`autoclass` etc., + but do not offer the options used for automatic member documentation. + + :rst:dir:`autodata` and :rst:dir:`autoattribute` support the ``annotation`` + option. The option controls how the value of variable is shown. If specified + without arguments, only the name of the variable will be printed, and its value + is not shown:: + + .. autodata:: CD_DRIVE + :annotation: + + If the option specified with arguments, it is printed after the name as a value + of the variable:: + + .. autodata:: CD_DRIVE + :annotation: = your CD device name + + By default, without ``annotation`` option, Sphinx tries to obtain the value of + the variable and print it after the name. + + For module data members and class attributes, documentation can either be put + into a comment with special formatting (using a ``#:`` to start the comment + instead of just ``#``), or in a docstring *after* the definition. Comments + need to be either on a line of their own *before* the definition, or + immediately after the assignment *on the same line*. The latter form is + restricted to one line only. + + This means that in the following class definition, all attributes can be + autodocumented:: + + class Foo: + """Docstring for class Foo.""" + + #: Doc comment for class attribute Foo.bar. + #: It can have multiple lines. + bar = 1 + + flox = 1.5 #: Doc comment for Foo.flox. One line only. + + baz = 2 + """Docstring for class attribute Foo.baz.""" + + def __init__(self): + #: Doc comment for instance attribute qux. + self.qux = 3 + + self.spam = 4 + """Docstring for instance attribute spam.""" + + .. versionchanged:: 0.6 + :rst:dir:`autodata` and :rst:dir:`autoattribute` can now extract + docstrings. + .. versionchanged:: 1.1 + Comment docs are now allowed on the same line after an assignment. + .. versionchanged:: 1.2 + :rst:dir:`autodata` and :rst:dir:`autoattribute` have an ``annotation`` + option. + .. versionchanged:: 2.0 + :rst:dir:`autodecorator` added. + + .. note:: + + If you document decorated functions or methods, keep in mind that autodoc + retrieves its docstrings by importing the module and inspecting the + ``__doc__`` attribute of the given function or method. That means that if + a decorator replaces the decorated function with another, it must copy the + original ``__doc__`` to the new function. + + +Configuration +------------- + +There are also config values that you can set: + +.. confval:: autoclass_content + + This value selects what content will be inserted into the main body of an + :rst:dir:`autoclass` directive. The possible values are: + + ``"class"`` + Only the class' docstring is inserted. This is the default. You can + still document ``__init__`` as a separate method using + :rst:dir:`automethod` or the ``members`` option to :rst:dir:`autoclass`. + ``"both"`` + Both the class' and the ``__init__`` method's docstring are concatenated + and inserted. + ``"init"`` + Only the ``__init__`` method's docstring is inserted. + + .. versionadded:: 0.3 + + If the class has no ``__init__`` method or if the ``__init__`` method's + docstring is empty, but the class has a ``__new__`` method's docstring, + it is used instead. + + .. versionadded:: 1.4 + +.. confval:: autodoc_member_order + + This value selects if automatically documented members are sorted + alphabetical (value ``'alphabetical'``), by member type (value + ``'groupwise'``) or by source order (value ``'bysource'``). The default is + alphabetical. + + Note that for source order, the module must be a Python module with the + source code available. + + .. versionadded:: 0.6 + .. versionchanged:: 1.0 + Support for ``'bysource'``. + +.. confval:: autodoc_default_flags + + This value is a list of autodoc directive flags that should be automatically + applied to all autodoc directives. The supported flags are ``'members'``, + ``'undoc-members'``, ``'private-members'``, ``'special-members'``, + ``'inherited-members'``, ``'show-inheritance'``, ``'ignore-module-all'`` + and ``'exclude-members'``. + + .. versionadded:: 1.0 + + .. deprecated:: 1.8 + + Integrated into :confval:`autodoc_default_options`. + +.. confval:: autodoc_default_options + + The default options for autodoc directives. They are applied to all autodoc + directives automatically. It must be a dictionary which maps option names + to the values. For example:: + + autodoc_default_options = { + 'members': 'var1, var2', + 'member-order': 'bysource', + 'special-members': '__init__', + 'undoc-members': True, + 'exclude-members': '__weakref__' + } + + Setting ``None`` or ``True`` to the value is equivalent to giving only the + option name to the directives. + + The supported options are ``'members'``, ``'member-order'``, + ``'undoc-members'``, ``'private-members'``, ``'special-members'``, + ``'inherited-members'``, ``'show-inheritance'``, ``'ignore-module-all'``, + ``'imported-members'`` and ``'exclude-members'``. + + .. versionadded:: 1.8 + + .. versionchanged:: 2.0 + Accepts ``True`` as a value. + + .. versionchanged:: 2.1 + Added ``'imported-members'``. + +.. confval:: autodoc_docstring_signature + + Functions imported from C modules cannot be introspected, and therefore the + signature for such functions cannot be automatically determined. However, it + is an often-used convention to put the signature into the first line of the + function's docstring. + + If this boolean value is set to ``True`` (which is the default), autodoc will + look at the first line of the docstring for functions and methods, and if it + looks like a signature, use the line as the signature and remove it from the + docstring content. + + .. versionadded:: 1.1 + +.. confval:: autodoc_mock_imports + + This value contains a list of modules to be mocked up. This is useful when + some external dependencies are not met at build time and break the building + process. You may only specify the root package of the dependencies + themselves and omit the sub-modules: + + .. code-block:: python + + autodoc_mock_imports = ["django"] + + Will mock all imports under the ``django`` package. + + .. versionadded:: 1.3 + + .. versionchanged:: 1.6 + This config value only requires to declare the top-level modules that + should be mocked. + +.. confval:: autodoc_typehints + + This value controls how to represents typehints. The setting takes the + following values: + + * ``'signature'`` -- Show typehints as its signature (default) + * ``'description'`` -- Show typehints as content of function or method + * ``'none'`` -- Do not show typehints + + .. versionadded:: 2.1 + .. versionadded:: 3.0 + + New option ``'description'`` is added. + +.. confval:: autodoc_warningiserror + + This value controls the behavior of :option:`sphinx-build -W` during + importing modules. + If ``False`` is given, autodoc forcedly suppresses the error if the imported + module emits warnings. By default, ``True``. + +.. confval:: autodoc_inherit_docstrings + + This value controls the docstrings inheritance. + If set to True the docstring for classes or methods, if not explicitly set, + is inherited form parents. + + The default is ``True``. + + .. versionadded:: 1.7 + +.. confval:: suppress_warnings + :noindex: + + :mod:`autodoc` supports to suppress warning messages via + :confval:`suppress_warnings`. It allows following warnings types in + addition: + + * autodoc + * autodoc.import_object + + +Docstring preprocessing +----------------------- + +autodoc provides the following additional events: + +.. event:: autodoc-process-docstring (app, what, name, obj, options, lines) + + .. versionadded:: 0.4 + + Emitted when autodoc has read and processed a docstring. *lines* is a list + of strings -- the lines of the processed docstring -- that the event handler + can modify **in place** to change what Sphinx puts into the output. + + :param app: the Sphinx application object + :param what: the type of the object which the docstring belongs to (one of + ``"module"``, ``"class"``, ``"exception"``, ``"function"``, ``"method"``, + ``"attribute"``) + :param name: the fully qualified name of the object + :param obj: the object itself + :param options: the options given to the directive: an object with attributes + ``inherited_members``, ``undoc_members``, ``show_inheritance`` and + ``noindex`` that are true if the flag option of same name was given to the + auto directive + :param lines: the lines of the docstring, see above + +.. event:: autodoc-before-process-signature (app, obj, bound_method) + + .. versionadded:: 2.4 + + Emitted before autodoc formats a signature for an object. The event handler + can modify an object to change its signature. + + :param app: the Sphinx application object + :param obj: the object itself + :param bound_method: a boolean indicates an object is bound method or not + +.. event:: autodoc-process-signature (app, what, name, obj, options, signature, return_annotation) + + .. versionadded:: 0.5 + + Emitted when autodoc has formatted a signature for an object. The event + handler can return a new tuple ``(signature, return_annotation)`` to change + what Sphinx puts into the output. + + :param app: the Sphinx application object + :param what: the type of the object which the docstring belongs to (one of + ``"module"``, ``"class"``, ``"exception"``, ``"function"``, ``"method"``, + ``"attribute"``) + :param name: the fully qualified name of the object + :param obj: the object itself + :param options: the options given to the directive: an object with attributes + ``inherited_members``, ``undoc_members``, ``show_inheritance`` and + ``noindex`` that are true if the flag option of same name was given to the + auto directive + :param signature: function signature, as a string of the form + ``"(parameter_1, parameter_2)"``, or ``None`` if introspection didn't + succeed and signature wasn't specified in the directive. + :param return_annotation: function return annotation as a string of the form + ``" -> annotation"``, or ``None`` if there is no return annotation + +The :mod:`sphinx.ext.autodoc` module provides factory functions for commonly +needed docstring processing in event :event:`autodoc-process-docstring`: + +.. autofunction:: cut_lines +.. autofunction:: between + + +Skipping members +---------------- + +autodoc allows the user to define a custom method for determining whether a +member should be included in the documentation by using the following event: + +.. event:: autodoc-skip-member (app, what, name, obj, skip, options) + + .. versionadded:: 0.5 + + Emitted when autodoc has to decide whether a member should be included in the + documentation. The member is excluded if a handler returns ``True``. It is + included if the handler returns ``False``. + + If more than one enabled extension handles the ``autodoc-skip-member`` + event, autodoc will use the first non-``None`` value returned by a handler. + Handlers should return ``None`` to fall back to the skipping behavior of + autodoc and other enabled extensions. + + :param app: the Sphinx application object + :param what: the type of the object which the docstring belongs to (one of + ``"module"``, ``"class"``, ``"exception"``, ``"function"``, ``"method"``, + ``"attribute"``) + :param name: the fully qualified name of the object + :param obj: the object itself + :param skip: a boolean indicating if autodoc will skip this member if the + user handler does not override the decision + :param options: the options given to the directive: an object with attributes + ``inherited_members``, ``undoc_members``, ``show_inheritance`` and + ``noindex`` that are true if the flag option of same name was given to the + auto directive diff --git a/sphinx/doc/usage/extensions/autosectionlabel.rst b/sphinx/doc/usage/extensions/autosectionlabel.rst new file mode 100644 index 0000000..caaa5db --- /dev/null +++ b/sphinx/doc/usage/extensions/autosectionlabel.rst @@ -0,0 +1,47 @@ +.. highlight:: rest + +:mod:`sphinx.ext.autosectionlabel` -- Allow reference sections using its title +============================================================================== + +.. module:: sphinx.ext.autosectionlabel + :synopsis: Allow reference section its title. + +.. versionadded:: 1.4 + +This extension allows you to refer sections its title. This affects to the +reference role (:rst:role:`ref`). + +For example:: + + A Plain Title + ------------- + + This is the text of the section. + + It refers to the section title, see :ref:`A Plain Title`. + + +Internally, this extension generates the labels for each section. If same +section names are used in whole of document, any one is used for a target by +default. The ``autosectionlabel_prefix_document`` configuration variable can be +used to make headings which appear multiple times but in different documents +unique. + + +Configuration +------------- + +.. confval:: autosectionlabel_prefix_document + + True to prefix each section label with the name of the document it is in, + followed by a colon. For example, ``index:Introduction`` for a section + called ``Introduction`` that appears in document ``index.rst``. Useful for + avoiding ambiguity when the same section heading appears in different + documents. + +.. confval:: autosectionlabel_maxdepth + + If set, autosectionlabel chooses the sections for labeling by its depth. For + example, when set 1 to ``autosectionlabel_maxdepth``, labels are generated + only for top level sections, and deeper sections are not labeled. It + defaults to ``None`` (disabled). diff --git a/sphinx/doc/usage/extensions/autosummary.rst b/sphinx/doc/usage/extensions/autosummary.rst new file mode 100644 index 0000000..cedc8a4 --- /dev/null +++ b/sphinx/doc/usage/extensions/autosummary.rst @@ -0,0 +1,288 @@ +.. highlight:: rest + +:mod:`sphinx.ext.autosummary` -- Generate autodoc summaries +=========================================================== + +.. module:: sphinx.ext.autosummary + :synopsis: Generate autodoc summaries + +.. versionadded:: 0.6 + +This extension generates function/method/attribute summary lists, similar to +those output e.g. by Epydoc and other API doc generation tools. This is +especially useful when your docstrings are long and detailed, and putting each +one of them on a separate page makes them easier to read. + +The :mod:`sphinx.ext.autosummary` extension does this in two parts: + +1. There is an :rst:dir:`autosummary` directive for generating summary listings + that contain links to the documented items, and short summary blurbs + extracted from their docstrings. + +2. Optionally, the convenience script :program:`sphinx-autogen` or the new + :confval:`autosummary_generate` config value can be used to generate short + "stub" files for the entries listed in the :rst:dir:`autosummary` directives. + These files by default contain only the corresponding + :mod:`sphinx.ext.autodoc` directive, but can be customized with templates. + +.. rst:directive:: autosummary + + Insert a table that contains links to documented items, and a short summary + blurb (the first sentence of the docstring) for each of them. + + The :rst:dir:`autosummary` directive can also optionally serve as a + :rst:dir:`toctree` entry for the included items. Optionally, stub + ``.rst`` files for these items can also be automatically generated. + + For example, :: + + .. currentmodule:: sphinx + + .. autosummary:: + + environment.BuildEnvironment + util.relative_uri + + produces a table like this: + + .. currentmodule:: sphinx + + .. autosummary:: + + environment.BuildEnvironment + util.relative_uri + + .. currentmodule:: sphinx.ext.autosummary + + Autosummary preprocesses the docstrings and signatures with the same + :event:`autodoc-process-docstring` and :event:`autodoc-process-signature` + hooks as :mod:`~sphinx.ext.autodoc`. + + **Options** + + * If you want the :rst:dir:`autosummary` table to also serve as a + :rst:dir:`toctree` entry, use the ``toctree`` option, for example:: + + .. autosummary:: + :toctree: DIRNAME + + sphinx.environment.BuildEnvironment + sphinx.util.relative_uri + + The ``toctree`` option also signals to the :program:`sphinx-autogen` script + that stub pages should be generated for the entries listed in this + directive. The option accepts a directory name as an argument; + :program:`sphinx-autogen` will by default place its output in this + directory. If no argument is given, output is placed in the same directory + as the file that contains the directive. + + * If you don't want the :rst:dir:`autosummary` to show function signatures in + the listing, include the ``nosignatures`` option:: + + .. autosummary:: + :nosignatures: + + sphinx.environment.BuildEnvironment + sphinx.util.relative_uri + + * You can specify a custom template with the ``template`` option. + For example, :: + + .. autosummary:: + :template: mytemplate.rst + + sphinx.environment.BuildEnvironment + + would use the template :file:`mytemplate.rst` in your + :confval:`templates_path` to generate the pages for all entries + listed. See `Customizing templates`_ below. + + .. versionadded:: 1.0 + + +:program:`sphinx-autogen` -- generate autodoc stub pages +-------------------------------------------------------- + +The :program:`sphinx-autogen` script can be used to conveniently generate stub +documentation pages for items included in :rst:dir:`autosummary` listings. + +For example, the command :: + + $ sphinx-autogen -o generated *.rst + +will read all :rst:dir:`autosummary` tables in the :file:`*.rst` files that have +the ``:toctree:`` option set, and output corresponding stub pages in directory +``generated`` for all documented items. The generated pages by default contain +text of the form:: + + sphinx.util.relative_uri + ======================== + + .. autofunction:: sphinx.util.relative_uri + +If the ``-o`` option is not given, the script will place the output files in the +directories specified in the ``:toctree:`` options. + +For more information, refer to the :doc:`sphinx-autogen documentation +</man/sphinx-autogen>` + + +Generating stub pages automatically +----------------------------------- + +If you do not want to create stub pages with :program:`sphinx-autogen`, you can +also use these config values: + +.. confval:: autosummary_generate + + Boolean indicating whether to scan all found documents for autosummary + directives, and to generate stub pages for each. + + Can also be a list of documents for which stub pages should be generated. + + The new files will be placed in the directories specified in the + ``:toctree:`` options of the directives. + + .. versionchanged:: 2.3 + + Emits :event:`autodoc-skip-member` event as :mod:`~sphinx.ext.autodoc` + does. + +.. confval:: autosummary_generate_overwrite + + If true, autosummary already overwrites stub files by generated contents. + Defaults to true (enabled). + + .. versionadded:: 3.0 + +.. confval:: autosummary_mock_imports + + This value contains a list of modules to be mocked up. See + :confval:`autodoc_mock_imports` for more details. It defaults to + :confval:`autodoc_mock_imports`. + + .. versionadded:: 2.0 + +.. confval:: autosummary_imported_members + + A boolean flag indicating whether to document classes and functions imported + in modules. Default is ``False`` + + .. versionadded:: 2.1 + + +Customizing templates +--------------------- + +.. versionadded:: 1.0 + +You can customize the stub page templates, in a similar way as the HTML Jinja +templates, see :ref:`templating`. (:class:`~sphinx.application.TemplateBridge` +is not supported.) + +.. note:: + + If you find yourself spending much time tailoring the stub templates, this + may indicate that it's a better idea to write custom narrative documentation + instead. + +Autosummary uses the following Jinja template files: + +- :file:`autosummary/base.rst` -- fallback template +- :file:`autosummary/module.rst` -- template for modules +- :file:`autosummary/class.rst` -- template for classes +- :file:`autosummary/function.rst` -- template for functions +- :file:`autosummary/attribute.rst` -- template for class attributes +- :file:`autosummary/method.rst` -- template for class methods + +The following variables available in the templates: + +.. currentmodule:: None + +.. data:: name + + Name of the documented object, excluding the module and class parts. + +.. data:: objname + + Name of the documented object, excluding the module parts. + +.. data:: fullname + + Full name of the documented object, including module and class parts. + +.. data:: module + + Name of the module the documented object belongs to. + +.. data:: class + + Name of the class the documented object belongs to. Only available for + methods and attributes. + +.. data:: underline + + A string containing ``len(full_name) * '='``. Use the ``underline`` filter + instead. + +.. data:: members + + List containing names of all members of the module or class. Only available + for modules and classes. + +.. data:: inherited_members + + List containing names of all inherited members of class. Only available for + classes. + + .. versionadded:: 1.8.0 + +.. data:: functions + + List containing names of "public" functions in the module. Here, "public" + here means that the name does not start with an underscore. Only available + for modules. + +.. data:: classes + + List containing names of "public" classes in the module. Only available for + modules. + +.. data:: exceptions + + List containing names of "public" exceptions in the module. Only available + for modules. + +.. data:: methods + + List containing names of "public" methods in the class. Only available for + classes. + +.. data:: attributes + + List containing names of "public" attributes in the class. Only available + for classes. + + +Additionally, the following filters are available + +.. function:: escape(s) + + Escape any special characters in the text to be used in formatting RST + contexts. For instance, this prevents asterisks making things bold. This + replaces the builtin Jinja `escape filter`_ that does html-escaping. + +.. function:: underline(s, line='=') + :noindex: + + Add a title underline to a piece of text. + +For instance, ``{{ fullname | escape | underline }}`` should be used to produce +the title of a page. + +.. note:: + + You can use the :rst:dir:`autosummary` directive in the stub pages. + Stub pages are generated also based on these directives. + +.. _`escape filter`: http://jinja.pocoo.org/docs/2.9/templates/#escape diff --git a/sphinx/doc/usage/extensions/coverage.rst b/sphinx/doc/usage/extensions/coverage.rst new file mode 100644 index 0000000..46d3105 --- /dev/null +++ b/sphinx/doc/usage/extensions/coverage.rst @@ -0,0 +1,54 @@ +:mod:`sphinx.ext.coverage` -- Collect doc coverage stats +======================================================== + +.. module:: sphinx.ext.coverage + :synopsis: Check Python modules and C API for coverage in the documentation. + +This extension features one additional builder, the :class:`CoverageBuilder`. + +.. class:: CoverageBuilder + + To use this builder, activate the coverage extension in your configuration + file and give ``-b coverage`` on the command line. + +.. todo:: Write this section. + +Several configuration values can be used to specify what the builder +should check: + +.. confval:: coverage_ignore_modules + +.. confval:: coverage_ignore_functions + +.. confval:: coverage_ignore_classes + +.. confval:: coverage_ignore_pyobjects + + List of `Python regular expressions`_. + + If any of these regular expressions matches any part of the full import path + of a Python object, that Python object is excluded from the documentation + coverage report. + + .. versionadded:: 2.1 + +.. confval:: coverage_c_path + +.. confval:: coverage_c_regexes + +.. confval:: coverage_ignore_c_items + +.. confval:: coverage_write_headline + + Set to ``False`` to not write headlines. + + .. versionadded:: 1.1 + +.. confval:: coverage_skip_undoc_in_source + + Skip objects that are not documented in the source with a docstring. + ``False`` by default. + + .. versionadded:: 1.1 + +.. _Python regular expressions: https://docs.python.org/library/re \ No newline at end of file diff --git a/sphinx/doc/usage/extensions/doctest.rst b/sphinx/doc/usage/extensions/doctest.rst new file mode 100644 index 0000000..62d8577 --- /dev/null +++ b/sphinx/doc/usage/extensions/doctest.rst @@ -0,0 +1,360 @@ +.. highlight:: rest + +:mod:`sphinx.ext.doctest` -- Test snippets in the documentation +=============================================================== + +.. module:: sphinx.ext.doctest + :synopsis: Test snippets in the documentation. + +.. index:: pair: automatic; testing + single: doctest + pair: testing; snippets + + +It is often helpful to include snippets of code in your documentation and +demonstrate the results of executing them. But it is important to ensure that +the documentation stays up-to-date with the code. + +This extension allows you to test such code snippets in the documentation in +a natural way. If you mark the code blocks as shown here, the ``doctest`` +builder will collect them and run them as doctest tests. + +Within each document, you can assign each snippet to a *group*. Each group +consists of: + +* zero or more *setup code* blocks (e.g. importing the module to test) +* one or more *test* blocks + +When building the docs with the ``doctest`` builder, groups are collected for +each document and run one after the other, first executing setup code blocks, +then the test blocks in the order they appear in the file. + +There are two kinds of test blocks: + +* *doctest-style* blocks mimic interactive sessions by interleaving Python code + (including the interpreter prompt) and output. + +* *code-output-style* blocks consist of an ordinary piece of Python code, and + optionally, a piece of output for that code. + + +Directives +---------- + +The *group* argument below is interpreted as follows: if it is empty, the block +is assigned to the group named ``default``. If it is ``*``, the block is +assigned to all groups (including the ``default`` group). Otherwise, it must be +a comma-separated list of group names. + +.. rst:directive:: .. testsetup:: [group] + + A setup code block. This code is not shown in the output for other builders, + but executed before the doctests of the group(s) it belongs to. + + +.. rst:directive:: .. testcleanup:: [group] + + A cleanup code block. This code is not shown in the output for other + builders, but executed after the doctests of the group(s) it belongs to. + + .. versionadded:: 1.1 + + +.. rst:directive:: .. doctest:: [group] + + A doctest-style code block. You can use standard :mod:`doctest` flags for + controlling how actual output is compared with what you give as output. The + default set of flags is specified by the :confval:`doctest_default_flags` + configuration variable. + + This directive supports three options: + + * ``hide``, a flag option, hides the doctest block in other builders. By + default it is shown as a highlighted doctest block. + + * ``options``, a string option, can be used to give a comma-separated list of + doctest flags that apply to each example in the tests. (You still can give + explicit flags per example, with doctest comments, but they will show up in + other builders too.) + + * ``pyversion``, a string option, can be used to specify the required Python + version for the example to be tested. For instance, in the following case + the example will be tested only for Python versions greater than 3.3:: + + .. doctest:: + :pyversion: > 3.3 + + The following operands are supported: + + * ``~=``: Compatible release clause + * ``==``: Version matching clause + * ``!=``: Version exclusion clause + * ``<=``, ``>=``: Inclusive ordered comparison clause + * ``<``, ``>``: Exclusive ordered comparison clause + * ``===``: Arbitrary equality clause. + + ``pyversion`` option is followed `PEP-440: Version Specifiers + <https://www.python.org/dev/peps/pep-0440/#version-specifiers>`__. + + .. versionadded:: 1.6 + + .. versionchanged:: 1.7 + + Supported PEP-440 operands and notations + + Note that like with standard doctests, you have to use ``<BLANKLINE>`` to + signal a blank line in the expected output. The ``<BLANKLINE>`` is removed + when building presentation output (HTML, LaTeX etc.). + + Also, you can give inline doctest options, like in doctest:: + + >>> datetime.date.now() # doctest: +SKIP + datetime.date(2008, 1, 1) + + They will be respected when the test is run, but stripped from presentation + output. + + +.. rst:directive:: .. testcode:: [group] + + A code block for a code-output-style test. + + This directive supports one option: + + * ``hide``, a flag option, hides the code block in other builders. By + default it is shown as a highlighted code block. + + .. note:: + + Code in a ``testcode`` block is always executed all at once, no matter how + many statements it contains. Therefore, output will *not* be generated + for bare expressions -- use ``print``. Example:: + + .. testcode:: + + 1+1 # this will give no output! + print 2+2 # this will give output + + .. testoutput:: + + 4 + + Also, please be aware that since the doctest module does not support + mixing regular output and an exception message in the same snippet, this + applies to testcode/testoutput as well. + + +.. rst:directive:: .. testoutput:: [group] + + The corresponding output, or the exception message, for the last + :rst:dir:`testcode` block. + + This directive supports two options: + + * ``hide``, a flag option, hides the output block in other builders. By + default it is shown as a literal block without highlighting. + + * ``options``, a string option, can be used to give doctest flags + (comma-separated) just like in normal doctest blocks. + + Example:: + + .. testcode:: + + print 'Output text.' + + .. testoutput:: + :hide: + :options: -ELLIPSIS, +NORMALIZE_WHITESPACE + + Output text. + +The following is an example for the usage of the directives. The test via +:rst:dir:`doctest` and the test via :rst:dir:`testcode` and +:rst:dir:`testoutput` are equivalent. :: + + The parrot module + ================= + + .. testsetup:: * + + import parrot + + The parrot module is a module about parrots. + + Doctest example: + + .. doctest:: + + >>> parrot.voom(3000) + This parrot wouldn't voom if you put 3000 volts through it! + + Test-Output example: + + .. testcode:: + + parrot.voom(3000) + + This would output: + + .. testoutput:: + + This parrot wouldn't voom if you put 3000 volts through it! + + +Skipping tests conditionally +---------------------------- + +``skipif``, a string option, can be used to skip directives conditionally. This +may be useful e.g. when a different set of tests should be run depending on the +environment (hardware, network/VPN, optional dependencies or different versions +of dependencies). The ``skipif`` option is supported by all of the doctest +directives. Below are typical use cases for ``skipif`` when used for different +directives: + +- :rst:dir:`testsetup` and :rst:dir:`testcleanup` + + - conditionally skip test setup and/or cleanup + - customize setup/cleanup code per environment + +- :rst:dir:`doctest` + + - conditionally skip both a test and its output verification + +- :rst:dir:`testcode` + + - conditionally skip a test + - customize test code per environment + +- :rst:dir:`testoutput` + + - conditionally skip output assertion for a skipped test + - expect different output depending on the environment + +The value of the ``skipif`` option is evaluated as a Python expression. If the +result is a true value, the directive is omitted from the test run just as if +it wasn't present in the file at all. + +Instead of repeating an expression, the :confval:`doctest_global_setup` +configuration option can be used to assign it to a variable which can then be +used instead. + +Here's an example which skips some tests if Pandas is not installed: + +.. code-block:: py + :caption: conf.py + + extensions = ['sphinx.ext.doctest'] + doctest_global_setup = ''' + try: + import pandas as pd + except ImportError: + pd = None + ''' + +.. code-block:: rst + :caption: contents.rst + + .. testsetup:: + :skipif: pd is None + + data = pd.Series([42]) + + .. doctest:: + :skipif: pd is None + + >>> data.iloc[0] + 42 + + .. testcode:: + :skipif: pd is None + + print(data.iloc[-1]) + + .. testoutput:: + :skipif: pd is None + + 42 + + +Configuration +------------- + +The doctest extension uses the following configuration values: + +.. confval:: doctest_default_flags + + By default, these options are enabled: + + - ``ELLIPSIS``, allowing you to put ellipses in the expected output that + match anything in the actual output; + - ``IGNORE_EXCEPTION_DETAIL``, causing everything following the leftmost + colon and any module information in the exception name to be ignored; + - ``DONT_ACCEPT_TRUE_FOR_1``, rejecting "True" in the output where "1" is + given -- the default behavior of accepting this substitution is a relic of + pre-Python 2.2 times. + + .. versionadded:: 1.5 + +.. confval:: doctest_path + + A list of directories that will be added to :data:`sys.path` when the doctest + builder is used. (Make sure it contains absolute paths.) + +.. confval:: doctest_global_setup + + Python code that is treated like it were put in a ``testsetup`` directive for + *every* file that is tested, and for every group. You can use this to + e.g. import modules you will always need in your doctests. + + .. versionadded:: 0.6 + +.. confval:: doctest_global_cleanup + + Python code that is treated like it were put in a ``testcleanup`` directive + for *every* file that is tested, and for every group. You can use this to + e.g. remove any temporary files that the tests leave behind. + + .. versionadded:: 1.1 + +.. confval:: doctest_test_doctest_blocks + + If this is a nonempty string (the default is ``'default'``), standard reST + doctest blocks will be tested too. They will be assigned to the group name + given. + + reST doctest blocks are simply doctests put into a paragraph of their own, + like so:: + + Some documentation text. + + >>> print 1 + 1 + + Some more documentation text. + + (Note that no special ``::`` is used to introduce a doctest block; docutils + recognizes them from the leading ``>>>``. Also, no additional indentation is + used, though it doesn't hurt.) + + If this value is left at its default value, the above snippet is interpreted + by the doctest builder exactly like the following:: + + Some documentation text. + + .. doctest:: + + >>> print 1 + 1 + + Some more documentation text. + + This feature makes it easy for you to test doctests in docstrings included + with the :mod:`~sphinx.ext.autodoc` extension without marking them up with a + special directive. + + Note though that you can't have blank lines in reST doctest blocks. They + will be interpreted as one block ending and another one starting. Also, + removal of ``<BLANKLINE>`` and ``# doctest:`` options only works in + :rst:dir:`doctest` blocks, though you may set :confval:`trim_doctest_flags` + to achieve that in all code blocks with Python console content. diff --git a/sphinx/doc/usage/extensions/duration.rst b/sphinx/doc/usage/extensions/duration.rst new file mode 100644 index 0000000..1213811 --- /dev/null +++ b/sphinx/doc/usage/extensions/duration.rst @@ -0,0 +1,11 @@ +:mod:`sphinx.ext.duration` -- Measure durations of Sphinx processing +==================================================================== + +.. module:: sphinx.ext.duration + :synopsis: Measure durations of Sphinx processing + +.. versionadded:: 2.4 + +This extension measures durations of Sphinx processing and show its +result at end of the build. It is useful for inspecting what document +is slowly built. diff --git a/sphinx/doc/usage/extensions/example_google.py b/sphinx/doc/usage/extensions/example_google.py new file mode 100644 index 0000000..97ffe8a --- /dev/null +++ b/sphinx/doc/usage/extensions/example_google.py @@ -0,0 +1,296 @@ +"""Example Google style docstrings. + +This module demonstrates documentation as specified by the `Google Python +Style Guide`_. Docstrings may extend over multiple lines. Sections are created +with a section header and a colon followed by a block of indented text. + +Example: + Examples can be given using either the ``Example`` or ``Examples`` + sections. Sections support any reStructuredText formatting, including + literal blocks:: + + $ python example_google.py + +Section breaks are created by resuming unindented text. Section breaks +are also implicitly created anytime a new section starts. + +Attributes: + module_level_variable1 (int): Module level variables may be documented in + either the ``Attributes`` section of the module docstring, or in an + inline docstring immediately following the variable. + + Either form is acceptable, but the two should not be mixed. Choose + one convention to document module level variables and be consistent + with it. + +Todo: + * For module TODOs + * You have to also use ``sphinx.ext.todo`` extension + +.. _Google Python Style Guide: + https://google.github.io/styleguide/pyguide.html + +""" + +module_level_variable1 = 12345 + +module_level_variable2 = 98765 +"""int: Module level variable documented inline. + +The docstring may span multiple lines. The type may optionally be specified +on the first line, separated by a colon. +""" + + +def function_with_types_in_docstring(param1, param2): + """Example function with types documented in the docstring. + + `PEP 484`_ type annotations are supported. If attribute, parameter, and + return types are annotated according to `PEP 484`_, they do not need to be + included in the docstring: + + Args: + param1 (int): The first parameter. + param2 (str): The second parameter. + + Returns: + bool: The return value. True for success, False otherwise. + + .. _PEP 484: + https://www.python.org/dev/peps/pep-0484/ + + """ + + +def function_with_pep484_type_annotations(param1: int, param2: str) -> bool: + """Example function with PEP 484 type annotations. + + Args: + param1: The first parameter. + param2: The second parameter. + + Returns: + The return value. True for success, False otherwise. + + """ + + +def module_level_function(param1, param2=None, *args, **kwargs): + """This is an example of a module level function. + + Function parameters should be documented in the ``Args`` section. The name + of each parameter is required. The type and description of each parameter + is optional, but should be included if not obvious. + + If ``*args`` or ``**kwargs`` are accepted, + they should be listed as ``*args`` and ``**kwargs``. + + The format for a parameter is:: + + name (type): description + The description may span multiple lines. Following + lines should be indented. The "(type)" is optional. + + Multiple paragraphs are supported in parameter + descriptions. + + Args: + param1 (int): The first parameter. + param2 (:obj:`str`, optional): The second parameter. Defaults to None. + Second line of description should be indented. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + bool: True if successful, False otherwise. + + The return type is optional and may be specified at the beginning of + the ``Returns`` section followed by a colon. + + The ``Returns`` section may span multiple lines and paragraphs. + Following lines should be indented to match the first line. + + The ``Returns`` section supports any reStructuredText formatting, + including literal blocks:: + + { + 'param1': param1, + 'param2': param2 + } + + Raises: + AttributeError: The ``Raises`` section is a list of all exceptions + that are relevant to the interface. + ValueError: If `param2` is equal to `param1`. + + """ + if param1 == param2: + raise ValueError('param1 may not be equal to param2') + return True + + +def example_generator(n): + """Generators have a ``Yields`` section instead of a ``Returns`` section. + + Args: + n (int): The upper limit of the range to generate, from 0 to `n` - 1. + + Yields: + int: The next number in the range of 0 to `n` - 1. + + Examples: + Examples should be written in doctest format, and should illustrate how + to use the function. + + >>> print([i for i in example_generator(4)]) + [0, 1, 2, 3] + + """ + for i in range(n): + yield i + + +class ExampleError(Exception): + """Exceptions are documented in the same way as classes. + + The __init__ method may be documented in either the class level + docstring, or as a docstring on the __init__ method itself. + + Either form is acceptable, but the two should not be mixed. Choose one + convention to document the __init__ method and be consistent with it. + + Note: + Do not include the `self` parameter in the ``Args`` section. + + Args: + msg (str): Human readable string describing the exception. + code (:obj:`int`, optional): Error code. + + Attributes: + msg (str): Human readable string describing the exception. + code (int): Exception error code. + + """ + + def __init__(self, msg, code): + self.msg = msg + self.code = code + + +class ExampleClass: + """The summary line for a class docstring should fit on one line. + + If the class has public attributes, they may be documented here + in an ``Attributes`` section and follow the same formatting as a + function's ``Args`` section. Alternatively, attributes may be documented + inline with the attribute's declaration (see __init__ method below). + + Properties created with the ``@property`` decorator should be documented + in the property's getter method. + + Attributes: + attr1 (str): Description of `attr1`. + attr2 (:obj:`int`, optional): Description of `attr2`. + + """ + + def __init__(self, param1, param2, param3): + """Example of docstring on the __init__ method. + + The __init__ method may be documented in either the class level + docstring, or as a docstring on the __init__ method itself. + + Either form is acceptable, but the two should not be mixed. Choose one + convention to document the __init__ method and be consistent with it. + + Note: + Do not include the `self` parameter in the ``Args`` section. + + Args: + param1 (str): Description of `param1`. + param2 (:obj:`int`, optional): Description of `param2`. Multiple + lines are supported. + param3 (list(str)): Description of `param3`. + + """ + self.attr1 = param1 + self.attr2 = param2 + self.attr3 = param3 #: Doc comment *inline* with attribute + + #: list(str): Doc comment *before* attribute, with type specified + self.attr4 = ['attr4'] + + self.attr5 = None + """str: Docstring *after* attribute, with type specified.""" + + @property + def readonly_property(self): + """str: Properties should be documented in their getter method.""" + return 'readonly_property' + + @property + def readwrite_property(self): + """list(str): Properties with both a getter and setter + should only be documented in their getter method. + + If the setter method contains notable behavior, it should be + mentioned here. + """ + return ['readwrite_property'] + + @readwrite_property.setter + def readwrite_property(self, value): + value + + def example_method(self, param1, param2): + """Class methods are similar to regular functions. + + Note: + Do not include the `self` parameter in the ``Args`` section. + + Args: + param1: The first parameter. + param2: The second parameter. + + Returns: + True if successful, False otherwise. + + """ + return True + + def __special__(self): + """By default special members with docstrings are not included. + + Special members are any methods or attributes that start with and + end with a double underscore. Any special member with a docstring + will be included in the output, if + ``napoleon_include_special_with_doc`` is set to True. + + This behavior can be enabled by changing the following setting in + Sphinx's conf.py:: + + napoleon_include_special_with_doc = True + + """ + pass + + def __special_without_docstring__(self): + pass + + def _private(self): + """By default private members are not included. + + Private members are any methods or attributes that start with an + underscore and are *not* special. By default they are not included + in the output. + + This behavior can be changed such that private members *are* included + by changing the following setting in Sphinx's conf.py:: + + napoleon_include_private_with_doc = True + + """ + pass + + def _private_without_docstring(self): + pass diff --git a/sphinx/doc/usage/extensions/example_google.rst b/sphinx/doc/usage/extensions/example_google.rst new file mode 100644 index 0000000..a06f161 --- /dev/null +++ b/sphinx/doc/usage/extensions/example_google.rst @@ -0,0 +1,17 @@ +:orphan: + +.. _example_google: + +Example Google Style Python Docstrings +====================================== + +.. seealso:: + + :ref:`example_numpy` + +.. only:: builder_html + + Download: :download:`example_google.py <example_google.py>` + +.. literalinclude:: example_google.py + :language: python diff --git a/sphinx/doc/usage/extensions/example_numpy.py b/sphinx/doc/usage/extensions/example_numpy.py new file mode 100644 index 0000000..2712447 --- /dev/null +++ b/sphinx/doc/usage/extensions/example_numpy.py @@ -0,0 +1,355 @@ +"""Example NumPy style docstrings. + +This module demonstrates documentation as specified by the `NumPy +Documentation HOWTO`_. Docstrings may extend over multiple lines. Sections +are created with a section header followed by an underline of equal length. + +Example +------- +Examples can be given using either the ``Example`` or ``Examples`` +sections. Sections support any reStructuredText formatting, including +literal blocks:: + + $ python example_numpy.py + + +Section breaks are created with two blank lines. Section breaks are also +implicitly created anytime a new section starts. Section bodies *may* be +indented: + +Notes +----- + This is an example of an indented section. It's like any other section, + but the body is indented to help it stand out from surrounding text. + +If a section is indented, then a section break is created by +resuming unindented text. + +Attributes +---------- +module_level_variable1 : int + Module level variables may be documented in either the ``Attributes`` + section of the module docstring, or in an inline docstring immediately + following the variable. + + Either form is acceptable, but the two should not be mixed. Choose + one convention to document module level variables and be consistent + with it. + + +.. _NumPy Documentation HOWTO: + https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt + +""" + +module_level_variable1 = 12345 + +module_level_variable2 = 98765 +"""int: Module level variable documented inline. + +The docstring may span multiple lines. The type may optionally be specified +on the first line, separated by a colon. +""" + + +def function_with_types_in_docstring(param1, param2): + """Example function with types documented in the docstring. + + `PEP 484`_ type annotations are supported. If attribute, parameter, and + return types are annotated according to `PEP 484`_, they do not need to be + included in the docstring: + + Parameters + ---------- + param1 : int + The first parameter. + param2 : str + The second parameter. + + Returns + ------- + bool + True if successful, False otherwise. + + .. _PEP 484: + https://www.python.org/dev/peps/pep-0484/ + + """ + + +def function_with_pep484_type_annotations(param1: int, param2: str) -> bool: + """Example function with PEP 484 type annotations. + + The return type must be duplicated in the docstring to comply + with the NumPy docstring style. + + Parameters + ---------- + param1 + The first parameter. + param2 + The second parameter. + + Returns + ------- + bool + True if successful, False otherwise. + + """ + + +def module_level_function(param1, param2=None, *args, **kwargs): + """This is an example of a module level function. + + Function parameters should be documented in the ``Parameters`` section. + The name of each parameter is required. The type and description of each + parameter is optional, but should be included if not obvious. + + If ``*args`` or ``**kwargs`` are accepted, + they should be listed as ``*args`` and ``**kwargs``. + + The format for a parameter is:: + + name : type + description + + The description may span multiple lines. Following lines + should be indented to match the first line of the description. + The ": type" is optional. + + Multiple paragraphs are supported in parameter + descriptions. + + Parameters + ---------- + param1 : int + The first parameter. + param2 : :obj:`str`, optional + The second parameter. + *args + Variable length argument list. + **kwargs + Arbitrary keyword arguments. + + Returns + ------- + bool + True if successful, False otherwise. + + The return type is not optional. The ``Returns`` section may span + multiple lines and paragraphs. Following lines should be indented to + match the first line of the description. + + The ``Returns`` section supports any reStructuredText formatting, + including literal blocks:: + + { + 'param1': param1, + 'param2': param2 + } + + Raises + ------ + AttributeError + The ``Raises`` section is a list of all exceptions + that are relevant to the interface. + ValueError + If `param2` is equal to `param1`. + + """ + if param1 == param2: + raise ValueError('param1 may not be equal to param2') + return True + + +def example_generator(n): + """Generators have a ``Yields`` section instead of a ``Returns`` section. + + Parameters + ---------- + n : int + The upper limit of the range to generate, from 0 to `n` - 1. + + Yields + ------ + int + The next number in the range of 0 to `n` - 1. + + Examples + -------- + Examples should be written in doctest format, and should illustrate how + to use the function. + + >>> print([i for i in example_generator(4)]) + [0, 1, 2, 3] + + """ + for i in range(n): + yield i + + +class ExampleError(Exception): + """Exceptions are documented in the same way as classes. + + The __init__ method may be documented in either the class level + docstring, or as a docstring on the __init__ method itself. + + Either form is acceptable, but the two should not be mixed. Choose one + convention to document the __init__ method and be consistent with it. + + Note + ---- + Do not include the `self` parameter in the ``Parameters`` section. + + Parameters + ---------- + msg : str + Human readable string describing the exception. + code : :obj:`int`, optional + Numeric error code. + + Attributes + ---------- + msg : str + Human readable string describing the exception. + code : int + Numeric error code. + + """ + + def __init__(self, msg, code): + self.msg = msg + self.code = code + + +class ExampleClass: + """The summary line for a class docstring should fit on one line. + + If the class has public attributes, they may be documented here + in an ``Attributes`` section and follow the same formatting as a + function's ``Args`` section. Alternatively, attributes may be documented + inline with the attribute's declaration (see __init__ method below). + + Properties created with the ``@property`` decorator should be documented + in the property's getter method. + + Attributes + ---------- + attr1 : str + Description of `attr1`. + attr2 : :obj:`int`, optional + Description of `attr2`. + + """ + + def __init__(self, param1, param2, param3): + """Example of docstring on the __init__ method. + + The __init__ method may be documented in either the class level + docstring, or as a docstring on the __init__ method itself. + + Either form is acceptable, but the two should not be mixed. Choose one + convention to document the __init__ method and be consistent with it. + + Note + ---- + Do not include the `self` parameter in the ``Parameters`` section. + + Parameters + ---------- + param1 : str + Description of `param1`. + param2 : list(str) + Description of `param2`. Multiple + lines are supported. + param3 : :obj:`int`, optional + Description of `param3`. + + """ + self.attr1 = param1 + self.attr2 = param2 + self.attr3 = param3 #: Doc comment *inline* with attribute + + #: list(str): Doc comment *before* attribute, with type specified + self.attr4 = ["attr4"] + + self.attr5 = None + """str: Docstring *after* attribute, with type specified.""" + + @property + def readonly_property(self): + """str: Properties should be documented in their getter method.""" + return "readonly_property" + + @property + def readwrite_property(self): + """list(str): Properties with both a getter and setter + should only be documented in their getter method. + + If the setter method contains notable behavior, it should be + mentioned here. + """ + return ["readwrite_property"] + + @readwrite_property.setter + def readwrite_property(self, value): + value + + def example_method(self, param1, param2): + """Class methods are similar to regular functions. + + Note + ---- + Do not include the `self` parameter in the ``Parameters`` section. + + Parameters + ---------- + param1 + The first parameter. + param2 + The second parameter. + + Returns + ------- + bool + True if successful, False otherwise. + + """ + return True + + def __special__(self): + """By default special members with docstrings are not included. + + Special members are any methods or attributes that start with and + end with a double underscore. Any special member with a docstring + will be included in the output, if + ``napoleon_include_special_with_doc`` is set to True. + + This behavior can be enabled by changing the following setting in + Sphinx's conf.py:: + + napoleon_include_special_with_doc = True + + """ + pass + + def __special_without_docstring__(self): + pass + + def _private(self): + """By default private members are not included. + + Private members are any methods or attributes that start with an + underscore and are *not* special. By default they are not included + in the output. + + This behavior can be changed such that private members *are* included + by changing the following setting in Sphinx's conf.py:: + + napoleon_include_private_with_doc = True + + """ + pass + + def _private_without_docstring(self): + pass diff --git a/sphinx/doc/usage/extensions/example_numpy.rst b/sphinx/doc/usage/extensions/example_numpy.rst new file mode 100644 index 0000000..38d3439 --- /dev/null +++ b/sphinx/doc/usage/extensions/example_numpy.rst @@ -0,0 +1,17 @@ +:orphan: + +.. _example_numpy: + +Example NumPy Style Python Docstrings +====================================== + +.. seealso:: + + :ref:`example_google` + +.. only:: builder_html + + Download: :download:`example_numpy.py <example_numpy.py>` + +.. literalinclude:: example_numpy.py + :language: python diff --git a/sphinx/doc/usage/extensions/extlinks.rst b/sphinx/doc/usage/extensions/extlinks.rst new file mode 100644 index 0000000..e1d729f --- /dev/null +++ b/sphinx/doc/usage/extensions/extlinks.rst @@ -0,0 +1,53 @@ +:mod:`sphinx.ext.extlinks` -- Markup to shorten external links +============================================================== + +.. module:: sphinx.ext.extlinks + :synopsis: Allow inserting external links with common base URLs easily. +.. moduleauthor:: Georg Brandl + +.. versionadded:: 1.0 + +This extension is meant to help with the common pattern of having many external +links that point to URLs on one and the same site, e.g. links to bug trackers, +version control web interfaces, or simply subpages in other websites. It does +so by providing aliases to base URLs, so that you only need to give the subpage +name when creating a link. + +Let's assume that you want to include many links to issues at the Sphinx +tracker, at :samp:`https://github.com/sphinx-doc/sphinx/issues/{num}`. Typing +this URL again and again is tedious, so you can use :mod:`~sphinx.ext.extlinks` +to avoid repeating yourself. + +The extension adds a config value: + +.. confval:: extlinks + + This config value must be a dictionary of external sites, mapping unique + short alias names to a base URL and a *prefix*. For example, to create an + alias for the above mentioned issues, you would add :: + + extlinks = {'issue': ('https://github.com/sphinx-doc/sphinx/issues/%s', + 'issue ')} + + Now, you can use the alias name as a new role, e.g. ``:issue:`123```. This + then inserts a link to https://github.com/sphinx-doc/sphinx/issues/123. + As you can see, the target given in the role is substituted in the base URL + in the place of ``%s``. + + The link *caption* depends on the second item in the tuple, the *prefix*: + + - If the prefix is ``None``, the link caption is the full URL. + - If the prefix is the empty string, the link caption is the partial URL + given in the role content (``123`` in this case.) + - If the prefix is a non-empty string, the link caption is the partial URL, + prepended by the prefix -- in the above example, the link caption would be + ``issue 123``. + + You can also use the usual "explicit title" syntax supported by other roles + that generate links, i.e. ``:issue:`this issue <123>```. In this case, the + *prefix* is not relevant. + +.. note:: + + Since links are generated from the role in the reading stage, they appear as + ordinary links to e.g. the ``linkcheck`` builder. diff --git a/sphinx/doc/usage/extensions/githubpages.rst b/sphinx/doc/usage/extensions/githubpages.rst new file mode 100644 index 0000000..6d56a30 --- /dev/null +++ b/sphinx/doc/usage/extensions/githubpages.rst @@ -0,0 +1,16 @@ +:mod:`sphinx.ext.githubpages` -- Publish HTML docs in GitHub Pages +================================================================== + +.. module:: sphinx.ext.githubpages + :synopsis: Publish HTML docs in GitHub Pages + +.. versionadded:: 1.4 + +.. versionchanged:: 2.0 + Support ``CNAME`` file + +This extension creates ``.nojekyll`` file on generated HTML directory to publish +the document on GitHub Pages. + +It also creates a ``CNAME`` file for custom domains when :confval:`html_baseurl` +set. diff --git a/sphinx/doc/usage/extensions/graphviz.rst b/sphinx/doc/usage/extensions/graphviz.rst new file mode 100644 index 0000000..32cfcce --- /dev/null +++ b/sphinx/doc/usage/extensions/graphviz.rst @@ -0,0 +1,239 @@ +.. highlight:: rest + +:mod:`sphinx.ext.graphviz` -- Add Graphviz graphs +================================================= + +.. module:: sphinx.ext.graphviz + :synopsis: Support for Graphviz graphs. + +.. versionadded:: 0.6 + +This extension allows you to embed `Graphviz <https://graphviz.org/>`_ graphs in +your documents. + +It adds these directives: + +.. rst:directive:: graphviz + + Directive to embed graphviz code. The input code for ``dot`` is given as the + content. For example:: + + .. graphviz:: + + digraph foo { + "bar" -> "baz"; + } + + In HTML output, the code will be rendered to a PNG or SVG image (see + :confval:`graphviz_output_format`). In LaTeX output, the code will be + rendered to an embeddable PDF file. + + You can also embed external dot files, by giving the file name as an + argument to :rst:dir:`graphviz` and no additional content:: + + .. graphviz:: external.dot + + As for all file references in Sphinx, if the filename is absolute, it is + taken as relative to the source directory. + + .. versionchanged:: 1.1 + Added support for external files. + + .. rubric:: options + + .. rst:directive:option:: alt: alternate text + :type: text + + The alternate text of the graph. By default, the graph code is used to + the alternate text. + + .. versionadded:: 1.0 + + .. rst:directive:option:: align: alignment of the graph + :type: left, center or right + + The horizontal alignment of the graph. + + .. versionadded:: 1.5 + + .. rst:directive:option:: caption: caption of the graph + :type: text + + The caption of the graph. + + .. versionadded:: 1.1 + + .. rst:directive:option:: layout: layout type of the graph + :type: text + + The layout of the graph (ex. ``dot``, ``neato`` and so on). A path to the + graphviz commands are also allowed. By default, :confval:`graphviz_dot` + is used. + + .. versionadded:: 1.4 + .. versionchanged:: 2.2 + + Renamed from ``graphviz_dot`` + + .. rst:directive:option:: name: label + :type: text + + The label of the graph. + + .. versionadded:: 1.6 + + .. rst:directive:option:: class: class names + :type: a list of class names separeted by spaces + + The class name of the graph. + + .. versionadded:: 2.4 + + +.. rst:directive:: graph + + Directive for embedding a single undirected graph. The name is given as a + directive argument, the contents of the graph are the directive content. + This is a convenience directive to generate ``graph <name> { <content> }``. + + For example:: + + .. graph:: foo + + "bar" -- "baz"; + + .. note:: The graph name is passed unchanged to Graphviz. If it contains + non-alphanumeric characters (e.g. a dash), you will have to double-quote + it. + + .. rubric:: options + + Same as :rst:dir:`graphviz`. + + .. rst:directive:option:: alt: alternate text + :type: text + + .. versionadded:: 1.0 + + .. rst:directive:option:: align: alignment of the graph + :type: left, center or right + + .. versionadded:: 1.5 + + .. rst:directive:option:: caption: caption of the graph + :type: text + + .. versionadded:: 1.1 + + .. rst:directive:option:: layout: layout type of the graph + :type: text + + .. versionadded:: 1.4 + .. versionchanged:: 2.2 + + Renamed from ``graphviz_dot`` + + .. rst:directive:option:: name: label + :type: text + + .. versionadded:: 1.6 + + .. rst:directive:option:: class: class names + :type: a list of class names separeted by spaces + + The class name of the graph. + + .. versionadded:: 2.4 + + +.. rst:directive:: digraph + + Directive for embedding a single directed graph. The name is given as a + directive argument, the contents of the graph are the directive content. + This is a convenience directive to generate ``digraph <name> { <content> }``. + + For example:: + + .. digraph:: foo + + "bar" -> "baz" -> "quux"; + + .. rubric:: options + + Same as :rst:dir:`graphviz`. + + .. rst:directive:option:: alt: alternate text + :type: text + + .. versionadded:: 1.0 + + .. rst:directive:option:: align: alignment of the graph + :type: left, center or right + + .. versionadded:: 1.5 + + .. rst:directive:option:: caption: caption of the graph + :type: text + + .. versionadded:: 1.1 + + .. rst:directive:option:: layout: layout type of the graph + :type: text + + .. versionadded:: 1.4 + .. versionchanged:: 2.2 + + Renamed from ``graphviz_dot`` + + .. rst:directive:option:: name: label + :type: text + + .. versionadded:: 1.6 + + .. rst:directive:option:: class: class names + :type: a list of class names separeted by spaces + + The class name of the graph. + + .. versionadded:: 2.4 + + +There are also these config values: + +.. confval:: graphviz_dot + + The command name with which to invoke ``dot``. The default is ``'dot'``; you + may need to set this to a full path if ``dot`` is not in the executable + search path. + + Since this setting is not portable from system to system, it is normally not + useful to set it in ``conf.py``; rather, giving it on the + :program:`sphinx-build` command line via the :option:`-D <sphinx-build -D>` + option should be preferable, like this:: + + sphinx-build -b html -D graphviz_dot=C:\graphviz\bin\dot.exe . _build/html + +.. confval:: graphviz_dot_args + + Additional command-line arguments to give to dot, as a list. The default is + an empty list. This is the right place to set global graph, node or edge + attributes via dot's ``-G``, ``-N`` and ``-E`` options. + +.. confval:: graphviz_output_format + + The output format for Graphviz when building HTML files. This must be either + ``'png'`` or ``'svg'``; the default is ``'png'``. If ``'svg'`` is used, in + order to make the URL links work properly, an appropriate ``target`` + attribute must be set, such as ``"_top"`` and ``"_blank"``. For example, the + link in the following graph should work in the svg output: :: + + .. graphviz:: + + digraph example { + a [label="sphinx", href="http://sphinx-doc.org", target="_top"]; + b [label="other"]; + a -> b; + } + + .. versionadded:: 1.0 + Previously, output always was PNG. diff --git a/sphinx/doc/usage/extensions/ifconfig.rst b/sphinx/doc/usage/extensions/ifconfig.rst new file mode 100644 index 0000000..837c0b3 --- /dev/null +++ b/sphinx/doc/usage/extensions/ifconfig.rst @@ -0,0 +1,38 @@ +.. highlight:: rest + +:mod:`sphinx.ext.ifconfig` -- Include content based on configuration +==================================================================== + +.. module:: sphinx.ext.ifconfig + :synopsis: Include documentation content based on configuration values. + +This extension is quite simple, and features only one directive: + +.. warning:: + + This directive is designed to control only content of document. It could + not control sections, labels and so on. + +.. rst:directive:: ifconfig + + Include content of the directive only if the Python expression given as an + argument is ``True``, evaluated in the namespace of the project's + configuration (that is, all registered variables from :file:`conf.py` are + available). + + For example, one could write :: + + .. ifconfig:: releaselevel in ('alpha', 'beta', 'rc') + + This stuff is only included in the built docs for unstable versions. + + To make a custom config value known to Sphinx, use + :func:`~sphinx.application.Sphinx.add_config_value` in the setup function in + :file:`conf.py`, e.g.:: + + def setup(app): + app.add_config_value('releaselevel', '', 'env') + + The second argument is the default value, the third should always be + ``'env'`` for such values (it selects if Sphinx re-reads the documents if the + value changes). diff --git a/sphinx/doc/usage/extensions/imgconverter.rst b/sphinx/doc/usage/extensions/imgconverter.rst new file mode 100644 index 0000000..9c742d0 --- /dev/null +++ b/sphinx/doc/usage/extensions/imgconverter.rst @@ -0,0 +1,52 @@ +.. _sphinx.ext.imgconverter: + +:mod:`sphinx.ext.imgconverter` -- A reference image converter using Imagemagick +=============================================================================== + +.. module:: sphinx.ext.imgconverter + :synopsis: Convert images to appropriate format for builders + +.. versionadded:: 1.6 + +This extension converts images in your document to appropriate format for +builders. For example, it allows you to use SVG images with LaTeX builder. +As a result, you don't mind what image format the builder supports. + +Internally, this extension uses Imagemagick_ to convert images. + +.. _Imagemagick: https://www.imagemagick.org/script/index.php + +.. note:: + + Imagemagick rasterizes a SVG image on conversion. As a result, the image + becomes not scalable. To avoid that, please use other image converters like + `sphinxcontrib-svg2pdfconverter`__ (which uses Inkscape or + ``rsvg-convert``). + +.. __: https://github.com/missinglinkelectronics/sphinxcontrib-svg2pdfconverter + + +Configuration +------------- + +.. confval:: image_converter + + A path to :command:`convert` command. By default, the imgconverter uses + the command from search paths. + + On windows platform, :command:`magick` command is used by default. + + .. versionchanged:: 3.1 + + Use :command:`magick` command by default on windows + +.. confval:: image_converter_args + + Additional command-line arguments to give to :command:`convert`, as a list. + The default is an empty list ``[]``. + + On windows platform, it defaults to ``["convert"]``. + + .. versionchanged:: 3.1 + + Use ``["convert"]`` by default on windows diff --git a/sphinx/doc/usage/extensions/index.rst b/sphinx/doc/usage/extensions/index.rst new file mode 100644 index 0000000..6aab8ad --- /dev/null +++ b/sphinx/doc/usage/extensions/index.rst @@ -0,0 +1,76 @@ +========== +Extensions +========== + +Since many projects will need special features in their documentation, Sphinx +allows adding "extensions" to the build process, each of which can modify +almost any aspect of document processing. + +This chapter describes the extensions bundled with Sphinx. For the API +documentation on writing your own extension, refer to :ref:`dev-extensions`. + + +Built-in extensions +------------------- + +These extensions are built in and can be activated by respective entries in the +:confval:`extensions` configuration value: + +.. toctree:: + + autodoc + autosectionlabel + autosummary + coverage + doctest + duration + extlinks + githubpages + graphviz + ifconfig + imgconverter + inheritance + intersphinx + linkcode + math + napoleon + todo + viewcode + + +Third-party extensions +---------------------- + +.. todo:: This should reference the GitHub organization now + +You can find several extensions contributed by users in the `Sphinx Contrib`_ +repository. It is open for anyone who wants to maintain an extension publicly; +just send a short message asking for write permissions. + +There are also several extensions hosted elsewhere. The `Sphinx extension +survey <https://sphinxext-survey.readthedocs.io/>`__ and `awesome-sphinxdoc +<https://github.com/yoloseem/awesome-sphinxdoc>`__ contains a comprehensive +list. + +If you write an extension that you think others will find useful or you think +should be included as a part of Sphinx, please write to the project mailing +list (`join here <https://groups.google.com/forum/#!forum/sphinx-dev>`_). + +.. _Sphinx Contrib: https://bitbucket.org/birkenfeld/sphinx-contrib + +Where to put your own extensions? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Extensions local to a project should be put within the project's directory +structure. Set Python's module search path, ``sys.path``, accordingly so that +Sphinx can find them. For example, if your extension ``foo.py`` lies in the +``exts`` subdirectory of the project root, put into :file:`conf.py`:: + + import sys, os + + sys.path.append(os.path.abspath('exts')) + + extensions = ['foo'] + +You can also install extensions anywhere else on ``sys.path``, e.g. in the +``site-packages`` directory. diff --git a/sphinx/doc/usage/extensions/inheritance.rst b/sphinx/doc/usage/extensions/inheritance.rst new file mode 100644 index 0000000..7889591 --- /dev/null +++ b/sphinx/doc/usage/extensions/inheritance.rst @@ -0,0 +1,169 @@ +.. highlight:: rest + +:mod:`sphinx.ext.inheritance_diagram` -- Include inheritance diagrams +===================================================================== + +.. module:: sphinx.ext.inheritance_diagram + :synopsis: Support for displaying inheritance diagrams via graphviz. + +.. versionadded:: 0.6 + +This extension allows you to include inheritance diagrams, rendered via the +:mod:`Graphviz extension <sphinx.ext.graphviz>`. + +It adds this directive: + +.. rst:directive:: inheritance-diagram + + This directive has one or more arguments, each giving a module or class + name. Class names can be unqualified; in that case they are taken to exist + in the currently described module (see :rst:dir:`py:module`). + + For each given class, and each class in each given module, the base classes + are determined. Then, from all classes and their base classes, a graph is + generated which is then rendered via the graphviz extension to a directed + graph. + + This directive supports an option called ``parts`` that, if given, must be an + integer, advising the directive to keep that many dot-separated parts + in the displayed names (from right to left). For example, ``parts=1`` will + only display class names, without the names of the modules that contain + them. + + .. versionchanged:: 2.0 + The value of for ``parts`` can also be negative, indicating how many + parts to drop from the left. For example, if all your class names start + with ``lib.``, you can give ``:parts: -1`` to remove that prefix from the + displayed node names. + + The directive also supports a ``private-bases`` flag option; if given, + private base classes (those whose name starts with ``_``) will be included. + + You can use ``caption`` option to give a caption to the diagram. + + .. versionchanged:: 1.1 + Added ``private-bases`` option; previously, all bases were always + included. + + .. versionchanged:: 1.5 + Added ``caption`` option + + It also supports a ``top-classes`` option which requires one or more class + names separated by comma. If specified inheritance traversal will stop at the + specified class names. Given the following Python module:: + + """ + A + / \ + B C + / \ / \ + E D F + """ + + class A: + pass + + class B(A): + pass + + class C(A): + pass + + class D(B, C): + pass + + class E(B): + pass + + class F(C): + pass + + If you have specified a module in the inheritance diagram like this:: + + .. inheritance-diagram:: dummy.test + :top-classes: dummy.test.B, dummy.test.C + + any base classes which are ancestors to ``top-classes`` and are also defined + in the same module will be rendered as stand alone nodes. In this example + class A will be rendered as stand alone node in the graph. This is a known + issue due to how this extension works internally. + + If you don't want class A (or any other ancestors) to be visible then specify + only the classes you would like to generate the diagram for like this:: + + .. inheritance-diagram:: dummy.test.D dummy.test.E dummy.test.F + :top-classes: dummy.test.B, dummy.test.C + + .. versionchanged:: 1.7 + Added ``top-classes`` option to limit the scope of inheritance graphs. + + +Examples +-------- + +The following are different inheritance diagrams for the internal +``InheritanceDiagram`` class that implements the directive. + +With full names:: + + .. inheritance-diagram:: sphinx.ext.inheritance_diagram.InheritanceDiagram + +.. inheritance-diagram:: sphinx.ext.inheritance_diagram.InheritanceDiagram + + +Showing class names only:: + + .. inheritance-diagram:: sphinx.ext.inheritance_diagram.InheritanceDiagram + :parts: 1 + +.. inheritance-diagram:: sphinx.ext.inheritance_diagram.InheritanceDiagram + :parts: 1 + +Stopping the diagram at :class:`sphinx.util.docutils.SphinxDirective` (the +highest superclass still part of Sphinx), and dropping the common left-most +part (``sphinx``) from all names:: + + .. inheritance-diagram:: sphinx.ext.inheritance_diagram.InheritanceDiagram + :top-classes: sphinx.util.docutils.SphinxDirective + :parts: -1 + +.. inheritance-diagram:: sphinx.ext.inheritance_diagram.InheritanceDiagram + :top-classes: sphinx.util.docutils.SphinxDirective + :parts: -1 + + + +Configuration +------------- + +.. confval:: inheritance_graph_attrs + + A dictionary of graphviz graph attributes for inheritance diagrams. + + For example:: + + inheritance_graph_attrs = dict(rankdir="LR", size='"6.0, 8.0"', + fontsize=14, ratio='compress') + +.. confval:: inheritance_node_attrs + + A dictionary of graphviz node attributes for inheritance diagrams. + + For example:: + + inheritance_node_attrs = dict(shape='ellipse', fontsize=14, height=0.75, + color='dodgerblue1', style='filled') + +.. confval:: inheritance_edge_attrs + + A dictionary of graphviz edge attributes for inheritance diagrams. + +.. confval:: inheritance_alias + + Allows mapping the full qualified name of the class to custom values + (useful when exposing the underlying path of a class is not desirable, + e.g. it's a private class and should not be instantiated by the user). + + For example:: + + inheritance_alias = {'_pytest.Magic': 'pytest.Magic'} diff --git a/sphinx/doc/usage/extensions/intersphinx.rst b/sphinx/doc/usage/extensions/intersphinx.rst new file mode 100644 index 0000000..619ec8c --- /dev/null +++ b/sphinx/doc/usage/extensions/intersphinx.rst @@ -0,0 +1,160 @@ +:mod:`sphinx.ext.intersphinx` -- Link to other projects' documentation +====================================================================== + +.. module:: sphinx.ext.intersphinx + :synopsis: Link to other Sphinx documentation. + +.. index:: pair: automatic; linking + +.. versionadded:: 0.5 + +This extension can generate automatic links to the documentation of objects in +other projects. + +Usage is simple: whenever Sphinx encounters a cross-reference that has no +matching target in the current documentation set, it looks for targets in the +documentation sets configured in :confval:`intersphinx_mapping`. A reference +like ``:py:class:`zipfile.ZipFile``` can then link to the Python documentation +for the ZipFile class, without you having to specify where it is located +exactly. + +When using the "new" format (see below), you can even force lookup in a foreign +set by prefixing the link target appropriately. A link like ``:ref:`comparison +manual <python:comparisons>``` will then link to the label "comparisons" in the +doc set "python", if it exists. + +Behind the scenes, this works as follows: + +* Each Sphinx HTML build creates a file named :file:`objects.inv` that contains + a mapping from object names to URIs relative to the HTML set's root. + +* Projects using the Intersphinx extension can specify the location of such + mapping files in the :confval:`intersphinx_mapping` config value. The mapping + will then be used to resolve otherwise missing references to objects into + links to the other documentation. + +* By default, the mapping file is assumed to be at the same location as the rest + of the documentation; however, the location of the mapping file can also be + specified individually, e.g. if the docs should be buildable without Internet + access. + + +Configuration +------------- + +To use Intersphinx linking, add ``'sphinx.ext.intersphinx'`` to your +:confval:`extensions` config value, and use these config values to activate +linking: + +.. confval:: intersphinx_mapping + + This config value contains the locations and names of other projects that + should be linked to in this documentation. + + Relative local paths for target locations are taken as relative to the base + of the built documentation, while relative local paths for inventory + locations are taken as relative to the source directory. + + When fetching remote inventory files, proxy settings will be read from + the ``$HTTP_PROXY`` environment variable. + + **Old format for this config value** + + This is the format used before Sphinx 1.0. It is still recognized. + + A dictionary mapping URIs to either ``None`` or an URI. The keys are the + base URI of the foreign Sphinx documentation sets and can be local paths or + HTTP URIs. The values indicate where the inventory file can be found: they + can be ``None`` (at the same location as the base URI) or another local or + HTTP URI. + + **New format for this config value** + + .. versionadded:: 1.0 + + A dictionary mapping unique identifiers to a tuple ``(target, inventory)``. + Each ``target`` is the base URI of a foreign Sphinx documentation set and can + be a local path or an HTTP URI. The ``inventory`` indicates where the + inventory file can be found: it can be ``None`` (at the same location as + the base URI) or another local or HTTP URI. + + The unique identifier can be used to prefix cross-reference targets, so that + it is clear which intersphinx set the target belongs to. A link like + ``:ref:`comparison manual <python:comparisons>``` will link to the label + "comparisons" in the doc set "python", if it exists. + + **Example** + + To add links to modules and objects in the Python standard library + documentation, use:: + + intersphinx_mapping = {'python': ('https://docs.python.org/3', None)} + + This will download the corresponding :file:`objects.inv` file from the + Internet and generate links to the pages under the given URI. The downloaded + inventory is cached in the Sphinx environment, so it must be re-downloaded + whenever you do a full rebuild. + + A second example, showing the meaning of a non-``None`` value of the second + tuple item:: + + intersphinx_mapping = {'python': ('https://docs.python.org/3', + 'python-inv.txt')} + + This will read the inventory from :file:`python-inv.txt` in the source + directory, but still generate links to the pages under + ``https://docs.python.org/3``. It is up to you to update the inventory file + as new objects are added to the Python documentation. + + **Multiple target for the inventory** + + .. versionadded:: 1.3 + + Alternative files can be specified for each inventory. One can give a + tuple for the second inventory tuple item as shown in the following + example. This will read the inventory iterating through the (second) + tuple items until the first successful fetch. The primary use case for + this to specify mirror sites for server downtime of the primary + inventory:: + + intersphinx_mapping = {'python': ('https://docs.python.org/3', + (None, 'python-inv.txt'))} + +.. confval:: intersphinx_cache_limit + + The maximum number of days to cache remote inventories. The default is + ``5``, meaning five days. Set this to a negative value to cache inventories + for unlimited time. + +.. confval:: intersphinx_timeout + + The number of seconds for timeout. The default is ``None``, meaning do not + timeout. + + .. note:: + + timeout is not a time limit on the entire response download; rather, an + exception is raised if the server has not issued a response for timeout + seconds. + + +Showing all links of an Intersphinx mapping file +------------------------------------------------ + +To show all Intersphinx links and their targets of an Intersphinx mapping file, +run ``python -msphinx.ext.intersphinx url-or-path``. This is helpful when +searching for the root cause of a broken Intersphinx link in a documentation +project. The following example prints the Intersphinx mapping of the Python 3 +documentation:: + + $ python -msphinx.ext.intersphinx https://docs.python.org/3/objects.inv + +Using Intersphinx with inventory file under Basic Authorization +--------------------------------------------------------------- + +Intersphinx supports Basic Authorization like this:: + + intersphinx_mapping = {'python': ('https://user:password@docs.python.org/3', + None)} + +The user and password will be stripped from the URL when generating the links. diff --git a/sphinx/doc/usage/extensions/linkcode.rst b/sphinx/doc/usage/extensions/linkcode.rst new file mode 100644 index 0000000..e65a0b7 --- /dev/null +++ b/sphinx/doc/usage/extensions/linkcode.rst @@ -0,0 +1,51 @@ +:mod:`sphinx.ext.linkcode` -- Add external links to source code +=============================================================== + +.. module:: sphinx.ext.linkcode + :synopsis: Add external links to source code. +.. moduleauthor:: Pauli Virtanen + +.. versionadded:: 1.2 + +This extension looks at your object descriptions (``.. class::``, +``.. function::`` etc.) and adds external links to code hosted +somewhere on the web. The intent is similar to the +``sphinx.ext.viewcode`` extension, but assumes the source code can be +found somewhere on the Internet. + +In your configuration, you need to specify a :confval:`linkcode_resolve` +function that returns an URL based on the object. + + +Configuration +------------- + +.. confval:: linkcode_resolve + + This is a function ``linkcode_resolve(domain, info)``, + which should return the URL to source code corresponding to + the object in given domain with given information. + + The function should return ``None`` if no link is to be added. + + The argument ``domain`` specifies the language domain the object is + in. ``info`` is a dictionary with the following keys guaranteed to + be present (dependent on the domain): + + - ``py``: ``module`` (name of the module), ``fullname`` (name of the object) + - ``c``: ``names`` (list of names for the object) + - ``cpp``: ``names`` (list of names for the object) + - ``javascript``: ``object`` (name of the object), ``fullname`` + (name of the item) + + Example: + + .. code-block:: python + + def linkcode_resolve(domain, info): + if domain != 'py': + return None + if not info['module']: + return None + filename = info['module'].replace('.', '/') + return "https://somesite/sourcerepo/%s.py" % filename diff --git a/sphinx/doc/usage/extensions/math.rst b/sphinx/doc/usage/extensions/math.rst new file mode 100644 index 0000000..780e57e --- /dev/null +++ b/sphinx/doc/usage/extensions/math.rst @@ -0,0 +1,243 @@ +.. highlight:: rest + +.. _math-support: + +Math support for HTML outputs in Sphinx +======================================= + +.. module:: sphinx.ext.mathbase + :synopsis: Common math support for imgmath and mathjax / jsmath. + +.. versionadded:: 0.5 +.. versionchanged:: 1.8 + + Math support for non-HTML builders is integrated to sphinx-core. + So mathbase extension is no longer needed. + +Since mathematical notation isn't natively supported by HTML in any way, Sphinx +gives a math support to HTML document with several extensions. These use the +reStructuredText math :rst:dir:`directive <math>` and :rst:role:`role <math>`. + +:mod:`sphinx.ext.imgmath` -- Render math as images +-------------------------------------------------- + +.. module:: sphinx.ext.imgmath + :synopsis: Render math as PNG or SVG images. + +.. versionadded:: 1.4 + +This extension renders math via LaTeX and dvipng_ or dvisvgm_ into PNG or SVG +images. This of course means that the computer where the docs are built must +have both programs available. + +There are various configuration values you can set to influence how the images +are built: + +.. confval:: imgmath_image_format + + The output image format. The default is ``'png'``. It should be either + ``'png'`` or ``'svg'``. The image is produced by first executing ``latex`` + on the TeX mathematical mark-up then (depending on the requested format) + either `dvipng`_ or `dvisvgm`_. + +.. confval:: imgmath_use_preview + + ``dvipng`` and ``dvisvgm`` both have the ability to collect from LaTeX the + "depth" of the rendered math: an inline image should use this "depth" in a + ``vertical-align`` style to get correctly aligned with surrounding text. + + This mechanism requires the `LaTeX preview package`_ (available as + ``preview-latex-style`` on Ubuntu xenial). Therefore, the default for this + option is ``False`` but it is strongly recommended to set it to ``True``. + + .. versionchanged:: 2.2 + + This option can be used with the ``'svg'`` :confval:`imgmath_image_format`. + +.. confval:: imgmath_add_tooltips + + Default: ``True``. If false, do not add the LaTeX code as an "alt" attribute + for math images. + +.. confval:: imgmath_font_size + + The font size (in ``pt``) of the displayed math. The default value is + ``12``. It must be a positive integer. + +.. confval:: imgmath_latex + + The command name with which to invoke LaTeX. The default is ``'latex'``; you + may need to set this to a full path if ``latex`` is not in the executable + search path. + + Since this setting is not portable from system to system, it is normally not + useful to set it in ``conf.py``; rather, giving it on the + :program:`sphinx-build` command line via the :option:`-D <sphinx-build -D>` + option should be preferable, like this:: + + sphinx-build -b html -D imgmath_latex=C:\tex\latex.exe . _build/html + + This value should only contain the path to the latex executable, not further + arguments; use :confval:`imgmath_latex_args` for that purpose. + + .. hint:: + + Some fancy LaTeX mark-up (an example was reported which used TikZ to add + various decorations to the equation) require multiple runs of the LaTeX + executable. To handle this, set this configuration setting to + ``'latexmk'`` (or a full path to it) as this Perl script reliably + chooses dynamically how many latex runs are needed. + +.. confval:: imgmath_latex_args + + Additional arguments to give to latex, as a list. The default is an empty + list. + +.. confval:: imgmath_latex_preamble + + Additional LaTeX code to put into the preamble of the LaTeX files used to + translate the math snippets. This is left empty by default. Use it + e.g. to add packages which modify the fonts used for math, such as + ``'\\usepackage{newtxsf}'`` for sans-serif fonts, or + ``'\\usepackage{fouriernc}'`` for serif fonts. Indeed, the default LaTeX + math fonts have rather thin glyphs which (in HTML output) often do not + match well with the font for text. + +.. confval:: imgmath_dvipng + + The command name to invoke ``dvipng``. The default is + ``'dvipng'``; you may need to set this to a full path if ``dvipng`` is not in + the executable search path. This option is only used when + ``imgmath_image_format`` is set to ``'png'``. + +.. confval:: imgmath_dvipng_args + + Additional arguments to give to dvipng, as a list. The default value is + ``['-gamma', '1.5', '-D', '110', '-bg', 'Transparent']`` which makes the + image a bit darker and larger then it is by default (this compensates + somewhat for the thinness of default LaTeX math fonts), and produces PNGs with a + transparent background. This option is used only when + ``imgmath_image_format`` is ``'png'``. + +.. confval:: imgmath_dvisvgm + + The command name to invoke ``dvisvgm``. The default is + ``'dvisvgm'``; you may need to set this to a full path if ``dvisvgm`` is not + in the executable search path. This option is only used when + ``imgmath_image_format`` is ``'svg'``. + +.. confval:: imgmath_dvisvgm_args + + Additional arguments to give to dvisvgm, as a list. The default value is + ``['--no-fonts']``, which means that ``dvisvgm`` will render glyphs as path + elements (cf the `dvisvgm FAQ`_). This option is used only when + ``imgmath_image_format`` is ``'svg'``. + + +:mod:`sphinx.ext.mathjax` -- Render math via JavaScript +------------------------------------------------------- + +.. module:: sphinx.ext.mathjax + :synopsis: Render math using JavaScript via MathJax. + +.. versionadded:: 1.1 + +This extension puts math as-is into the HTML files. The JavaScript package +MathJax_ is then loaded and transforms the LaTeX markup to readable math live in +the browser. + +Because MathJax (and the necessary fonts) is very large, it is not included in +Sphinx but is set to automatically include it from a third-party site. + +.. attention:: + + You should use the math :rst:dir:`directive <math>` and + :rst:role:`role <math>`, not the native MathJax ``$$``, ``\(``, etc. + + +.. confval:: mathjax_path + + The path to the JavaScript file to include in the HTML files in order to load + MathJax. + + The default is the ``https://`` URL that loads the JS files from the + `cdnjs`__ Content Delivery Network. See the `MathJax Getting Started + page`__ for details. If you want MathJax to be available offline or + without including resources from a third-party site, you have to + download it and set this value to a different path. + + __ https://cdnjs.com + + __ https://docs.mathjax.org/en/latest/start.html + + The path can be absolute or relative; if it is relative, it is relative to + the ``_static`` directory of the built docs. + + For example, if you put MathJax into the static path of the Sphinx docs, this + value would be ``MathJax/MathJax.js``. If you host more than one Sphinx + documentation set on one server, it is advisable to install MathJax in a + shared location. + + You can also give a full ``https://`` URL different from the CDN URL. + +.. confval:: mathjax_options + + The options to script tag for mathjax. For example, you can set integrity + option with following setting:: + + mathjax_options = { + 'integrity': 'sha384-......', + } + + The default is empty (``{}``). + + .. versionadded:: 1.8 + +.. confval:: mathjax_config + + The inline configuration options for mathjax. The value is used as a + parameter of ``MathJax.Hub.Config()``. For more information, please + read `Using in-line configuration options`_. + + For example:: + + mathjax_config = { + 'extensions': ['tex2jax.js'], + 'jax': ['input/TeX', 'output/HTML-CSS'], + } + + The default is empty (not configured). + + .. versionadded:: 1.8 + +.. _Using in-line configuration options: https://docs.mathjax.org/en/latest/configuration.html#using-in-line-configuration-options + +:mod:`sphinx.ext.jsmath` -- Render math via JavaScript +------------------------------------------------------ + +.. module:: sphinx.ext.jsmath + :synopsis: Render math using JavaScript via JSMath. + +This extension works just as the MathJax extension does, but uses the older +package jsMath_. It provides this config value: + +.. confval:: jsmath_path + + The path to the JavaScript file to include in the HTML files in order to load + JSMath. There is no default. + + The path can be absolute or relative; if it is relative, it is relative to + the ``_static`` directory of the built docs. + + For example, if you put JSMath into the static path of the Sphinx docs, this + value would be ``jsMath/easy/load.js``. If you host more than one + Sphinx documentation set on one server, it is advisable to install jsMath in + a shared location. + + +.. _dvipng: https://savannah.nongnu.org/projects/dvipng/ +.. _dvisvgm: https://dvisvgm.de/ +.. _dvisvgm FAQ: https://dvisvgm.de/FAQ +.. _MathJax: https://www.mathjax.org/ +.. _jsMath: http://www.math.union.edu/~dpvc/jsmath/ +.. _LaTeX preview package: https://www.gnu.org/software/auctex/preview-latex.html diff --git a/sphinx/doc/usage/extensions/napoleon.rst b/sphinx/doc/usage/extensions/napoleon.rst new file mode 100644 index 0000000..b12dd03 --- /dev/null +++ b/sphinx/doc/usage/extensions/napoleon.rst @@ -0,0 +1,480 @@ +:mod:`sphinx.ext.napoleon` -- Support for NumPy and Google style docstrings +=========================================================================== + +.. module:: sphinx.ext.napoleon + :synopsis: Support for NumPy and Google style docstrings + +.. moduleauthor:: Rob Ruana + +.. versionadded:: 1.3 + +Overview +-------- + +.. highlight:: text + +Are you tired of writing docstrings that look like this:: + + :param path: The path of the file to wrap + :type path: str + :param field_storage: The :class:`FileStorage` instance to wrap + :type field_storage: FileStorage + :param temporary: Whether or not to delete the file when the File + instance is destructed + :type temporary: bool + :returns: A buffered writable file descriptor + :rtype: BufferedFileStorage + +`reStructuredText`_ is great, but it creates visually dense, hard to read +`docstrings`_. Compare the jumble above to the same thing rewritten +according to the `Google Python Style Guide`_:: + + Args: + path (str): The path of the file to wrap + field_storage (FileStorage): The :class:`FileStorage` instance to wrap + temporary (bool): Whether or not to delete the file when the File + instance is destructed + + Returns: + BufferedFileStorage: A buffered writable file descriptor + +Much more legible, no? + +Napoleon is a :term:`extension` that enables Sphinx to parse both `NumPy`_ and +`Google`_ style docstrings - the style recommended by `Khan Academy`_. + +Napoleon is a pre-processor that parses `NumPy`_ and `Google`_ style +docstrings and converts them to reStructuredText before Sphinx attempts to +parse them. This happens in an intermediate step while Sphinx is processing +the documentation, so it doesn't modify any of the docstrings in your actual +source code files. + +.. _ReStructuredText: http://docutils.sourceforge.net/rst.html +.. _docstrings: https://www.python.org/dev/peps/pep-0287/ +.. _Google Python Style Guide: + https://google.github.io/styleguide/pyguide.html +.. _Google: + https://google.github.io/styleguide/pyguide.html#Comments +.. _NumPy: + https://numpydoc.readthedocs.io/en/latest/format.html#docstring-standard +.. _Khan Academy: + https://github.com/Khan/style-guides/blob/master/style/python.md#docstrings + +Getting Started +~~~~~~~~~~~~~~~ + +1. After :doc:`setting up Sphinx </usage/quickstart>` to build your docs, + enable napoleon in the Sphinx `conf.py` file:: + + # conf.py + + # Add napoleon to the extensions list + extensions = ['sphinx.ext.napoleon'] + +2. Use `sphinx-apidoc` to build your API documentation:: + + $ sphinx-apidoc -f -o docs/source projectdir + + +Docstrings +~~~~~~~~~~ + +Napoleon interprets every docstring that :mod:`autodoc <sphinx.ext.autodoc>` +can find, including docstrings on: ``modules``, ``classes``, ``attributes``, +``methods``, ``functions``, and ``variables``. Inside each docstring, +specially formatted `Sections`_ are parsed and converted to +reStructuredText. + +All standard reStructuredText formatting still works as expected. + + +.. _Sections: + +Docstring Sections +~~~~~~~~~~~~~~~~~~ + +All of the following section headers are supported: + + * ``Args`` *(alias of Parameters)* + * ``Arguments`` *(alias of Parameters)* + * ``Attention`` + * ``Attributes`` + * ``Caution`` + * ``Danger`` + * ``Error`` + * ``Example`` + * ``Examples`` + * ``Hint`` + * ``Important`` + * ``Keyword Args`` *(alias of Keyword Arguments)* + * ``Keyword Arguments`` + * ``Methods`` + * ``Note`` + * ``Notes`` + * ``Other Parameters`` + * ``Parameters`` + * ``Return`` *(alias of Returns)* + * ``Returns`` + * ``Raises`` + * ``References`` + * ``See Also`` + * ``Tip`` + * ``Todo`` + * ``Warning`` + * ``Warnings`` *(alias of Warning)* + * ``Warns`` + * ``Yield`` *(alias of Yields)* + * ``Yields`` + +Google vs NumPy +~~~~~~~~~~~~~~~ + +Napoleon supports two styles of docstrings: `Google`_ and `NumPy`_. The +main difference between the two styles is that Google uses indentation to +separate sections, whereas NumPy uses underlines. + +Google style: + +.. code-block:: python3 + + def func(arg1, arg2): + """Summary line. + + Extended description of function. + + Args: + arg1 (int): Description of arg1 + arg2 (str): Description of arg2 + + Returns: + bool: Description of return value + + """ + return True + +NumPy style: + +.. code-block:: python3 + + def func(arg1, arg2): + """Summary line. + + Extended description of function. + + Parameters + ---------- + arg1 : int + Description of arg1 + arg2 : str + Description of arg2 + + Returns + ------- + bool + Description of return value + + """ + return True + +NumPy style tends to require more vertical space, whereas Google style +tends to use more horizontal space. Google style tends to be easier to +read for short and simple docstrings, whereas NumPy style tends be easier +to read for long and in-depth docstrings. + +The `Khan Academy`_ recommends using Google style. + +The choice between styles is largely aesthetic, but the two styles should +not be mixed. Choose one style for your project and be consistent with it. + +.. seealso:: + + For complete examples: + + * :ref:`example_google` + * :ref:`example_numpy` + + +Type Annotations +~~~~~~~~~~~~~~~~ + +`PEP 484`_ introduced a standard way to express types in Python code. +This is an alternative to expressing types directly in docstrings. +One benefit of expressing types according to `PEP 484`_ is that +type checkers and IDEs can take advantage of them for static code +analysis. + +Google style with Python 3 type annotations:: + + def func(arg1: int, arg2: str) -> bool: + """Summary line. + + Extended description of function. + + Args: + arg1: Description of arg1 + arg2: Description of arg2 + + Returns: + Description of return value + + """ + return True + +Google style with types in docstrings:: + + def func(arg1, arg2): + """Summary line. + + Extended description of function. + + Args: + arg1 (int): Description of arg1 + arg2 (str): Description of arg2 + + Returns: + bool: Description of return value + + """ + return True + +.. Note:: + `Python 2/3 compatible annotations`_ aren't currently + supported by Sphinx and won't show up in the docs. + +.. _PEP 484: + https://www.python.org/dev/peps/pep-0484/ + +.. _Python 2/3 compatible annotations: + https://www.python.org/dev/peps/pep-0484/#suggested-syntax-for-python-2-7-and-straddling-code + + +Configuration +------------- + +Listed below are all the settings used by napoleon and their default +values. These settings can be changed in the Sphinx `conf.py` file. Make +sure that "sphinx.ext.napoleon" is enabled in `conf.py`:: + + # conf.py + + # Add any Sphinx extension module names here, as strings + extensions = ['sphinx.ext.napoleon'] + + # Napoleon settings + napoleon_google_docstring = True + napoleon_numpy_docstring = True + napoleon_include_init_with_doc = False + napoleon_include_private_with_doc = False + napoleon_include_special_with_doc = True + napoleon_use_admonition_for_examples = False + napoleon_use_admonition_for_notes = False + napoleon_use_admonition_for_references = False + napoleon_use_ivar = False + napoleon_use_param = True + napoleon_use_rtype = True + +.. _Google style: + https://google.github.io/styleguide/pyguide.html +.. _NumPy style: + https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt + +.. confval:: napoleon_google_docstring + + True to parse `Google style`_ docstrings. False to disable support + for Google style docstrings. *Defaults to True.* + +.. confval:: napoleon_numpy_docstring + + True to parse `NumPy style`_ docstrings. False to disable support + for NumPy style docstrings. *Defaults to True.* + +.. confval:: napoleon_include_init_with_doc + + True to list ``__init___`` docstrings separately from the class + docstring. False to fall back to Sphinx's default behavior, which + considers the ``__init___`` docstring as part of the class + documentation. *Defaults to False.* + + **If True**:: + + def __init__(self): + \"\"\" + This will be included in the docs because it has a docstring + \"\"\" + + def __init__(self): + # This will NOT be included in the docs + +.. confval:: napoleon_include_private_with_doc + + True to include private members (like ``_membername``) with docstrings + in the documentation. False to fall back to Sphinx's default behavior. + *Defaults to False.* + + **If True**:: + + def _included(self): + """ + This will be included in the docs because it has a docstring + """ + pass + + def _skipped(self): + # This will NOT be included in the docs + pass + +.. confval:: napoleon_include_special_with_doc + + True to include special members (like ``__membername__``) with + docstrings in the documentation. False to fall back to Sphinx's + default behavior. *Defaults to True.* + + **If True**:: + + def __str__(self): + """ + This will be included in the docs because it has a docstring + """ + return unicode(self).encode('utf-8') + + def __unicode__(self): + # This will NOT be included in the docs + return unicode(self.__class__.__name__) + +.. confval:: napoleon_use_admonition_for_examples + + True to use the ``.. admonition::`` directive for the **Example** and + **Examples** sections. False to use the ``.. rubric::`` directive + instead. One may look better than the other depending on what HTML + theme is used. *Defaults to False.* + + This `NumPy style`_ snippet will be converted as follows:: + + Example + ------- + This is just a quick example + + **If True**:: + + .. admonition:: Example + + This is just a quick example + + **If False**:: + + .. rubric:: Example + + This is just a quick example + +.. confval:: napoleon_use_admonition_for_notes + + True to use the ``.. admonition::`` directive for **Notes** sections. + False to use the ``.. rubric::`` directive instead. *Defaults to False.* + + .. note:: The singular **Note** section will always be converted to a + ``.. note::`` directive. + + .. seealso:: + + :attr:`napoleon_use_admonition_for_examples` + +.. confval:: napoleon_use_admonition_for_references + + True to use the ``.. admonition::`` directive for **References** + sections. False to use the ``.. rubric::`` directive instead. + *Defaults to False.* + + .. seealso:: + + :attr:`napoleon_use_admonition_for_examples` + +.. confval:: napoleon_use_ivar + + True to use the ``:ivar:`` role for instance variables. False to use + the ``.. attribute::`` directive instead. *Defaults to False.* + + This `NumPy style`_ snippet will be converted as follows:: + + Attributes + ---------- + attr1 : int + Description of `attr1` + + **If True**:: + + :ivar attr1: Description of `attr1` + :vartype attr1: int + + **If False**:: + + .. attribute:: attr1 + + Description of `attr1` + + :type: int + +.. confval:: napoleon_use_param + + True to use a ``:param:`` role for each function parameter. False to + use a single ``:parameters:`` role for all the parameters. + *Defaults to True.* + + This `NumPy style`_ snippet will be converted as follows:: + + Parameters + ---------- + arg1 : str + Description of `arg1` + arg2 : int, optional + Description of `arg2`, defaults to 0 + + **If True**:: + + :param arg1: Description of `arg1` + :type arg1: str + :param arg2: Description of `arg2`, defaults to 0 + :type arg2: int, optional + + **If False**:: + + :parameters: * **arg1** (*str*) -- + Description of `arg1` + * **arg2** (*int, optional*) -- + Description of `arg2`, defaults to 0 + +.. confval:: napoleon_use_keyword + + True to use a ``:keyword:`` role for each function keyword argument. + False to use a single ``:keyword arguments:`` role for all the + keywords. + *Defaults to True.* + + This behaves similarly to :attr:`napoleon_use_param`. Note unlike docutils, + ``:keyword:`` and ``:param:`` will not be treated the same way - there will + be a separate "Keyword Arguments" section, rendered in the same fashion as + "Parameters" section (type links created if possible) + + .. seealso:: + + :attr:`napoleon_use_param` + +.. confval:: napoleon_use_rtype + + True to use the ``:rtype:`` role for the return type. False to output + the return type inline with the description. *Defaults to True.* + + This `NumPy style`_ snippet will be converted as follows:: + + Returns + ------- + bool + True if successful, False otherwise + + **If True**:: + + :returns: True if successful, False otherwise + :rtype: bool + + **If False**:: + + :returns: *bool* -- True if successful, False otherwise diff --git a/sphinx/doc/usage/extensions/todo.rst b/sphinx/doc/usage/extensions/todo.rst new file mode 100644 index 0000000..bf8b922 --- /dev/null +++ b/sphinx/doc/usage/extensions/todo.rst @@ -0,0 +1,62 @@ +:mod:`sphinx.ext.todo` -- Support for todo items +================================================ + +.. module:: sphinx.ext.todo + :synopsis: Allow inserting todo items into documents. +.. moduleauthor:: Daniel Bültmann + +.. versionadded:: 0.5 + +There are two additional directives when using this extension: + +.. rst:directive:: todo + + Use this directive like, for example, :rst:dir:`note`. + + It will only show up in the output if :confval:`todo_include_todos` is + ``True``. + + .. versionadded:: 1.3.2 + This directive supports an ``class`` option that determines the class + attribute for HTML output. If not given, the class defaults to + ``admonition-todo``. + + +.. rst:directive:: todolist + + This directive is replaced by a list of all todo directives in the whole + documentation, if :confval:`todo_include_todos` is ``True``. + + +These can be configured as seen below. + +Configuration +------------- + +.. confval:: todo_include_todos + + If this is ``True``, :rst:dir:`todo` and :rst:dir:`todolist` produce output, + else they produce nothing. The default is ``False``. + +.. confval:: todo_emit_warnings + + If this is ``True``, :rst:dir:`todo` emits a warning for each TODO entries. + The default is ``False``. + + .. versionadded:: 1.5 + +.. confval:: todo_link_only + + If this is ``True``, :rst:dir:`todolist` produce output without file path and + line, The default is ``False``. + + .. versionadded:: 1.4 + +autodoc provides the following an additional event: + +.. event:: todo-defined (app, node) + + .. versionadded:: 1.5 + + Emitted when a todo is defined. *node* is the defined + ``sphinx.ext.todo.todo_node`` node. diff --git a/sphinx/doc/usage/extensions/viewcode.rst b/sphinx/doc/usage/extensions/viewcode.rst new file mode 100644 index 0000000..d3c3c44 --- /dev/null +++ b/sphinx/doc/usage/extensions/viewcode.rst @@ -0,0 +1,98 @@ +:mod:`sphinx.ext.viewcode` -- Add links to highlighted source code +================================================================== + +.. module:: sphinx.ext.viewcode + :synopsis: Add links to a highlighted version of the source code. +.. moduleauthor:: Georg Brandl + +.. versionadded:: 1.0 + +This extension looks at your Python object descriptions (``.. class::``, ``.. +function::`` etc.) and tries to find the source files where the objects are +contained. When found, a separate HTML page will be output for each module with +a highlighted version of the source code, and a link will be added to all object +descriptions that leads to the source code of the described object. A link back +from the source to the description will also be inserted. + +.. warning:: + + Basically, ``viewcode`` extension will import the modules being linked to. + If any modules have side effects on import, these will be executed when + ``sphinx-build`` is run. + + If you document scripts (as opposed to library modules), make sure their + main routine is protected by a ``if __name__ == '__main__'`` condition. + + In addition, if you don't want to import the modules by ``viewcode``, + you can tell the location of the location of source code to ``viewcode`` + using the :event:`viewcode-find-source` event. + + If :confval:`viewcode_follow_imported_members` is enabled, + you will also need to resolve imported attributes + using the :event:`viewcode-follow-imported` event. + +This extension works only on HTML related builders like ``html``, +``applehelp``, ``devhelp``, ``htmlhelp``, ``qthelp`` and so on except +``singlehtml``. By default ``epub`` builder doesn't +support this extension (see :confval:`viewcode_enable_epub`). + +Configuration +------------- + +.. confval:: viewcode_follow_imported_members + + If this is ``True``, viewcode extension will emit + :event:`viewcode-follow-imported` event to resolve the name of the module + by other extensions. The default is ``True``. + + .. versionadded:: 1.3 + + .. versionchanged:: 1.8 + Renamed from ``viewcode_import`` to ``viewcode_follow_imported_members``. + +.. confval:: viewcode_enable_epub + + If this is ``True``, viewcode extension is also enabled even if you use + epub builders. This extension generates pages outside toctree, but this + is not preferred as epub format. + + Until 1.4.x, this extension is always enabled. If you want to generate + epub as same as 1.4.x, you should set ``True``, but epub format checker's + score becomes worse. + + The default is ``False``. + + .. versionadded:: 1.5 + + .. warning:: + + Not all epub readers support pages generated by viewcode extension. + These readers ignore links to pages are not under toctree. + + Some reader's rendering result are corrupted and + `epubcheck <https://github.com/IDPF/epubcheck>`_'s score + becomes worse even if the reader supports. + +.. event:: viewcode-find-source (app, modname) + + .. versionadded:: 1.8 + + Find the source code for a module. + An event handler for this event should return + a tuple of the source code itself and a dictionary of tags. + The dictionary maps the name of a class, function, attribute, etc + to a tuple of its type, the start line number, and the end line number. + The type should be one of "class", "def", or "other". + + :param app: The Sphinx application object. + :param modname: The name of the module to find source code for. + +.. event:: viewcode-follow-imported (app, modname, attribute) + + .. versionadded:: 1.8 + + Find the name of the original module for an attribute. + + :param app: The Sphinx application object. + :param modname: The name of the module that the attribute belongs to. + :param attribute: The name of the member to follow. diff --git a/sphinx/doc/usage/installation.rst b/sphinx/doc/usage/installation.rst new file mode 100644 index 0000000..ba93bf1 --- /dev/null +++ b/sphinx/doc/usage/installation.rst @@ -0,0 +1,218 @@ +================= +Installing Sphinx +================= + +.. contents:: + :depth: 1 + :local: + :backlinks: none + +.. highlight:: console + +Overview +-------- + +Sphinx is written in `Python`__ and supports Python 3.5+. + +__ https://docs.python-guide.org/ + + +Linux +----- + +Debian/Ubuntu +~~~~~~~~~~~~~ + +Install either ``python3-sphinx`` using :command:`apt-get`: + +:: + + $ apt-get install python3-sphinx + +If it not already present, this will install Python for you. + +RHEL, CentOS +~~~~~~~~~~~~ + +Install ``python-sphinx`` using :command:`yum`: + +:: + + $ yum install python-sphinx + +If it not already present, this will install Python for you. + +Other distributions +~~~~~~~~~~~~~~~~~~~ + +Most Linux distributions have Sphinx in their package repositories. Usually +the package is called ``python3-sphinx``, ``python-sphinx`` or ``sphinx``. Be +aware that there are at least two other packages with ``sphinx`` in their name: +a speech recognition toolkit (*CMU Sphinx*) and a full-text search database +(*Sphinx search*). + + +macOS +----- + +Sphinx can be installed using `Homebrew`__, `MacPorts`__, or as part of +a Python distribution such as `Anaconda`__. + +__ https://brew.sh/ +__ https://www.macports.org/ +__ https://www.anaconda.com/download/#macos + +Homebrew +~~~~~~~~ + +:: + + $ brew install sphinx-doc + +For more information, refer to the `package overview`__. + +__ https://formulae.brew.sh/formula/sphinx-doc + +MacPorts +~~~~~~~~ + +Install either ``python3x-sphinx`` using :command:`port`: + +:: + + $ sudo port install py38-sphinx + +To set up the executable paths, use the ``port select`` command: + +:: + + $ sudo port select --set python python38 + $ sudo port select --set sphinx py38-sphinx + +For more information, refer to the `package overview`__. + +__ https://www.macports.org/ports.php?by=library&substr=py38-sphinx + +Anaconda +~~~~~~~~ + +:: + + $ conda install sphinx + +Windows +------- + +.. todo:: Could we start packaging this? + +Most Windows users do not have Python installed by default, so we begin with +the installation of Python itself. To check if you already have Python +installed, open the *Command Prompt* (:kbd:`⊞Win-r` and type :command:`cmd`). +Once the command prompt is open, type :command:`python --version` and press +Enter. If Python is installed, you will see the version of Python printed to +the screen. If you do not have Python installed, refer to the `Hitchhikers +Guide to Python's`__ Python on Windows installation guides. You must install +`Python 3`__. + +Once Python is installed, you can install Sphinx using :command:`pip`. Refer +to the :ref:`pip installation instructions <install-pypi>` below for more +information. + +__ https://docs.python-guide.org/ +__ https://docs.python-guide.org/starting/install3/win/ + + +.. _install-pypi: + +Installation from PyPI +---------------------- + +Sphinx packages are published on the `Python Package Index +<https://pypi.org/project/Sphinx/>`_. The preferred tool for installing +packages from *PyPI* is :command:`pip`. This tool is provided with all modern +versions of Python. + +On Linux or MacOS, you should open your terminal and run the following command. + +:: + + $ pip install -U sphinx + +On Windows, you should open *Command Prompt* (:kbd:`⊞Win-r` and type +:command:`cmd`) and run the same command. + +.. code-block:: doscon + + C:\> pip install -U sphinx + +After installation, type :command:`sphinx-build --version` on the command +prompt. If everything worked fine, you will see the version number for the +Sphinx package you just installed. + +Installation from *PyPI* also allows you to install the latest development +release. You will not generally need (or want) to do this, but it can be +useful if you see a possible bug in the latest stable release. To do this, use +the ``--pre`` flag. + +:: + + $ pip install -U --pre sphinx + + +Docker +------ + +Docker images for Sphinx are published on the `Docker Hub <https://hub.docker.com/>`_. There are two kind of images: + +- `sphinxdoc/sphinx <https://hub.docker.com/repository/docker/sphinxdoc/sphinx>`_ +- `sphinxdoc/sphinx-latexpdf <https://hub.docker.com/repository/docker/sphinxdoc/sphinx-latexpdf>`_ + +Former one is used for standard usage of Sphinx, and latter one is mainly used for PDF builds using LaTeX. +Please choose one for your purpose. + +.. note:: + + sphinxdoc/sphinx-latexpdf contains TeXLive packages. So the image is very large (over 2GB!). + +.. hint:: + + When using docker images, please use ``docker run`` command to invoke sphinx commands. For example, + you can use following command to create a Sphinx project:: + + $ docker run --rm -v /path/to/document:/docs sphinxdoc/sphinx sphinx-quickstart + + And you can following command this to build HTML document:: + + $ docker run --rm -v /path/to/document:/docs sphinxdoc/sphinx make html + +For more details, please read `README file`__ of docker images. + +.. __: https://hub.docker.com/repository/docker/sphinxdoc/sphinx + + +Installation from source +------------------------ + +You can install Sphinx directly from a clone of the `Git repository`__. This +can be done either by cloning the repo and installing from the local clone, on +simply installing directly via :command:`git`. + +:: + + $ git clone https://github.com/sphinx-doc/sphinx + $ cd sphinx + $ pip install . + +:: + + $ pip install git+https://github.com/sphinx-doc/sphinx + +You can also download a snapshot of the Git repo in either `tar.gz`__ or +`zip`__ format. Once downloaded and extracted, these can be installed with +:command:`pip` as above. + +.. highlight:: default + +__ https://github.com/sphinx-doc/sphinx +__ https://github.com/sphinx-doc/sphinx/archive/master.tar.gz +__ https://github.com/sphinx-doc/sphinx/archive/master.zip diff --git a/sphinx/doc/usage/markdown.rst b/sphinx/doc/usage/markdown.rst new file mode 100644 index 0000000..3ab88dd --- /dev/null +++ b/sphinx/doc/usage/markdown.rst @@ -0,0 +1,58 @@ +.. highlight:: python + +.. _markdown: + +======== +Markdown +======== + +`Markdown`__ is a lightweight markup language with a simplistic plain text +formatting syntax. It exists in many syntactically different *flavors*. To +support Markdown-based documentation, Sphinx can use `recommonmark`__. +recommonmark is a Docutils bridge to `CommonMark-py`__, a Python package for +parsing the `CommonMark`__ Markdown flavor. + +__ https://daringfireball.net/projects/markdown/ +__ https://recommonmark.readthedocs.io/en/latest/index.html +__ https://github.com/rtfd/CommonMark-py +__ https://commonmark.org/ + +Configuration +------------- + +To configure your Sphinx project for Markdown support, proceed as follows: + +#. Install the Markdown parser *recommonmark*:: + + pip install --upgrade recommonmark + + .. note:: + + The configuration as explained here requires recommonmark version + 0.5.0 or later. + +#. Add *recommonmark* to the + :confval:`list of configured extensions <extensions>`:: + + extensions = ['recommonmark'] + + .. versionchanged:: 1.8 + Version 1.8 deprecates and version 3.0 removes the ``source_parsers`` + configuration variable that was used by older *recommonmark* versions. + +#. If you want to use Markdown files with extensions other than ``.md``, adjust + the :confval:`source_suffix` variable. The following example configures + Sphinx to parse all files with the extensions ``.md`` and ``.txt`` as + Markdown:: + + source_suffix = { + '.rst': 'restructuredtext', + '.txt': 'markdown', + '.md': 'markdown', + } + +#. You can further configure *recommonmark* to allow custom syntax that + standard *CommonMark* doesn't support. Read more in the `recommonmark + documentation`__. + +__ https://recommonmark.readthedocs.io/en/latest/auto_structify.html diff --git a/sphinx/doc/usage/quickstart.rst b/sphinx/doc/usage/quickstart.rst new file mode 100644 index 0000000..b5462a3 --- /dev/null +++ b/sphinx/doc/usage/quickstart.rst @@ -0,0 +1,335 @@ +=============== +Getting Started +=============== + +Once Sphinx is :doc:`installed </usage/installation>`, you can proceed with +setting up your first Sphinx project. To ease the process of getting started, +Sphinx provides a tool, :program:`sphinx-quickstart`, which will generate a +documentation source directory and populate it with some defaults. We're going +to use the :program:`sphinx-quickstart` tool here, though its use is by no means +necessary. + + +Setting up the documentation sources +------------------------------------ + +The root directory of a Sphinx collection of :term:`reStructuredText` document +sources is called the :term:`source directory`. This directory also contains +the Sphinx configuration file :file:`conf.py`, where you can configure all +aspects of how Sphinx reads your sources and builds your documentation. [#]_ + +Sphinx comes with a script called :program:`sphinx-quickstart` that sets up a +source directory and creates a default :file:`conf.py` with the most useful +configuration values from a few questions it asks you. To use this, run: + +.. code-block:: shell + + $ sphinx-quickstart + +There is also an automatic "API documentation" generator called +:program:`sphinx-apidoc`; see :doc:`/man/sphinx-apidoc` for details. + + +Defining document structure +--------------------------- + +Let's assume you've run :program:`sphinx-quickstart`. It created a source +directory with :file:`conf.py` and a master document, :file:`index.rst`. The +main function of the :term:`master document` is to serve as a welcome page, and +to contain the root of the "table of contents tree" (or *toctree*). This is one +of the main things that Sphinx adds to reStructuredText, a way to connect +multiple files to a single hierarchy of documents. + +.. sidebar:: reStructuredText directives + + ``toctree`` is a reStructuredText :dfn:`directive`, a very versatile piece + of markup. Directives can have arguments, options and content. + + *Arguments* are given directly after the double colon following the + directive's name. Each directive decides whether it can have arguments, and + how many. + + *Options* are given after the arguments, in form of a "field list". The + ``maxdepth`` is such an option for the ``toctree`` directive. + + *Content* follows the options or arguments after a blank line. Each + directive decides whether to allow content, and what to do with it. + + A common gotcha with directives is that **the first line of the content must + be indented to the same level as the options are**. + +The ``toctree`` directive initially is empty, and looks like so: + +.. code-block:: rest + + .. toctree:: + :maxdepth: 2 + +You add documents listing them in the *content* of the directive: + +.. code-block:: rest + + .. toctree:: + :maxdepth: 2 + + usage/installation + usage/quickstart + ... + +This is exactly how the ``toctree`` for this documentation looks. The +documents to include are given as :term:`document name`\ s, which in short +means that you leave off the file name extension and use forward slashes +(``/``) as directory separators. + +|more| Read more about :ref:`the toctree directive <toctree-directive>`. + +You can now create the files you listed in the ``toctree`` and add content, and +their section titles will be inserted (up to the ``maxdepth`` level) at the +place where the ``toctree`` directive is placed. Also, Sphinx now knows about +the order and hierarchy of your documents. (They may contain ``toctree`` +directives themselves, which means you can create deeply nested hierarchies if +necessary.) + + +Adding content +-------------- + +In Sphinx source files, you can use most features of standard +:term:`reStructuredText`. There are also several features added by Sphinx. +For example, you can add cross-file references in a portable way (which works +for all output types) using the :rst:role:`ref` role. + +For an example, if you are viewing the HTML version, you can look at the source +for this document -- use the "Show Source" link in the sidebar. + +.. todo:: Update the below link when we add new guides on these. + +|more| See :doc:`/usage/restructuredtext/index` for a more in-depth +introduction to reStructuredText, including markup added by Sphinx. + + +Running the build +----------------- + +Now that you have added some files and content, let's make a first build of the +docs. A build is started with the :program:`sphinx-build` program: + +.. code-block:: shell + + $ sphinx-build -b html sourcedir builddir + +where *sourcedir* is the :term:`source directory`, and *builddir* is the +directory in which you want to place the built documentation. +The :option:`-b <sphinx-build -b>` option selects a builder; in this example +Sphinx will build HTML files. + +|more| Refer to the :doc:`sphinx-build man page </man/sphinx-build>` for all +options that :program:`sphinx-build` supports. + +However, :program:`sphinx-quickstart` script creates a :file:`Makefile` and a +:file:`make.bat` which make life even easier for you. These can be executed by +running :command:`make` with the name of the builder. For example. + +.. code-block:: shell + + $ make html + +This will build HTML docs in the build directory you chose. Execute +:command:`make` without an argument to see which targets are available. + +.. admonition:: How do I generate PDF documents? + + ``make latexpdf`` runs the :mod:`LaTeX builder + <sphinx.builders.latex.LaTeXBuilder>` and readily invokes the pdfTeX + toolchain for you. + + +.. todo:: Move this whole section into a guide on rST or directives + +Documenting objects +------------------- + +One of Sphinx's main objectives is easy documentation of :dfn:`objects` (in a +very general sense) in any :dfn:`domain`. A domain is a collection of object +types that belong together, complete with markup to create and reference +descriptions of these objects. + +The most prominent domain is the Python domain. For example, to document +Python's built-in function ``enumerate()``, you would add this to one of your +source files. + +.. code-block:: restructuredtext + + .. py:function:: enumerate(sequence[, start=0]) + + Return an iterator that yields tuples of an index and an item of the + *sequence*. (And so on.) + +This is rendered like this: + +.. py:function:: enumerate(sequence[, start=0]) + + Return an iterator that yields tuples of an index and an item of the + *sequence*. (And so on.) + +The argument of the directive is the :dfn:`signature` of the object you +describe, the content is the documentation for it. Multiple signatures can be +given, each in its own line. + +The Python domain also happens to be the default domain, so you don't need to +prefix the markup with the domain name. + +.. code-block:: restructuredtext + + .. function:: enumerate(sequence[, start=0]) + + ... + +does the same job if you keep the default setting for the default domain. + +There are several more directives for documenting other types of Python +objects, for example :rst:dir:`py:class` or :rst:dir:`py:method`. There is +also a cross-referencing :dfn:`role` for each of these object types. This +markup will create a link to the documentation of ``enumerate()``. + +:: + + The :py:func:`enumerate` function can be used for ... + +And here is the proof: A link to :func:`enumerate`. + +Again, the ``py:`` can be left out if the Python domain is the default one. It +doesn't matter which file contains the actual documentation for +``enumerate()``; Sphinx will find it and create a link to it. + +Each domain will have special rules for how the signatures can look like, and +make the formatted output look pretty, or add specific features like links to +parameter types, e.g. in the C/C++ domains. + +|more| See :doc:`/usage/restructuredtext/domains` for all the available domains +and their directives/roles. + + +Basic configuration +------------------- + +Earlier we mentioned that the :file:`conf.py` file controls how Sphinx +processes your documents. In that file, which is executed as a Python source +file, you assign configuration values. For advanced users: since it is +executed by Sphinx, you can do non-trivial tasks in it, like extending +:data:`sys.path` or importing a module to find out the version you are +documenting. + +The config values that you probably want to change are already put into the +:file:`conf.py` by :program:`sphinx-quickstart` and initially commented out +(with standard Python syntax: a ``#`` comments the rest of the line). To +change the default value, remove the hash sign and modify the value. To +customize a config value that is not automatically added by +:program:`sphinx-quickstart`, just add an additional assignment. + +Keep in mind that the file uses Python syntax for strings, numbers, lists and +so on. The file is saved in UTF-8 by default, as indicated by the encoding +declaration in the first line. + +|more| See :doc:`/usage/configuration` for documentation of all available +config values. + + +.. todo:: Move this entire doc to a different section + +Autodoc +------- + +When documenting Python code, it is common to put a lot of documentation in the +source files, in documentation strings. Sphinx supports the inclusion of +docstrings from your modules with an :dfn:`extension` (an extension is a Python +module that provides additional features for Sphinx projects) called *autodoc*. + +In order to use *autodoc*, you need to activate it in :file:`conf.py` by +putting the string ``'sphinx.ext.autodoc'`` into the list assigned to the +:confval:`extensions` config value:: + + extensions = ['sphinx.ext.autodoc'] + +Then, you have a few additional directives at your disposal. For example, to +document the function ``io.open()``, reading its signature and +docstring from the source file, you'd write this:: + + .. autofunction:: io.open + +You can also document whole classes or even modules automatically, using member +options for the auto directives, like :: + + .. automodule:: io + :members: + +*autodoc* needs to import your modules in order to extract the docstrings. +Therefore, you must add the appropriate path to :py:data:`sys.path` in your +:file:`conf.py`. + +.. warning:: + + :mod:`~sphinx.ext.autodoc` **imports** the modules to be documented. If any + modules have side effects on import, these will be executed by ``autodoc`` + when ``sphinx-build`` is run. + + If you document scripts (as opposed to library modules), make sure their + main routine is protected by a ``if __name__ == '__main__'`` condition. + +|more| See :mod:`sphinx.ext.autodoc` for the complete description of the +features of autodoc. + + +.. todo:: Move this doc to another section + +Intersphinx +----------- + +Many Sphinx documents including the `Python documentation`_ are published on +the Internet. When you want to make links to such documents from your +documentation, you can do it with :mod:`sphinx.ext.intersphinx`. + +.. _Python documentation: https://docs.python.org/3 + +In order to use intersphinx, you need to activate it in :file:`conf.py` by +putting the string ``'sphinx.ext.intersphinx'`` into the :confval:`extensions` +list and set up the :confval:`intersphinx_mapping` config value. + +For example, to link to ``io.open()`` in the Python library manual, you need to +setup your :confval:`intersphinx_mapping` like:: + + intersphinx_mapping = {'python': ('https://docs.python.org/3', None)} + +And now, you can write a cross-reference like ``:py:func:`io.open```. Any +cross-reference that has no matching target in the current documentation set, +will be looked up in the documentation sets configured in +:confval:`intersphinx_mapping` (this needs access to the URL in order to +download the list of valid targets). Intersphinx also works for some other +:term:`domain`\'s roles including ``:ref:``, however it doesn't work for +``:doc:`` as that is non-domain role. + +|more| See :mod:`sphinx.ext.intersphinx` for the complete description of the +features of intersphinx. + + +More topics to be covered +------------------------- + +- :doc:`Other extensions </usage/extensions/index>`: +- Static files +- :doc:`Selecting a theme </usage/theming>` +- :doc:`/usage/advanced/setuptools` +- :ref:`Templating <templating>` +- Using extensions +- :ref:`Writing extensions <dev-extensions>` + + +.. rubric:: Footnotes + +.. [#] This is the usual layout. However, :file:`conf.py` can also live in + another directory, the :term:`configuration directory`. Refer to the + :doc:`sphinx-build man page </man/sphinx-build>` for more information. + +.. |more| image:: /_static/more.png + :align: middle + :alt: more info diff --git a/sphinx/doc/usage/restructuredtext/basics.rst b/sphinx/doc/usage/restructuredtext/basics.rst new file mode 100644 index 0000000..dffaf29 --- /dev/null +++ b/sphinx/doc/usage/restructuredtext/basics.rst @@ -0,0 +1,608 @@ +.. highlight:: rst + +.. _rst-primer: + +======================= +reStructuredText Primer +======================= + +reStructuredText is the default plaintext markup language used by Sphinx. This +section is a brief introduction to reStructuredText (reST) concepts and syntax, +intended to provide authors with enough information to author documents +productively. Since reST was designed to be a simple, unobtrusive markup +language, this will not take too long. + +.. seealso:: + + The authoritative `reStructuredText User Documentation + <http://docutils.sourceforge.net/rst.html>`_. The "ref" links in this + document link to the description of the individual constructs in the reST + reference. + + +Paragraphs +---------- + +The paragraph (:duref:`ref <paragraphs>`) is the most basic block in a reST +document. Paragraphs are simply chunks of text separated by one or more blank +lines. As in Python, indentation is significant in reST, so all lines of the +same paragraph must be left-aligned to the same level of indentation. + + +.. _rst-inline-markup: + +Inline markup +------------- + +The standard reST inline markup is quite simple: use + +* one asterisk: ``*text*`` for emphasis (italics), +* two asterisks: ``**text**`` for strong emphasis (boldface), and +* backquotes: ````text```` for code samples. + +If asterisks or backquotes appear in running text and could be confused with +inline markup delimiters, they have to be escaped with a backslash. + +Be aware of some restrictions of this markup: + +* it may not be nested, +* content may not start or end with whitespace: ``* text*`` is wrong, +* it must be separated from surrounding text by non-word characters. Use a + backslash escaped space to work around that: ``thisis\ *one*\ word``. + +These restrictions may be lifted in future versions of the docutils. + +It is also possible to replace or expand upon some of this inline markup with +roles. Refer to :ref:`rst-roles-alt` for more information. + + +Lists and Quote-like blocks +--------------------------- + +List markup (:duref:`ref <bullet-lists>`) is natural: just place an asterisk at +the start of a paragraph and indent properly. The same goes for numbered +lists; they can also be autonumbered using a ``#`` sign:: + + * This is a bulleted list. + * It has two items, the second + item uses two lines. + + 1. This is a numbered list. + 2. It has two items too. + + #. This is a numbered list. + #. It has two items too. + +Nested lists are possible, but be aware that they must be separated from the +parent list items by blank lines:: + + * this is + * a list + + * with a nested list + * and some subitems + + * and here the parent list continues + +Definition lists (:duref:`ref <definition-lists>`) are created as follows:: + + 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. + +Note that the term cannot have more than one line of text. + +Quoted paragraphs (:duref:`ref <block-quotes>`) are created by just indenting +them more than the surrounding paragraphs. + +Line blocks (:duref:`ref <line-blocks>`) are a way of preserving line breaks:: + + | These lines are + | broken exactly like in + | the source file. + +There are also several more special blocks available: + +* field lists (:duref:`ref <field-lists>`, with caveats noted in + :ref:`rst-field-lists`) +* option lists (:duref:`ref <option-lists>`) +* quoted literal blocks (:duref:`ref <quoted-literal-blocks>`) +* doctest blocks (:duref:`ref <doctest-blocks>`) + + +.. _rst-literal-blocks: + +Literal blocks +-------------- + +Literal code blocks (:duref:`ref <literal-blocks>`) are introduced by ending a +paragraph with the special marker ``::``. The literal block must be indented +(and, like all paragraphs, separated from the surrounding ones by blank +lines):: + + This is a normal text paragraph. The next paragraph is a code sample:: + + It is not processed in any way, except + that the indentation is removed. + + It can span multiple lines. + + This is a normal text paragraph again. + +The handling of the ``::`` marker is smart: + +* If it occurs as a paragraph of its own, that paragraph is completely left out + of the document. +* If it is preceded by whitespace, the marker is removed. +* If it is preceded by non-whitespace, the marker is replaced by a single + colon. + +That way, the second sentence in the above example's first paragraph would be +rendered as "The next paragraph is a code sample:". + +Code highlighting can be enabled for these literal blocks on a document-wide +basis using the :rst:dir:`highlight` directive and on a project-wide basis +using the :confval:`highlight_language` configuration option. The +:rst:dir:`code-block` directive can be used to set highlighting on a +block-by-block basis. These directives are discussed later. + + +.. _rst-doctest-blocks: + +Doctest blocks +-------------- + +Doctest blocks (:duref:`ref <doctest-blocks>`) are interactive Python sessions +cut-and-pasted into docstrings. They do not require the +:ref:`literal blocks <rst-literal-blocks>` syntax. The doctest block must end +with a blank line and should *not* end with with an unused prompt:: + + >>> 1 + 1 + 2 + +.. _rst-tables: + +Tables +------ + +For *grid tables* (:duref:`ref <grid-tables>`), you have to "paint" the cell +grid yourself. They look like this:: + + +------------------------+------------+----------+----------+ + | Header row, column 1 | Header 2 | Header 3 | Header 4 | + | (header rows optional) | | | | + +========================+============+==========+==========+ + | body row 1, column 1 | column 2 | column 3 | column 4 | + +------------------------+------------+----------+----------+ + | body row 2 | ... | ... | | + +------------------------+------------+----------+----------+ + +*Simple tables* (:duref:`ref <simple-tables>`) are easier to write, but +limited: they must contain more than one row, and the first column cells cannot +contain multiple lines. They look like this:: + + ===== ===== ======= + A B A and B + ===== ===== ======= + False False False + True False False + False True False + True True True + ===== ===== ======= + +Two more syntaxes are supported: *CSV tables* and *List tables*. They use an +*explicit markup block*. Refer to :ref:`table-directives` for more information. + + +Hyperlinks +---------- + +External links +~~~~~~~~~~~~~~ + +Use ```Link text <https://domain.invalid/>`_`` for inline web links. If the +link text should be the web address, you don't need special markup at all, the +parser finds links and mail addresses in ordinary text. + +.. important:: There must be a space between the link text and the opening \< for the URL. + +You can also separate the link and the target definition (:duref:`ref +<hyperlink-targets>`), like this:: + + This is a paragraph that contains `a link`_. + + .. _a link: https://domain.invalid/ + +Internal links +~~~~~~~~~~~~~~ + +Internal linking is done via a special reST role provided by Sphinx, see the +section on specific markup, :ref:`ref-role`. + + +Sections +-------- + +Section headers (:duref:`ref <sections>`) are created by underlining (and +optionally overlining) the section title with a punctuation character, at least +as long as the text:: + + ================= + This is a heading + ================= + +Normally, there are no heading levels assigned to certain characters as the +structure is determined from the succession of headings. However, this +convention is used in `Python's Style Guide for documenting +<https://docs.python.org/devguide/documenting.html#style-guide>`_ which you may +follow: + +* ``#`` with overline, for parts +* ``*`` with overline, for chapters +* ``=``, for sections +* ``-``, for subsections +* ``^``, for subsubsections +* ``"``, for paragraphs + +Of course, you are free to use your own marker characters (see the reST +documentation), and use a deeper nesting level, but keep in mind that most +target formats (HTML, LaTeX) have a limited supported nesting depth. + + +.. _rst-field-lists: + +Field Lists +----------- + +Field lists (:duref:`ref <field-lists>`) are sequences of fields marked up like +this:: + + :fieldname: Field content + +They are commonly used in Python documentation:: + + 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). + """ + +Sphinx extends standard docutils behavior and intercepts field lists specified +at the beginning of documents. Refer to :doc:`field-lists` for more +information. + + +.. TODO This ref should be 'rst-roles', but that already exists. Rename the +.. other ones + +.. _rst-roles-alt: + +Roles +----- + +A role or "custom interpreted text role" (:duref:`ref <roles>`) is an inline +piece of explicit markup. It signifies that that the enclosed text should be +interpreted in a specific way. Sphinx uses this to provide semantic markup and +cross-referencing of identifiers, as described in the appropriate section. 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 :doc:`roles` for roles added by Sphinx. + + +Explicit Markup +--------------- + +"Explicit markup" (:duref:`ref <explicit-markup-blocks>`) is used in reST for +most constructs that need special handling, such as footnotes, +specially-highlighted paragraphs, comments, and generic directives. + +An explicit markup block begins with a line starting with ``..`` followed by +whitespace and is terminated by the next paragraph at the same level of +indentation. (There needs to be a blank line between explicit markup and +normal paragraphs. This may all sound a bit complicated, but it is intuitive +enough when you write it.) + + +.. _rst-directives: + +Directives +---------- + +A directive (:duref:`ref <directives>`) is a generic block of explicit markup. +Along with roles, it is one of the extension mechanisms of reST, and Sphinx +makes heavy use of it. + +Docutils supports the following directives: + +* Admonitions: :dudir:`attention`, :dudir:`caution`, :dudir:`danger`, + :dudir:`error`, :dudir:`hint`, :dudir:`important`, :dudir:`note`, + :dudir:`tip`, :dudir:`warning` and the generic + :dudir:`admonition <admonitions>`. (Most themes style only "note" and + "warning" specially.) + +* Images: + + - :dudir:`image` (see also Images_ below) + - :dudir:`figure` (an image with caption and optional legend) + +* Additional body elements: + + - :dudir:`contents <table-of-contents>` (a local, i.e. for the current file + only, table of contents) + - :dudir:`container` (a container with a custom class, useful to generate an + outer ``<div>`` in HTML) + - :dudir:`rubric` (a heading without relation to the document sectioning) + - :dudir:`topic`, :dudir:`sidebar` (special highlighted body elements) + - :dudir:`parsed-literal` (literal block that supports inline markup) + - :dudir:`epigraph` (a block quote with optional attribution line) + - :dudir:`highlights`, :dudir:`pull-quote` (block quotes with their own + class attribute) + - :dudir:`compound <compound-paragraph>` (a compound paragraph) + +* Special tables: + + - :dudir:`table` (a table with title) + - :dudir:`csv-table` (a table generated from comma-separated values) + - :dudir:`list-table` (a table generated from a list of lists) + +* Special directives: + + - :dudir:`raw <raw-data-pass-through>` (include raw target-format markup) + - :dudir:`include` (include reStructuredText from another file) -- in Sphinx, + when given an absolute include file path, this directive takes it as + relative to the source directory + - :dudir:`class` (assign a class attribute to the next element) [1]_ + +* HTML specifics: + + - :dudir:`meta` + (generation of HTML ``<meta>`` tags, see also :ref:`html-meta` below) + - :dudir:`title <metadata-document-title>` (override document title) + +* Influencing markup: + + - :dudir:`default-role` (set a new default role) + - :dudir:`role` (create a new role) + + Since these are only per-file, better use Sphinx's facilities for setting the + :confval:`default_role`. + +.. warning:: + + Do *not* use the directives :dudir:`sectnum`, :dudir:`header` and + :dudir:`footer`. + +Directives added by Sphinx are described in :doc:`directives`. + +Basically, a directive consists of a name, arguments, options and content. +(Keep this terminology in mind, it is used in the next chapter describing +custom directives.) Looking at this example, :: + + .. function:: foo(x) + foo(y, z) + :module: some.module.name + + Return a line of text input from the user. + +``function`` is the directive name. It is given two arguments here, the +remainder of the first line and the second line, as well as one option +``module`` (as you can see, options are given in the lines immediately +following the arguments and indicated by the colons). Options must be indented +to the same level as the directive content. + +The directive content follows after a blank line and is indented relative to +the directive start. + + +Images +------ + +reST supports an image directive (:dudir:`ref <image>`), used like so:: + + .. image:: gnu.png + (options) + +When used within Sphinx, the file name given (here ``gnu.png``) must either be +relative to the source file, or absolute which means that they are relative to +the top source directory. For example, the file ``sketch/spam.rst`` could +refer to the image ``images/spam.png`` as ``../images/spam.png`` or +``/images/spam.png``. + +Sphinx will automatically copy image files over to a subdirectory of the output +directory on building (e.g. the ``_static`` directory for HTML output.) + +Interpretation of image size options (``width`` and ``height``) is as follows: +if the size has no unit or the unit is pixels, the given size will only be +respected for output channels that support pixels. Other units (like ``pt`` for +points) will be used for HTML and LaTeX output (the latter replaces ``pt`` by +``bp`` as this is the TeX unit such that ``72bp=1in``). + +Sphinx extends the standard docutils behavior by allowing an asterisk for the +extension:: + + .. image:: gnu.* + +Sphinx then searches for all images matching the provided pattern and +determines their type. Each builder then chooses the best image out of these +candidates. For instance, if the file name ``gnu.*`` was given and two files +:file:`gnu.pdf` and :file:`gnu.png` existed in the source tree, the LaTeX +builder would choose the former, while the HTML builder would prefer the +latter. Supported image types and choosing priority are defined at +:doc:`/usage/builders/index`. + +Note that image file names should not contain spaces. + +.. versionchanged:: 0.4 + Added the support for file names ending in an asterisk. + +.. versionchanged:: 0.6 + Image paths can now be absolute. + +.. versionchanged:: 1.5 + latex target supports pixels (default is ``96px=1in``). + + +Footnotes +--------- + +For footnotes (:duref:`ref <footnotes>`), use ``[#name]_`` to mark the footnote +location, and add the footnote body at the bottom of the document after a +"Footnotes" rubric heading, like so:: + + Lorem ipsum [#f1]_ dolor sit amet ... [#f2]_ + + .. rubric:: Footnotes + + .. [#f1] Text of the first footnote. + .. [#f2] Text of the second footnote. + +You can also explicitly number the footnotes (``[1]_``) or use auto-numbered +footnotes without names (``[#]_``). + + +Citations +--------- + +Standard reST citations (:duref:`ref <citations>`) are supported, with the +additional feature that they are "global", i.e. all citations can be referenced +from all files. Use them like so:: + + Lorem ipsum [Ref]_ dolor sit amet. + + .. [Ref] Book or article reference, URL or whatever. + +Citation usage is similar to footnote usage, but with a label that is not +numeric or begins with ``#``. + + +Substitutions +------------- + +reST supports "substitutions" (:duref:`ref <substitution-definitions>`), which +are pieces of text and/or markup referred to in the text by ``|name|``. They +are defined like footnotes with explicit markup blocks, like this:: + + .. |name| replace:: replacement *text* + +or this:: + + .. |caution| image:: warning.png + :alt: Warning! + +See the :duref:`reST reference for substitutions <substitution-definitions>` +for details. + +.. index:: ! pair: global; substitutions + +If you want to use some substitutions for all documents, put them into +:confval:`rst_prolog` or :confval:`rst_epilog` or put them into a separate file +and include it into all documents you want to use them in, using the +:rst:dir:`include` directive. (Be sure to give the include file a file name +extension differing from that of other source files, to avoid Sphinx finding it +as a standalone document.) + +Sphinx defines some default substitutions, see :ref:`default-substitutions`. + + +Comments +-------- + +Every explicit markup block which isn't a valid markup construct (like the +footnotes above) is regarded as a comment (:duref:`ref <comments>`). For +example:: + + .. This is a comment. + +You can indent text after a comment start to form multiline comments:: + + .. + This whole indented block + is a comment. + + Still in the comment. + + +.. _html-meta: + +HTML Metadata +------------- + +The :rst:dir:`meta` directive (:dudir:`ref <meta>`) allows specifying the HTML +`metadata element`_ of a Sphinx documentation page. For example, the +directive:: + + .. meta:: + :description: The Sphinx documentation builder + :keywords: Sphinx, documentation, builder + +will generate the following HTML output: + +.. code:: html + + <meta name="description" content="The Sphinx documentation builder"> + <meta name="keywords" content="Sphinx, documentation, builder"> + +Also, Sphinx will add the keywords as specified in the meta directive to the +search index. Thereby, the ``lang`` attribute of the meta element is +considered. For example, the directive:: + + .. meta:: + :keywords: backup + :keywords lang=en: pleasefindthiskey pleasefindthiskeytoo + :keywords lang=de: bittediesenkeyfinden + +adds the following words to the search indices of builds with different language +configurations: + +* ``pleasefindthiskey``, ``pleasefindthiskeytoo`` to *English* builds; +* ``bittediesenkeyfinden`` to *German* builds; +* ``backup`` to builds in all languages. + +.. _metadata element: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta + + +Source encoding +--------------- + +Since the easiest way to include special characters like em dashes or copyright +signs in reST is to directly write them as Unicode characters, one has to +specify an encoding. Sphinx assumes source files to be encoded in UTF-8 by +default; you can change this with the :confval:`source_encoding` config value. + + +Gotchas +------- + +There are some problems one commonly runs into while authoring reST documents: + +* **Separation of inline markup:** As said above, inline markup spans must be + separated from the surrounding text by non-word characters, you have to use a + backslash-escaped space to get around that. See :duref:`the reference + <substitution-definitions>` for the details. + +* **No nested inline markup:** Something like ``*see :func:`foo`*`` is not + possible. + + +.. rubric:: Footnotes + +.. [1] When the default domain contains a :rst:dir:`class` directive, this + directive will be shadowed. Therefore, Sphinx re-exports it as + :rst:dir:`rst-class`. diff --git a/sphinx/doc/usage/restructuredtext/directives.rst b/sphinx/doc/usage/restructuredtext/directives.rst new file mode 100644 index 0000000..7b9bd2f --- /dev/null +++ b/sphinx/doc/usage/restructuredtext/directives.rst @@ -0,0 +1,1221 @@ +.. highlight:: rst + +========== +Directives +========== + +:ref:`As previously discussed <rst-directives>`, a directive is a generic block +of explicit markup. While Docutils provides a number of directives, Sphinx +provides many more and uses directives as one of the primary extension +mechanisms. + +See :doc:`/usage/restructuredtext/domains` for roles added by domains. + +.. seealso:: + + Refer to the :ref:`reStructuredText Primer <rst-directives>` for an overview + of the directives provided by Docutils. + + +.. _toctree-directive: + +Table of contents +----------------- + +.. index:: pair: table of; contents + +Since reST does not have facilities to interconnect several documents, or split +documents into multiple output files, Sphinx uses a custom directive to add +relations between the single files the documentation is made of, as well as +tables of contents. The ``toctree`` directive is the central element. + +.. note:: + + Simple "inclusion" of one file in another can be done with the + :dudir:`include` directive. + +.. note:: + + To create table of contents for current document (.rst file), use the + standard reST :dudir:`contents directive <table-of-contents>`. + +.. rst:directive:: toctree + + This directive inserts a "TOC tree" at the current location, using the + individual TOCs (including "sub-TOC trees") of the documents given in the + directive body. Relative document names (not beginning with a slash) are + relative to the document the directive occurs in, absolute names are relative + to the source directory. A numeric ``maxdepth`` option may be given to + indicate the depth of the tree; by default, all levels are included. [#]_ + + The representation of "TOC tree" is changed in each output format. The + builders that output multiple files (ex. HTML) treat it as a collection of + hyperlinks. On the other hand, the builders that output a single file (ex. + LaTeX, man page, etc.) replace it with the content of the documents on the + TOC tree. + + Consider this example (taken from the Python docs' library reference index):: + + .. toctree:: + :maxdepth: 2 + + intro + strings + datatypes + numeric + (many more documents listed here) + + This accomplishes two things: + + * Tables of contents from all those documents are inserted, with a maximum + depth of two, that means one nested heading. ``toctree`` directives in + those documents are also taken into account. + * Sphinx knows the relative order of the documents ``intro``, + ``strings`` and so forth, and it knows that they are children of the shown + document, the library index. From this information it generates "next + chapter", "previous chapter" and "parent chapter" links. + + **Entries** + + Document titles in the :rst:dir:`toctree` will be automatically read from the + title of the referenced document. If that isn't what you want, you can + specify an explicit title and target using a similar syntax to reST + hyperlinks (and Sphinx's :ref:`cross-referencing syntax <xref-syntax>`). This + looks like:: + + .. toctree:: + + intro + All about strings <strings> + datatypes + + The second line above will link to the ``strings`` document, but will use the + title "All about strings" instead of the title of the ``strings`` document. + + You can also add external links, by giving an HTTP URL instead of a document + name. + + **Section numbering** + + If you want to have section numbers even in HTML output, give the + **toplevel** toctree a ``numbered`` option. For example:: + + .. toctree:: + :numbered: + + foo + bar + + Numbering then starts at the heading of ``foo``. Sub-toctrees are + automatically numbered (don't give the ``numbered`` flag to those). + + Numbering up to a specific depth is also possible, by giving the depth as a + numeric argument to ``numbered``. + + **Additional options** + + You can use ``caption`` option to provide a toctree caption and you can use + ``name`` option to provide implicit target name that can be referenced by + using :rst:role:`ref`:: + + .. toctree:: + :caption: Table of Contents + :name: mastertoc + + foo + + If you want only the titles of documents in the tree to show up, not other + headings of the same level, you can use the ``titlesonly`` option:: + + .. toctree:: + :titlesonly: + + foo + bar + + You can use "globbing" in toctree directives, by giving the ``glob`` flag + option. All entries are then matched against the list of available + documents, and matches are inserted into the list alphabetically. Example:: + + .. toctree:: + :glob: + + intro* + recipe/* + * + + This includes first all documents whose names start with ``intro``, then all + documents in the ``recipe`` folder, then all remaining documents (except the + one containing the directive, of course.) [#]_ + + The special entry name ``self`` stands for the document containing the + toctree directive. This is useful if you want to generate a "sitemap" from + the toctree. + + You can use the ``reversed`` flag option to reverse the order of the entries + in the list. This can be useful when using the ``glob`` flag option to + reverse the ordering of the files. Example:: + + .. toctree:: + :glob: + :reversed: + + recipe/* + + You can also give a "hidden" option to the directive, like this:: + + .. toctree:: + :hidden: + + doc_1 + doc_2 + + This will still notify Sphinx of the document hierarchy, but not insert links + into the document at the location of the directive -- this makes sense if you + intend to insert these links yourself, in a different style, or in the HTML + sidebar. + + In cases where you want to have only one top-level toctree and hide all other + lower level toctrees you can add the "includehidden" option to the top-level + toctree entry:: + + .. toctree:: + :includehidden: + + doc_1 + doc_2 + + All other toctree entries can then be eliminated by the "hidden" option. + + In the end, all documents in the :term:`source directory` (or subdirectories) + must occur in some ``toctree`` directive; Sphinx will emit a warning if it + finds a file that is not included, because that means that this file will not + be reachable through standard navigation. + + Use :confval:`exclude_patterns` to explicitly exclude documents or + directories from building completely. Use :ref:`the "orphan" metadata + <metadata>` to let a document be built, but notify Sphinx that it is not + reachable via a toctree. + + The "master document" (selected by :confval:`master_doc`) is the "root" of + the TOC tree hierarchy. It can be used as the documentation's main page, or + as a "full table of contents" if you don't give a ``maxdepth`` option. + + .. versionchanged:: 0.3 + Added "globbing" option. + + .. versionchanged:: 0.6 + Added "numbered" and "hidden" options as well as external links and + support for "self" references. + + .. versionchanged:: 1.0 + Added "titlesonly" option. + + .. versionchanged:: 1.1 + Added numeric argument to "numbered". + + .. versionchanged:: 1.2 + Added "includehidden" option. + + .. versionchanged:: 1.3 + Added "caption" and "name" option. + +Special names +^^^^^^^^^^^^^ + +Sphinx reserves some document names for its own use; you should not try to +create documents with these names -- it will cause problems. + +The special document names (and pages generated for them) are: + +* ``genindex``, ``modindex``, ``search`` + + These are used for the general index, the Python module index, and the search + page, respectively. + + The general index is populated with entries from modules, all + index-generating :ref:`object descriptions <basic-domain-markup>`, and from + :rst:dir:`index` directives. + + The Python module index contains one entry per :rst:dir:`py:module` + directive. + + The search page contains a form that uses the generated JSON search index and + JavaScript to full-text search the generated documents for search words; it + should work on every major browser that supports modern JavaScript. + +* every name beginning with ``_`` + + Though only few such names are currently used by Sphinx, you should not + create documents or document-containing directories with such names. (Using + ``_`` as a prefix for a custom template directory is fine.) + +.. warning:: + + Be careful with unusual characters in filenames. Some formats may interpret + these characters in unexpected ways: + + * Do not use the colon ``:`` for HTML based formats. Links to other parts + may not work. + + * Do not use the plus ``+`` for the ePub format. Some resources may not be + found. + + +Paragraph-level markup +---------------------- + +.. index:: note, warning + pair: changes; in version + +These directives create short paragraphs and can be used inside information +units as well as normal text. + +.. rst:directive:: .. note:: + + An especially important bit of information about an API that a user should be + aware of when using whatever bit of API the note pertains to. The content of + the directive should be written in complete sentences and include all + appropriate punctuation. + + Example:: + + .. note:: + + This function is not suitable for sending spam e-mails. + +.. rst:directive:: .. warning:: + + An important bit of information about an API that a user should be very aware + of when using whatever bit of API the warning pertains to. The content of + the directive should be written in complete sentences and include all + appropriate punctuation. This differs from :rst:dir:`note` in that it is + recommended over :rst:dir:`note` for information regarding security. + +.. rst:directive:: .. versionadded:: version + + This directive documents the version of the project which added the described + feature to the library or C API. When this applies to an entire module, it + should be placed at the top of the module section before any prose. + + The first argument must be given and is the version in question; you can add + a second argument consisting of a *brief* explanation of the change. + + Example:: + + .. versionadded:: 2.5 + The *spam* parameter. + + Note that there must be no blank line between the directive head and the + explanation; this is to make these blocks visually continuous in the markup. + +.. rst:directive:: .. versionchanged:: version + + Similar to :rst:dir:`versionadded`, but describes when and what changed in + the named feature in some way (new parameters, changed side effects, etc.). + +.. rst:directive:: .. deprecated:: version + + Similar to :rst:dir:`versionchanged`, but describes when the feature was + deprecated. An explanation can also be given, for example to inform the + reader what should be used instead. Example:: + + .. deprecated:: 3.1 + Use :func:`spam` instead. + +.. rst:directive:: seealso + + Many sections include a list of references to module documentation or + external documents. These lists are created using the :rst:dir:`seealso` + directive. + + The :rst:dir:`seealso` directive is typically placed in a section just before + any subsections. For the HTML output, it is shown boxed off from the main + flow of the text. + + The content of the :rst:dir:`seealso` directive should be a reST definition + list. Example:: + + .. seealso:: + + Module :py:mod:`zipfile` + Documentation of the :py:mod:`zipfile` standard module. + + `GNU tar manual, Basic Tar Format <http://link>`_ + Documentation for tar archive files, including GNU tar extensions. + + There's also a "short form" allowed that looks like this:: + + .. seealso:: modules :py:mod:`zipfile`, :py:mod:`tarfile` + + .. versionadded:: 0.5 + The short form. + +.. rst:directive:: .. rubric:: title + + This directive creates a paragraph heading that is not used to create a + table of contents node. + + .. note:: + + If the *title* of the rubric is "Footnotes" (or the selected language's + equivalent), this rubric is ignored by the LaTeX writer, since it is + assumed to only contain footnote definitions and therefore would create an + empty heading. + +.. rst:directive:: centered + + This directive creates a centered boldfaced line of text. Use it as + follows:: + + .. centered:: LICENSE AGREEMENT + + .. deprecated:: 1.1 + This presentation-only directive is a legacy from older versions. Use a + :rst:dir:`rst-class` directive instead and add an appropriate style. + +.. rst:directive:: hlist + + This directive must contain a bullet list. It will transform it into a more + compact list by either distributing more than one item horizontally, or + reducing spacing between items, depending on the builder. + + For builders that support the horizontal distribution, there is a ``columns`` + option that specifies the number of columns; it defaults to 2. Example:: + + .. hlist:: + :columns: 3 + + * A list of + * short items + * that should be + * displayed + * horizontally + + .. versionadded:: 0.6 + + +.. _code-examples: + +Showing code examples +--------------------- + +.. index:: pair: code; examples + single: sourcecode + +There are multiple ways to show syntax-highlighted literal code blocks in +Sphinx: using :ref:`reST doctest blocks <rst-doctest-blocks>`; using :ref:`reST +literal blocks <rst-literal-blocks>`, optionally in combination with the +:rst:dir:`highlight` directive; using the :rst:dir:`code-block` directive; and +using the :rst:dir:`literalinclude` directive. Doctest blocks can only be used +to show interactive Python sessions, while the remaining three can be used for +other languages. Of these three, literal blocks are useful when an entire +document, or at least large sections of it, use code blocks with the same +syntax and which should be styled in the same manner. On the other hand, the +:rst:dir:`code-block` directive makes more sense when you want more fine-tuned +control over the styling of each block or when you have a document containing +code blocks using multiple varied syntaxes. Finally, the +:rst:dir:`literalinclude` directive is useful for including entire code files +in your documentation. + +In all cases, Syntax highlighting is provided by `Pygments +<http://pygments.org>`_. When using literal blocks, this is configured using +any :rst:dir:`highlight` directives in the source file. When a ``highlight`` +directive is encountered, it is used until the next ``highlight`` directive is +encountered. If there is no ``highlight`` directive in the file, the global +highlighting language is used. This defaults to ``python`` but can be +configured using the :confval:`highlight_language` config value. The following +values are supported: + +* ``none`` (no highlighting) +* ``default`` (similar to ``python3`` but with a fallback to ``none`` without + warning highlighting fails; the default when :confval:`highlight_language` + isn't set) +* ``guess`` (let Pygments guess the lexer based on contents, only works with + certain well-recognizable languages) +* ``python`` +* ``rest`` +* ``c`` +* ... and any other `lexer alias that Pygments supports`__ + +If highlighting with the selected language fails (i.e. Pygments emits an +"Error" token), the block is not highlighted in any way. + +.. important:: + + The list of lexer aliases supported is tied to the Pygment version. If you + want to ensure consistent highlighting, you should fix your version of + Pygments. + +__ http://pygments.org/docs/lexers + +.. rst:directive:: .. highlight:: language + + Example:: + + .. highlight:: c + + This language is used until the next ``highlight`` directive is encountered. + As discussed previously, *language* can be any lexer alias supported by + Pygments. + + .. rubric:: options + + .. rst:directive:option:: linenothreshold: threshold + :type: number (optional) + + Enable to generate line numbers for code blocks. + + This option takes an optional number as threshold parameter. If any + threshold given, the directive will produce line numbers only for the code + blocks longer than N lines. If not given, line numbers will be produced + for all of code blocks. + + Example:: + + .. highlight:: python + :linenothreshold: 5 + + .. rst:directive:option:: force + :type: no value + + If given, minor errors on highlighting are ignored. + + .. versionadded:: 2.1 + +.. rst:directive:: .. code-block:: [language] + + Example:: + + .. code-block:: ruby + + Some Ruby code. + + The directive's alias name :rst:dir:`sourcecode` works as well. This + directive takes a language name as an argument. It can be any lexer alias + supported by Pygments. If it is not given, the setting of + :rst:dir:`highlight` directive will be used. If not set, + :confval:`highlight_language` will be used. + + .. versionchanged:: 2.0 + The ``language`` argument becomes optional. + + .. rubric:: options + + .. rst:directive:option:: linenos + :type: no value + + Enable to generate line numbers for the code block:: + + .. code-block:: ruby + :linenos: + + Some more Ruby code. + + .. rst:directive:option:: lineno-start: number + :type: number + + Set the first line number of the code block. If present, ``linenos`` + option is also automatically activated:: + + .. code-block:: ruby + :lineno-start: 10 + + Some more Ruby code, with line numbering starting at 10. + + .. versionadded:: 1.3 + + .. rst:directive:option:: emphasize-lines: line numbers + :type: comma separated numbers + + Emphasize particular lines of the code block:: + + .. code-block:: python + :emphasize-lines: 3,5 + + def some_function(): + interesting = False + print 'This line is highlighted.' + print 'This one is not...' + print '...but this one is.' + + .. versionadded:: 1.1 + .. versionchanged:: 1.6.6 + LaTeX supports the ``emphasize-lines`` option. + + .. rst:directive:option: force + :type: no value + + Ignore minor errors on highlighting + + .. versionchanged:: 2.1 + + .. rst:directive:option:: caption: caption of code block + :type: text + + Set a caption to the code block. + + .. versionadded:: 1.3 + + .. rst:directive:option:: name: a label for hyperlink + :type: text + + Define implicit target name that can be referenced by using + :rst:role:`ref`. For example:: + + .. code-block:: python + :caption: this.py + :name: this-py + + print 'Explicit is better than implicit.' + + .. versionadded:: 1.3 + + .. rst:directive:option:: dedent: number + :type: number + + Strip indentation characters from the code block. For example:: + + .. code-block:: ruby + :dedent: 4 + + some ruby code + + .. versionadded:: 1.3 + + .. rst:directive:option:: force + :type: no value + + If given, minor errors on highlighting are ignored. + + .. versionadded:: 2.1 + +.. rst:directive:: .. literalinclude:: filename + + Longer displays of verbatim text may be included by storing the example text + in an external file containing only plain text. The file may be included + using the ``literalinclude`` directive. [#]_ For example, to include the + Python source file :file:`example.py`, use:: + + .. literalinclude:: example.py + + The file name is usually relative to the current file's path. However, if + it is absolute (starting with ``/``), it is relative to the top source + directory. + + **Additional options** + + Like :rst:dir:`code-block`, the directive supports the ``linenos`` flag + option to switch on line numbers, the ``lineno-start`` option to select the + first line number, the ``emphasize-lines`` option to emphasize particular + lines, the ``name`` option to provide an implicit target name, the + ``dedent`` option to strip indentation characters for the code block, and a + ``language`` option to select a language different from the current file's + standard language. In addition, it supports the ``caption`` option; however, + this can be provided with no argument to use the filename as the caption. + Example with options:: + + .. literalinclude:: example.rb + :language: ruby + :emphasize-lines: 12,15-18 + :linenos: + + Tabs in the input are expanded if you give a ``tab-width`` option with the + desired tab width. + + Include files are assumed to be encoded in the :confval:`source_encoding`. + If the file has a different encoding, you can specify it with the + ``encoding`` option:: + + .. literalinclude:: example.py + :encoding: latin-1 + + The directive also supports including only parts of the file. If it is a + Python module, you can select a class, function or method to include using + the ``pyobject`` option:: + + .. literalinclude:: example.py + :pyobject: Timer.start + + This would only include the code lines belonging to the ``start()`` method + in the ``Timer`` class within the file. + + Alternately, you can specify exactly which lines to include by giving a + ``lines`` option:: + + .. literalinclude:: example.py + :lines: 1,3,5-10,20- + + This includes the lines 1, 3, 5 to 10 and lines 20 to the last line. + + Another way to control which part of the file is included is to use the + ``start-after`` and ``end-before`` options (or only one of them). If + ``start-after`` is given as a string option, only lines that follow the + first line containing that string are included. If ``end-before`` is given + as a string option, only lines that precede the first lines containing that + string are included. The ``start-at`` and ``end-at`` options behave in a + similar way, but the lines containing the matched string are included. + + With lines selected using ``start-after`` it is still possible to use + ``lines``, the first allowed line having by convention the line number + ``1``. + + When lines have been selected in any of the ways described above, the line + numbers in ``emphasize-lines`` refer to those selected lines, counted + consecutively starting at ``1``. + + When specifying particular parts of a file to display, it can be useful to + display the original line numbers. This can be done using the + ``lineno-match`` option, which is however allowed only when the selection + consists of contiguous lines. + + You can prepend and/or append a line to the included code, using the + ``prepend`` and ``append`` option, respectively. This is useful e.g. for + highlighting PHP code that doesn't include the ``<?php``/``?>`` markers. + + If you want to show the diff of the code, you can specify the old file by + giving a ``diff`` option:: + + .. literalinclude:: example.py + :diff: example.py.orig + + This shows the diff between ``example.py`` and ``example.py.orig`` with + unified diff format. + + A ``force`` option can ignore minor errors on highlighting. + + .. versionchanged:: 0.4.3 + Added the ``encoding`` option. + + .. versionchanged:: 0.6 + Added the ``pyobject``, ``lines``, ``start-after`` and ``end-before`` + options, as well as support for absolute filenames. + + .. versionchanged:: 1.0 + Added the ``prepend``, ``append``, and ``tab-width`` options. + + .. versionchanged:: 1.3 + Added the ``diff``, ``lineno-match``, ``caption``, ``name``, and + ``dedent`` options. + + .. versionchanged:: 1.5 + Added the ``start-at``, and ``end-at`` options. + + .. versionchanged:: 1.6 + With both ``start-after`` and ``lines`` in use, the first line as per + ``start-after`` is considered to be with line number ``1`` for ``lines``. + + .. versionchanged:: 2.1 + Added the ``force`` option. + +.. _glossary-directive: + +Glossary +-------- + +.. rst:directive:: .. glossary:: + + This directive must contain a reST definition-list-like markup with terms and + definitions. The definitions will then be referenceable with the + :rst:role:`term` role. Example:: + + .. glossary:: + + environment + A structure where information about all documents under the root is + saved, and used for cross-referencing. The environment is pickled + after the parsing stage, so that successive runs only need to read + and parse new and changed documents. + + source directory + The directory which, including its subdirectories, contains all + source files for one Sphinx project. + + In contrast to regular definition lists, *multiple* terms per entry are + allowed, and inline markup is allowed in terms. You can link to all of the + terms. For example:: + + .. glossary:: + + term 1 + term 2 + Definition of both terms. + + (When the glossary is sorted, the first term determines the sort order.) + + If you want to specify "grouping key" for general index entries, you can put + a "key" as "term : key". For example:: + + .. glossary:: + + term 1 : A + term 2 : B + Definition of both terms. + + Note that "key" is used for grouping key as is. + The "key" isn't normalized; key "A" and "a" become different groups. + The whole characters in "key" is used instead of a first character; it is + used for "Combining Character Sequence" and "Surrogate Pairs" grouping key. + + In i18n situation, you can specify "localized term : key" even if original + text only have "term" part. In this case, translated "localized term" will be + categorized in "key" group. + + .. versionadded:: 0.6 + You can now give the glossary directive a ``:sorted:`` flag that will + automatically sort the entries alphabetically. + + .. versionchanged:: 1.1 + Now supports multiple terms and inline markup in terms. + + .. versionchanged:: 1.4 + Index key for glossary term should be considered *experimental*. + + +Meta-information markup +----------------------- + +.. rst:directive:: .. sectionauthor:: name <email> + + Identifies the author of the current section. The argument should include + the author's name such that it can be used for presentation and email + address. The domain name portion of the address should be lower case. + Example:: + + .. sectionauthor:: Guido van Rossum <guido@python.org> + + By default, this markup isn't reflected in the output in any way (it helps + keep track of contributions), but you can set the configuration value + :confval:`show_authors` to ``True`` to make them produce a paragraph in the + output. + + +.. rst:directive:: .. codeauthor:: name <email> + + The :rst:dir:`codeauthor` directive, which can appear multiple times, names + the authors of the described code, just like :rst:dir:`sectionauthor` names + the author(s) of a piece of documentation. It too only produces output if + the :confval:`show_authors` configuration value is ``True``. + + +Index-generating markup +----------------------- + +Sphinx automatically creates index entries from all object descriptions (like +functions, classes or attributes) like discussed in +:doc:`/usage/restructuredtext/domains`. + +However, there is also explicit markup available, to make the index more +comprehensive and enable index entries in documents where information is not +mainly contained in information units, such as the language reference. + +.. rst:directive:: .. index:: <entries> + + This directive contains one or more index entries. Each entry consists of a + type and a value, separated by a colon. + + For example:: + + .. index:: + single: execution; context + module: __main__ + module: sys + triple: module; search; path + + The execution context + --------------------- + + ... + + This directive contains five entries, which will be converted to entries in + the generated index which link to the exact location of the index statement + (or, in case of offline media, the corresponding page number). + + Since index directives generate cross-reference targets at their location in + the source, it makes sense to put them *before* the thing they refer to -- + e.g. a heading, as in the example above. + + The possible entry types are: + + single + Creates a single index entry. Can be made a subentry by separating the + subentry text with a semicolon (this notation is also used below to + describe what entries are created). + pair + ``pair: loop; statement`` is a shortcut that creates two index entries, + namely ``loop; statement`` and ``statement; loop``. + triple + Likewise, ``triple: module; search; path`` is a shortcut that creates + three index entries, which are ``module; search path``, ``search; path, + module`` and ``path; module search``. + see + ``see: entry; other`` creates an index entry that refers from ``entry`` to + ``other``. + seealso + Like ``see``, but inserts "see also" instead of "see". + module, keyword, operator, object, exception, statement, builtin + These all create two index entries. For example, ``module: hashlib`` + creates the entries ``module; hashlib`` and ``hashlib; module``. (These + are Python-specific and therefore deprecated.) + + You can mark up "main" index entries by prefixing them with an exclamation + mark. The references to "main" entries are emphasized in the generated + index. For example, if two pages contain :: + + .. index:: Python + + and one page contains :: + + .. index:: ! Python + + then the backlink to the latter page is emphasized among the three backlinks. + + For index directives containing only "single" entries, there is a shorthand + notation:: + + .. index:: BNF, grammar, syntax, notation + + This creates four index entries. + + .. versionchanged:: 1.1 + Added ``see`` and ``seealso`` types, as well as marking main entries. + + .. rubric:: options + + .. rst:directive:option:: name: a label for hyperlink + :type: text + + Define implicit target name that can be referenced by using + :rst:role:`ref`. For example:: + + .. index:: Python + :name: py-index + + .. versionadded:: 3.0 + +.. rst:role:: index + + While the :rst:dir:`index` directive is a block-level markup and links to the + beginning of the next paragraph, there is also a corresponding role that sets + the link target directly where it is used. + + The content of the role can be a simple phrase, which is then kept in the + text and used as an index entry. It can also be a combination of text and + index entry, styled like with explicit targets of cross-references. In that + case, the "target" part can be a full entry as described for the directive + above. For example:: + + This is a normal reST :index:`paragraph` that contains several + :index:`index entries <pair: index; entry>`. + + .. versionadded:: 1.1 + + +.. _tags: + +Including content based on tags +------------------------------- + +.. rst:directive:: .. only:: <expression> + + Include the content of the directive only if the *expression* is true. The + expression should consist of tags, like this:: + + .. only:: html and draft + + Undefined tags are false, defined tags (via the ``-t`` command-line option or + within :file:`conf.py`, see :ref:`here <conf-tags>`) are true. Boolean + expressions, also using parentheses (like ``html and (latex or draft)``) are + supported. + + The *format* and the *name* of the current builder (``html``, ``latex`` or + ``text``) are always set as a tag [#]_. To make the distinction between + format and name explicit, they are also added with the prefix ``format_`` and + ``builder_``, e.g. the epub builder defines the tags ``html``, ``epub``, + ``format_html`` and ``builder_epub``. + + These standard tags are set *after* the configuration file is read, so they + are not available there. + + All tags must follow the standard Python identifier syntax as set out in + the `Identifiers and keywords + <https://docs.python.org/3/reference/lexical_analysis.html#identifiers>`_ + documentation. That is, a tag expression may only consist of tags that + conform to the syntax of Python variables. In ASCII, this consists of the + uppercase and lowercase letters ``A`` through ``Z``, the underscore ``_`` + and, except for the first character, the digits ``0`` through ``9``. + + .. versionadded:: 0.6 + .. versionchanged:: 1.2 + Added the name of the builder and the prefixes. + + .. warning:: + + This directive is designed to control only content of document. It could + not control sections, labels and so on. + +.. _table-directives: + +Tables +------ + +Use :ref:`reStructuredText tables <rst-tables>`, i.e. either + +- grid table syntax (:duref:`ref <grid-tables>`), +- simple table syntax (:duref:`ref <simple-tables>`), +- :dudir:`csv-table` syntax, +- or :dudir:`list-table` syntax. + +The :dudir:`table` directive serves as optional wrapper of the *grid* and +*simple* syntaxes. + +They work fine in HTML output, however there are some gotchas when using tables +in LaTeX: the column width is hard to determine correctly automatically. For +this reason, the following directive exists: + +.. rst:directive:: .. tabularcolumns:: column spec + + This directive gives a "column spec" for the next table occurring in the + source file. The spec is the second argument to the LaTeX ``tabulary`` + package's environment (which Sphinx uses to translate tables). It can have + values like :: + + |l|l|l| + + which means three left-adjusted, nonbreaking columns. For columns with + longer text that should automatically be broken, use either the standard + ``p{width}`` construct, or tabulary's automatic specifiers: + + +-----+------------------------------------------+ + |``L``| flush left column with automatic width | + +-----+------------------------------------------+ + |``R``| flush right column with automatic width | + +-----+------------------------------------------+ + |``C``| centered column with automatic width | + +-----+------------------------------------------+ + |``J``| justified column with automatic width | + +-----+------------------------------------------+ + + The automatic widths of the ``LRCJ`` columns are attributed by ``tabulary`` + in proportion to the observed shares in a first pass where the table cells + are rendered at their natural "horizontal" widths. + + By default, Sphinx uses a table layout with ``J`` for every column. + + .. versionadded:: 0.3 + + .. versionchanged:: 1.6 + Merged cells may now contain multiple paragraphs and are much better + handled, thanks to custom Sphinx LaTeX macros. This novel situation + motivated the switch to ``J`` specifier and not ``L`` by default. + + .. hint:: + + Sphinx actually uses ``T`` specifier having done ``\newcolumntype{T}{J}``. + To revert to previous default, insert ``\newcolumntype{T}{L}`` in the + LaTeX preamble (see :confval:`latex_elements`). + + A frequent issue with tabulary is that columns with little contents are + "squeezed". The minimal column width is a tabulary parameter called + ``\tymin``. You may set it globally in the LaTeX preamble via + ``\setlength{\tymin}{40pt}`` for example. + + Else, use the :rst:dir:`tabularcolumns` directive with an explicit + ``p{40pt}`` (for example) for that column. You may use also ``l`` + specifier but this makes the task of setting column widths more difficult + if some merged cell intersects that column. + + .. warning:: + + Tables with more than 30 rows are rendered using ``longtable``, not + ``tabulary``, in order to allow pagebreaks. The ``L``, ``R``, ... + specifiers do not work for these tables. + + Tables that contain list-like elements such as object descriptions, + blockquotes or any kind of lists cannot be set out of the box with + ``tabulary``. They are therefore set with the standard LaTeX ``tabular`` + (or ``longtable``) environment if you don't give a ``tabularcolumns`` + directive. If you do, the table will be set with ``tabulary`` but you + must use the ``p{width}`` construct (or Sphinx's ``\X`` and ``\Y`` + specifiers described below) for the columns containing these elements. + + Literal blocks do not work with ``tabulary`` at all, so tables containing + a literal block are always set with ``tabular``. The verbatim environment + used for literal blocks only works in ``p{width}`` (and ``\X`` or ``\Y``) + columns, hence Sphinx generates such column specs for tables containing + literal blocks. + + Since Sphinx 1.5, the ``\X{a}{b}`` specifier is used (there *is* a backslash + in the specifier letter). It is like ``p{width}`` with the width set to a + fraction ``a/b`` of the current line width. You can use it in the + :rst:dir:`tabularcolumns` (it is not a problem if some LaTeX macro is also + called ``\X``.) + + It is *not* needed for ``b`` to be the total number of columns, nor for the + sum of the fractions of the ``\X`` specifiers to add up to one. For example + ``|\X{2}{5}|\X{1}{5}|\X{1}{5}|`` is legitimate and the table will occupy + 80% of the line width, the first of its three columns having the same width + as the sum of the next two. + + This is used by the ``:widths:`` option of the :dudir:`table` directive. + + Since Sphinx 1.6, there is also the ``\Y{f}`` specifier which admits a + decimal argument, such has ``\Y{0.15}``: this would have the same effect as + ``\X{3}{20}``. + + .. versionchanged:: 1.6 + + Merged cells from complex grid tables (either multi-row, multi-column, or + both) now allow blockquotes, lists, literal blocks, ... as do regular + cells. + + Sphinx's merged cells interact well with ``p{width}``, ``\X{a}{b}``, + ``\Y{f}`` and tabulary's columns. + + .. note:: + + :rst:dir:`tabularcolumns` conflicts with ``:widths:`` option of table + directives. If both are specified, ``:widths:`` option will be ignored. + + +Math +---- + +The input language for mathematics is LaTeX markup. This is the de-facto +standard for plain-text math notation and has the added advantage that no +further translation is necessary when building LaTeX output. + +Keep in mind that when you put math markup in **Python docstrings** read by +:mod:`autodoc <sphinx.ext.autodoc>`, you either have to double all backslashes, +or use Python raw strings (``r"raw"``). + +.. rst:directive:: math + + Directive for displayed math (math that takes the whole line for itself). + + The directive supports multiple equations, which should be separated by a + blank line:: + + .. math:: + + (a + b)^2 = a^2 + 2ab + b^2 + + (a - b)^2 = a^2 - 2ab + b^2 + + In addition, each single equation is set within a ``split`` environment, + which means that you can have multiple aligned lines in an equation, + aligned at ``&`` and separated by ``\\``:: + + .. math:: + + (a + b)^2 &= (a + b)(a + b) \\ + &= a^2 + 2ab + b^2 + + For more details, look into the documentation of the `AmSMath LaTeX + package`_. + + When the math is only one line of text, it can also be given as a directive + argument:: + + .. math:: (a + b)^2 = a^2 + 2ab + b^2 + + Normally, equations are not numbered. If you want your equation to get a + number, use the ``label`` option. When given, it selects an internal label + for the equation, by which it can be cross-referenced, and causes an equation + number to be issued. See :rst:role:`eq` for an example. The numbering + style depends on the output format. + + There is also an option ``nowrap`` that prevents any wrapping of the given + math in a math environment. When you give this option, you must make sure + yourself that the math is properly set up. For example:: + + .. math:: + :nowrap: + + \begin{eqnarray} + y & = & ax^2 + bx + c \\ + f(x) & = & x^2 + 2xy + y^2 + \end{eqnarray} + +.. _AmSMath LaTeX package: https://www.ams.org/publications/authors/tex/amslatex + +.. seealso:: + + :ref:`math-support` + Rendering options for math with HTML builders. + + :confval:`latex_engine` + Explains how to configure LaTeX builder to support Unicode literals in + math mark-up. + + +Grammar production displays +--------------------------- + +Special markup is available for displaying the productions of a formal grammar. +The markup is simple and does not attempt to model all aspects of BNF (or any +derived forms), but provides enough to allow context-free grammars to be +displayed in a way that causes uses of a symbol to be rendered as hyperlinks to +the definition of the symbol. There is this directive: + +.. rst:directive:: .. productionlist:: [productionGroup] + + This directive is used to enclose a group of productions. Each production + is given on a single line and consists of a name, separated by a colon from + the following definition. If the definition spans multiple lines, each + continuation line must begin with a colon placed at the same column as in + the first line. + + The *productionGroup* argument to :rst:dir:`productionlist` serves to + distinguish different sets of production lists that belong to different + grammars. Multiple production lists with the same *productionGroup* thus + define rules in the same scope. + + Blank lines are not allowed within ``productionlist`` directive arguments. + + The definition can contain token names which are marked as interpreted text + (e.g. "``sum ::= `integer` "+" `integer```") -- this generates + cross-references to the productions of these tokens. Outside of the + production list, you can reference to token productions using + :rst:role:`token`. + However, if you have given a *productionGroup* argument you must prefix the + token name in the cross-reference with the group name and a colon, + e.g., "``myGroup:sum``" instead of just "``sum``". + If the group should not be shown in the title of the link either + an explicit title can be given (e.g., "``myTitle <myGroup:sum>``"), + or the target can be prefixed with a tilde (e.g., "``~myGroup:sum``"). + + Note that no further reST parsing is done in the production, so that you + don't have to escape ``*`` or ``|`` characters. + +The following is an example taken from the Python Reference Manual:: + + .. productionlist:: + try_stmt: try1_stmt | try2_stmt + try1_stmt: "try" ":" `suite` + : ("except" [`expression` ["," `target`]] ":" `suite`)+ + : ["else" ":" `suite`] + : ["finally" ":" `suite`] + try2_stmt: "try" ":" `suite` + : "finally" ":" `suite` + + +.. rubric:: Footnotes + +.. [#] The LaTeX writer only refers the ``maxdepth`` option of first toctree + directive in the document. + +.. [#] A note on available globbing syntax: you can use the standard shell + constructs ``*``, ``?``, ``[...]`` and ``[!...]`` with the feature that + these all don't match slashes. A double star ``**`` can be used to + match any sequence of characters *including* slashes. + +.. [#] There is a standard ``.. include`` directive, but it raises errors if the + file is not found. This one only emits a warning. + +.. [#] For most builders name and format are the same. At the moment only + builders derived from the html builder distinguish between the builder + format and the builder name. + + Note that the current builder tag is not available in ``conf.py``, it is + only available after the builder is initialized. diff --git a/sphinx/doc/usage/restructuredtext/domains.rst b/sphinx/doc/usage/restructuredtext/domains.rst new file mode 100644 index 0000000..7a89e94 --- /dev/null +++ b/sphinx/doc/usage/restructuredtext/domains.rst @@ -0,0 +1,1757 @@ +.. highlight:: rst + +======= +Domains +======= + +.. versionadded:: 1.0 + +Originally, Sphinx was conceived for a single project, the documentation of the +Python language. Shortly afterwards, it was made available for everyone as a +documentation tool, but the documentation of Python modules remained deeply +built in -- the most fundamental directives, like ``function``, were designed +for Python objects. Since Sphinx has become somewhat popular, interest +developed in using it for many different purposes: C/C++ projects, JavaScript, +or even reStructuredText markup (like in this documentation). + +While this was always possible, it is now much easier to easily support +documentation of projects using different programming languages or even ones +not supported by the main Sphinx distribution, by providing a **domain** for +every such purpose. + +A domain is a collection of markup (reStructuredText :term:`directive`\ s and +:term:`role`\ s) to describe and link to :term:`object`\ s belonging together, +e.g. elements of a programming language. Directive and role names in a domain +have names like ``domain:name``, e.g. ``py:function``. Domains can also +provide custom indices (like the Python Module Index). + +Having domains means that there are no naming problems when one set of +documentation wants to refer to e.g. C++ and Python classes. It also means +that extensions that support the documentation of whole new languages are much +easier to write. + +This section describes what the domains that are included with Sphinx provide. +The domain API is documented as well, in the section :ref:`domain-api`. + + +.. _basic-domain-markup: + +Basic Markup +------------ + +Most domains provide a number of :dfn:`object description directives`, used to +describe specific objects provided by modules. Each directive requires one or +more signatures to provide basic information about what is being described, and +the content should be the description. The basic version makes entries in the +general index; if no index entry is desired, you can give the directive option +flag ``:noindex:``. An example using a Python domain directive:: + + .. py:function:: spam(eggs) + ham(eggs) + + Spam or ham the foo. + +This describes the two Python functions ``spam`` and ``ham``. (Note that when +signatures become too long, you can break them if you add a backslash to lines +that are continued in the next line. Example:: + + .. py:function:: filterwarnings(action, message='', category=Warning, \ + module='', lineno=0, append=False) + :noindex: + +(This example also shows how to use the ``:noindex:`` flag.) + +The domains also provide roles that link back to these object descriptions. +For example, to link to one of the functions described in the example above, +you could say :: + + The function :py:func:`spam` does a similar thing. + +As you can see, both directive and role names contain the domain name and the +directive name. + +.. rubric:: Default Domain + +For documentation describing objects from solely one domain, authors will not +have to state again its name at each directive, role, etc... after +having specified a default. This can be done either via the config +value :confval:`primary_domain` or via this directive: + +.. rst:directive:: .. default-domain:: name + + Select a new default domain. While the :confval:`primary_domain` selects a + global default, this only has an effect within the same file. + +If no other default is selected, the Python domain (named ``py``) is the +default one, mostly for compatibility with documentation written for older +versions of Sphinx. + +Directives and roles that belong to the default domain can be mentioned without +giving the domain name, i.e. :: + + .. function:: pyfunc() + + Describes a Python function. + + Reference to :func:`pyfunc`. + +Cross-referencing syntax +~~~~~~~~~~~~~~~~~~~~~~~~ + +For cross-reference roles provided by domains, the same facilities exist as for +general cross-references. See :ref:`xref-syntax`. + +In short: + +* You may supply an explicit title and reference target: ``:role:`title + <target>``` will refer to *target*, but the link text will be *title*. + +* If you prefix the content with ``!``, no reference/hyperlink will be created. + +* If you prefix the content with ``~``, the link text will only be the last + component of the target. For example, ``:py:meth:`~Queue.Queue.get``` will + refer to ``Queue.Queue.get`` but only display ``get`` as the link text. + + +The Python Domain +----------------- + +The Python domain (name **py**) provides the following directives for module +declarations: + +.. rst:directive:: .. py:module:: name + + This directive marks the beginning of the description of a module (or package + submodule, in which case the name should be fully qualified, including the + package name). It does not create content (like e.g. :rst:dir:`py:class` + does). + + This directive will also cause an entry in the global module index. + + .. rubric:: options + + .. rst:directive:option:: platform: platforms + :type: comma separated list + + Indicate platforms which the module is available (if it is available on + all platforms, the option should be omitted). The keys are short + identifiers; examples that are in use include "IRIX", "Mac", "Windows" + and "Unix". It is important to use a key which has already been used when + applicable. + + .. rst:directive:option:: synopsis: purpose + :type: text + + Consist of one sentence describing the module's purpose -- it is currently + only used in the Global Module Index. + + .. rst:directive:option:: deprecated + :type: no argument + + Mark a module as deprecated; it will be designated as such in various + locations then. + +.. rst:directive:: .. py:currentmodule:: name + + This directive tells Sphinx that the classes, functions etc. documented from + here are in the given module (like :rst:dir:`py:module`), but it will not + create index entries, an entry in the Global Module Index, or a link target + for :rst:role:`py:mod`. This is helpful in situations where documentation + for things in a module is spread over multiple files or sections -- one + location has the :rst:dir:`py:module` directive, the others only + :rst:dir:`py:currentmodule`. + +The following directives are provided for module and class contents: + +.. rst:directive:: .. py:function:: name(parameters) + + Describes a module-level function. The signature should include the + parameters as given in the Python function definition, see :ref:`signatures`. + For example:: + + .. py:function:: Timer.repeat(repeat=3, number=1000000) + + For methods you should use :rst:dir:`py:method`. + + The description normally includes information about the parameters required + and how they are used (especially whether mutable objects passed as + parameters are modified), side effects, and possible exceptions. + + This information can (in any ``py`` directive) optionally be given in a + structured form, see :ref:`info-field-lists`. + + .. rubric:: options + + .. rst:directive:option:: async + :type: no value + + Indicate the function is an async function. + + .. versionadded:: 2.1 + +.. rst:directive:: .. py:data:: name + + Describes global data in a module, including both variables and values used + as "defined constants." Class and object attributes are not documented + using this environment. + + .. rubric:: options + + .. rst:directive:option:: type: type of the variable + :type: text + + .. versionadded:: 2.4 + + .. rst:directive:option:: value: initial value of the variable + :type: text + + .. versionadded:: 2.4 + +.. rst:directive:: .. py:exception:: name + + Describes an exception class. The signature can, but need not include + parentheses with constructor arguments. + +.. rst:directive:: .. py:class:: name + .. py:class:: name(parameters) + + Describes a class. The signature can optionally include parentheses with + parameters which will be shown as the constructor arguments. See also + :ref:`signatures`. + + Methods and attributes belonging to the class should be placed in this + directive's body. If they are placed outside, the supplied name should + contain the class name so that cross-references still work. Example:: + + .. py:class:: Foo + + .. py:method:: quux() + + -- or -- + + .. py:class:: Bar + + .. py:method:: Bar.quux() + + The first way is the preferred one. + +.. rst:directive:: .. py:attribute:: name + + Describes an object data attribute. The description should include + information about the type of the data to be expected and whether it may be + changed directly. + + .. rubric:: options + + .. rst:directive:option:: type: type of the attribute + :type: text + + .. versionadded:: 2.4 + + .. rst:directive:option:: value: initial value of the attribute + :type: text + + .. versionadded:: 2.4 + +.. rst:directive:: .. py:method:: name(parameters) + + Describes an object method. The parameters should not include the ``self`` + parameter. The description should include similar information to that + described for ``function``. See also :ref:`signatures` and + :ref:`info-field-lists`. + + .. rubric:: options + + .. rst:directive:option:: abstractmethod + :type: no value + + Indicate the method is an abstract method. + + .. versionadded:: 2.1 + + .. rst:directive:option:: async + :type: no value + + Indicate the method is an async method. + + .. versionadded:: 2.1 + + .. rst:directive:option:: classmethod + :type: no value + + Indicate the method is a class method. + + .. versionadded:: 2.1 + + .. rst:directive:option:: property + :type: no value + + Indicate the method is a property. + + .. versionadded:: 2.1 + + .. rst:directive:option:: staticmethod + :type: no value + + Indicate the method is a static method. + + .. versionadded:: 2.1 + + +.. rst:directive:: .. py:staticmethod:: name(parameters) + + Like :rst:dir:`py:method`, but indicates that the method is a static method. + + .. versionadded:: 0.4 + +.. rst:directive:: .. py:classmethod:: name(parameters) + + Like :rst:dir:`py:method`, but indicates that the method is a class method. + + .. versionadded:: 0.6 + +.. rst:directive:: .. py:decorator:: name + .. py:decorator:: name(parameters) + + Describes a decorator function. The signature should represent the usage as + a decorator. For example, given the functions + + .. code-block:: python + + def removename(func): + func.__name__ = '' + return func + + def setnewname(name): + def decorator(func): + func.__name__ = name + return func + return decorator + + the descriptions should look like this:: + + .. py:decorator:: removename + + Remove name of the decorated function. + + .. py:decorator:: setnewname(name) + + Set name of the decorated function to *name*. + + (as opposed to ``.. py:decorator:: removename(func)``.) + + There is no ``py:deco`` role to link to a decorator that is marked up with + this directive; rather, use the :rst:role:`py:func` role. + +.. rst:directive:: .. py:decoratormethod:: name + .. py:decoratormethod:: name(signature) + + Same as :rst:dir:`py:decorator`, but for decorators that are methods. + + Refer to a decorator method using the :rst:role:`py:meth` role. + +.. _signatures: + +Python Signatures +~~~~~~~~~~~~~~~~~ + +Signatures of functions, methods and class constructors can be given like they +would be written in Python. + +Default values for optional arguments can be given (but if they contain commas, +they will confuse the signature parser). Python 3-style argument annotations +can also be given as well as return type annotations:: + + .. py:function:: compile(source : string, filename, symbol='file') -> ast object + +For functions with optional parameters that don't have default values +(typically functions implemented in C extension modules without keyword +argument support), you can use brackets to specify the optional parts: + + .. py:function:: compile(source[, filename[, symbol]]) + +It is customary to put the opening bracket before the comma. + +.. _info-field-lists: + +Info field lists +~~~~~~~~~~~~~~~~ + +.. versionadded:: 0.4 +.. versionchanged:: 3.0 + + meta fields are added. + +Inside Python object description directives, reST field lists with these fields +are recognized and formatted nicely: + +* ``param``, ``parameter``, ``arg``, ``argument``, ``key``, ``keyword``: + Description of a parameter. +* ``type``: Type of a parameter. Creates a link if possible. +* ``raises``, ``raise``, ``except``, ``exception``: That (and when) a specific + exception is raised. +* ``var``, ``ivar``, ``cvar``: Description of a variable. +* ``vartype``: Type of a variable. Creates a link if possible. +* ``returns``, ``return``: Description of the return value. +* ``rtype``: Return type. Creates a link if possible. +* ``meta``: Add metadata to description of the python object. The metadata will + not be shown on output document. For example, ``:meta private:`` indicates + the python object is private member. It is used in + :py:mod:`sphinx.ext.autodoc` for filtering members. + +.. note:: + + In current release, all ``var``, ``ivar`` and ``cvar`` are represented as + "Variable". There is no difference at all. + +The field names must consist of one of these keywords and an argument (except +for ``returns`` and ``rtype``, which do not need an argument). This is best +explained by an example:: + + .. py:function:: send_message(sender, recipient, message_body, [priority=1]) + + Send a message to a recipient + + :param str sender: The person sending the message + :param str recipient: The recipient of the message + :param str message_body: The body of the message + :param priority: The priority of the message, can be a number 1-5 + :type priority: integer or None + :return: the message id + :rtype: int + :raises ValueError: if the message_body exceeds 160 characters + :raises TypeError: if the message_body is not a basestring + +This will render like this: + + .. py:function:: send_message(sender, recipient, message_body, [priority=1]) + :noindex: + + Send a message to a recipient + + :param str sender: The person sending the message + :param str recipient: The recipient of the message + :param str message_body: The body of the message + :param priority: The priority of the message, can be a number 1-5 + :type priority: integer or None + :return: the message id + :rtype: int + :raises ValueError: if the message_body exceeds 160 characters + :raises TypeError: if the message_body is not a basestring + +It is also possible to combine parameter type and description, if the type is a +single word, like this:: + + :param int priority: The priority of the message, can be a number 1-5 + +.. versionadded:: 1.5 + +Container types such as lists and dictionaries can be linked automatically +using the following syntax:: + + :type priorities: list(int) + :type priorities: list[int] + :type mapping: dict(str, int) + :type mapping: dict[str, int] + :type point: tuple(float, float) + :type point: tuple[float, float] + +Multiple types in a type field will be linked automatically if separated by the +word "or":: + + :type an_arg: int or None + :vartype a_var: str or int + :rtype: float or str + +.. _python-roles: + +Cross-referencing Python objects +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The following roles refer to objects in modules and are possibly hyperlinked if +a matching identifier is found: + +.. rst:role:: py:mod + + Reference a module; a dotted name may be used. This should also be used for + package names. + +.. rst:role:: py:func + + Reference a Python function; dotted names may be used. The role text needs + not include trailing parentheses to enhance readability; they will be added + automatically by Sphinx if the :confval:`add_function_parentheses` config + value is ``True`` (the default). + +.. rst:role:: py:data + + Reference a module-level variable. + +.. rst:role:: py:const + + Reference a "defined" constant. This may be a Python variable that is not + intended to be changed. + +.. rst:role:: py:class + + Reference a class; a dotted name may be used. + +.. rst:role:: py:meth + + Reference a method of an object. The role text can include the type name + and the method name; if it occurs within the description of a type, the type + name can be omitted. A dotted name may be used. + +.. rst:role:: py:attr + + Reference a data attribute of an object. + +.. rst:role:: py:exc + + Reference an exception. A dotted name may be used. + +.. rst:role:: py:obj + + Reference an object of unspecified type. Useful e.g. as the + :confval:`default_role`. + + .. versionadded:: 0.4 + +The name enclosed in this markup can include a module name and/or a class name. +For example, ``:py:func:`filter``` could refer to a function named ``filter`` +in the current module, or the built-in function of that name. In contrast, +``:py:func:`foo.filter``` clearly refers to the ``filter`` function in the +``foo`` module. + +Normally, names in these roles are searched first without any further +qualification, then with the current module name prepended, then with the +current module and class name (if any) prepended. If you prefix the name with +a dot, this order is reversed. For example, in the documentation of Python's +:mod:`codecs` module, ``:py:func:`open``` always refers to the built-in +function, while ``:py:func:`.open``` refers to :func:`codecs.open`. + +A similar heuristic is used to determine whether the name is an attribute of +the currently documented class. + +Also, if the name is prefixed with a dot, and no exact match is found, the +target is taken as a suffix and all object names with that suffix are searched. +For example, ``:py:meth:`.TarFile.close``` references the +``tarfile.TarFile.close()`` function, even if the current module is not +``tarfile``. Since this can get ambiguous, if there is more than one possible +match, you will get a warning from Sphinx. + +Note that you can combine the ``~`` and ``.`` prefixes: +``:py:meth:`~.TarFile.close``` will reference the ``tarfile.TarFile.close()`` +method, but the visible link caption will only be ``close()``. + + +.. _c-domain: + +The C Domain +------------ + +The C domain (name **c**) is suited for documentation of C API. + +.. rst:directive:: .. c:member:: declaration + .. c:var:: declaration + + Describes a C struct member or variable. Example signature:: + + .. c:member:: PyObject *PyTypeObject.tp_bases + + The difference between the two directives is only cosmetic. + +.. rst:directive:: .. c:function:: function prototype + + Describes a C function. The signature should be given as in C, e.g.:: + + .. c:function:: PyObject *PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems) + + Note that you don't have to backslash-escape asterisks in the signature, as + it is not parsed by the reST inliner. + +.. rst:directive:: .. c:macro:: name + .. c:macro:: name(arg list) + + Describes a C macro, i.e., a C-language ``#define``, without the replacement + text. + + .. versionadded:: 3.0 + The function style variant. + +.. rst:directive:: .. c:struct:: name + + Describes a C struct. + + .. versionadded:: 3.0 + +.. rst:directive:: .. c:union:: name + + Describes a C union. + + .. versionadded:: 3.0 + +.. rst:directive:: .. c:enum:: name + + Describes a C enum. + + .. versionadded:: 3.0 + +.. rst:directive:: .. c:enumerator:: name + + Describes a C enumerator. + + .. versionadded:: 3.0 + +.. rst:directive:: .. c:type:: typedef-like declaration + .. c:type:: name + + Describes a C type, either as a typedef, or the alias for an unspecified + type. + +.. _c-roles: + +Cross-referencing C constructs +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The following roles create cross-references to C-language constructs if they +are defined in the documentation: + +.. rst:role:: c:member + c:data + c:var + c:func + c:macro + c:struct + c:union + c:enum + c:enumerator + c:type + + Reference a C declaration, as defined above. + Note that :rst:role:`c:member`, :rst:role:`c:data`, and + :rst:role:`c:var` are equivalent. + + .. versionadded:: 3.0 + The var, struct, union, enum, and enumerator roles. + + +Anonymous Entities +~~~~~~~~~~~~~~~~~~ + +C supports anonymous structs, enums, and unions. +For the sake of documentation they must be given some name that starts with +``@``, e.g., ``@42`` or ``@data``. +These names can also be used in cross-references, +though nested symbols will be found even when omitted. +The ``@...`` name will always be rendered as **[anonymous]** (possibly as a +link). + +Example:: + + .. c:struct:: Data + + .. c:union:: @data + + .. c:var:: int a + + .. c:var:: double b + + Explicit ref: :c:var:`Data.@data.a`. Short-hand ref: :c:var:`Data.a`. + +This will be rendered as: + +.. c:struct:: Data + + .. c:union:: @data + + .. c:var:: int a + + .. c:var:: double b + +Explicit ref: :c:var:`Data.@data.a`. Short-hand ref: :c:var:`Data.a`. + +.. versionadded:: 3.0 + + +Inline Expressions and Types +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. rst:role:: c:expr + c:texpr + + Insert a C expression or type either as inline code (``cpp:expr``) + or inline text (``cpp:texpr``). For example:: + + .. c:var:: int a = 42 + + .. c:function:: int f(int i) + + An expression: :c:expr:`a * f(a)` (or as text: :c:texpr:`a * f(a)`). + + A type: :c:expr:`const Data*` + (or as text :c:texpr:`const Data*`). + + will be rendered as follows: + + .. c:var:: int a = 42 + + .. c:function:: int f(int i) + + An expression: :c:expr:`a * f(a)` (or as text: :c:texpr:`a * f(a)`). + + A type: :c:expr:`const Data*` + (or as text :c:texpr:`const Data*`). + + .. versionadded:: 3.0 + + +Namespacing +~~~~~~~~~~~ + +.. versionadded:: 3.1 + +The C language it self does not support namespacing, but it can sometimes be +useful to emulate it in documentation, e.g., to show alternate declarations. +The feature may also be used to document members of structs/unions/enums +separate from their parent declaration. + +The current scope can be changed using three namespace directives. They manage +a stack declarations where ``c:namespace`` resets the stack and changes a given +scope. + +The ``c:namespace-push`` directive changes the scope to a given inner scope +of the current one. + +The ``c:namespace-pop`` directive undoes the most recent +``c:namespace-push`` directive. + +.. rst:directive:: .. c:namespace:: scope specification + + Changes the current scope for the subsequent objects to the given scope, and + resets the namespace directive stack. Note that nested scopes can be + specified by separating with a dot, e.g.:: + + .. c:namespace:: Namespace1.Namespace2.SomeStruct.AnInnerStruct + + All subsequent objects will be defined as if their name were declared with + the scope prepended. The subsequent cross-references will be searched for + starting in the current scope. + + Using ``NULL`` or ``0`` as the scope will change to global scope. + +.. rst:directive:: .. c:namespace-push:: scope specification + + Change the scope relatively to the current scope. For example, after:: + + .. c:namespace:: A.B + + .. c:namespace-push:: C.D + + the current scope will be ``A.B.C.D``. + +.. rst:directive:: .. c:namespace-pop:: + + Undo the previous ``c:namespace-push`` directive (*not* just pop a scope). + For example, after:: + + .. c:namespace:: A.B + + .. c:namespace-push:: C.D + + .. c:namespace-pop:: + + the current scope will be ``A.B`` (*not* ``A.B.C``). + + If no previous ``c:namespace-push`` directive has been used, but only a + ``c:namespace`` directive, then the current scope will be reset to global + scope. That is, ``.. c:namespace:: A.B`` is equivalent to:: + + .. c:namespace:: NULL + + .. c:namespace-push:: A.B + +Configuration Variables +~~~~~~~~~~~~~~~~~~~~~~~ + +See :ref:`c-config`. + + +.. _cpp-domain: + +The C++ Domain +-------------- + +The C++ domain (name **cpp**) supports documenting C++ projects. + +Directives for Declaring Entities +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The following directives are available. All declarations can start with a +visibility statement (``public``, ``private`` or ``protected``). + +.. rst:directive:: .. cpp:class:: class specifier + .. cpp:struct:: class specifier + + Describe a class/struct, possibly with specification of inheritance, e.g.,:: + + .. cpp:class:: MyClass : public MyBase, MyOtherBase + + The difference between :rst:dir:`cpp:class` and :rst:dir:`cpp:struct` is + only cosmetic: the prefix rendered in the output, and the specifier shown + in the index. + + The class can be directly declared inside a nested scope, e.g.,:: + + .. cpp:class:: OuterScope::MyClass : public MyBase, MyOtherBase + + A class template can be declared:: + + .. cpp:class:: template<typename T, std::size_t N> std::array + + or with a line break:: + + .. cpp:class:: template<typename T, std::size_t N> \ + std::array + + Full and partial template specialisations can be declared:: + + .. cpp:class:: template<> \ + std::array<bool, 256> + + .. cpp:class:: template<typename T> \ + std::array<T, 42> + + .. versionadded:: 2.0 + The :rst:dir:`cpp:struct` directive. + +.. rst:directive:: .. cpp:function:: (member) function prototype + + Describe a function or member function, e.g.,:: + + .. cpp:function:: bool myMethod(int arg1, std::string arg2) + + A function with parameters and types. + + .. cpp:function:: bool myMethod(int, double) + + A function with unnamed parameters. + + .. cpp:function:: const T &MyClass::operator[](std::size_t i) const + + An overload for the indexing operator. + + .. cpp:function:: operator bool() const + + A casting operator. + + .. cpp:function:: constexpr void foo(std::string &bar[2]) noexcept + + A constexpr function. + + .. cpp:function:: MyClass::MyClass(const MyClass&) = default + + A copy constructor with default implementation. + + Function templates can also be described:: + + .. cpp:function:: template<typename U> \ + void print(U &&u) + + and function template specialisations:: + + .. cpp:function:: template<> \ + void print(int i) + +.. rst:directive:: .. cpp:member:: (member) variable declaration + .. cpp:var:: (member) variable declaration + + Describe a variable or member variable, e.g.,:: + + .. cpp:member:: std::string MyClass::myMember + + .. cpp:var:: std::string MyClass::myOtherMember[N][M] + + .. cpp:member:: int a = 42 + + Variable templates can also be described:: + + .. cpp:member:: template<class T> \ + constexpr T pi = T(3.1415926535897932385) + +.. rst:directive:: .. cpp:type:: typedef declaration + .. cpp:type:: name + .. cpp:type:: type alias declaration + + Describe a type as in a typedef declaration, a type alias declaration, or + simply the name of a type with unspecified type, e.g.,:: + + .. cpp:type:: std::vector<int> MyList + + A typedef-like declaration of a type. + + .. cpp:type:: MyContainer::const_iterator + + Declaration of a type alias with unspecified type. + + .. cpp:type:: MyType = std::unordered_map<int, std::string> + + Declaration of a type alias. + + A type alias can also be templated:: + + .. cpp:type:: template<typename T> \ + MyContainer = std::vector<T> + + The example are rendered as follows. + + .. cpp:type:: std::vector<int> MyList + + A typedef-like declaration of a type. + + .. cpp:type:: MyContainer::const_iterator + + Declaration of a type alias with unspecified type. + + .. cpp:type:: MyType = std::unordered_map<int, std::string> + + Declaration of a type alias. + + .. cpp:type:: template<typename T> \ + MyContainer = std::vector<T> + +.. rst:directive:: .. cpp:enum:: unscoped enum declaration + .. cpp:enum-struct:: scoped enum declaration + .. cpp:enum-class:: scoped enum declaration + + Describe a (scoped) enum, possibly with the underlying type specified. Any + enumerators declared inside an unscoped enum will be declared both in the + enum scope and in the parent scope. Examples:: + + .. cpp:enum:: MyEnum + + An unscoped enum. + + .. cpp:enum:: MySpecificEnum : long + + An unscoped enum with specified underlying type. + + .. cpp:enum-class:: MyScopedEnum + + A scoped enum. + + .. cpp:enum-struct:: protected MyScopedVisibilityEnum : std::underlying_type<MySpecificEnum>::type + + A scoped enum with non-default visibility, and with a specified + underlying type. + +.. rst:directive:: .. cpp:enumerator:: name + .. cpp:enumerator:: name = constant + + Describe an enumerator, optionally with its value defined, e.g.,:: + + .. cpp:enumerator:: MyEnum::myEnumerator + + .. cpp:enumerator:: MyEnum::myOtherEnumerator = 42 + +.. rst:directive:: .. cpp:union:: name + + Describe a union. + + .. versionadded:: 1.8 + +.. rst:directive:: .. cpp:concept:: template-parameter-list name + + .. warning:: The support for concepts is experimental. It is based on the + current draft standard and the Concepts Technical Specification. + The features may change as they evolve. + + Describe a concept. It must have exactly 1 template parameter list. The name + may be a nested name. Example:: + + .. cpp:concept:: template<typename It> std::Iterator + + Proxy to an element of a notional sequence that can be compared, + indirected, or incremented. + + **Notation** + + .. cpp:var:: It r + + An lvalue. + + **Valid Expressions** + + - :cpp:expr:`*r`, when :cpp:expr:`r` is dereferenceable. + - :cpp:expr:`++r`, with return type :cpp:expr:`It&`, when + :cpp:expr:`r` is incrementable. + + This will render as follows: + + .. cpp:concept:: template<typename It> std::Iterator + + Proxy to an element of a notional sequence that can be compared, + indirected, or incremented. + + **Notation** + + .. cpp:var:: It r + + An lvalue. + + **Valid Expressions** + + - :cpp:expr:`*r`, when :cpp:expr:`r` is dereferenceable. + - :cpp:expr:`++r`, with return type :cpp:expr:`It&`, when :cpp:expr:`r` + is incrementable. + + .. versionadded:: 1.5 + + +Options +^^^^^^^ + +Some directives support options: + +- ``:noindex:``, see :ref:`basic-domain-markup`. +- ``:tparam-line-spec:``, for templated declarations. + If specified, each template parameter will be rendered on a separate line. + + .. versionadded:: 1.6 + +Anonymous Entities +~~~~~~~~~~~~~~~~~~ + +C++ supports anonymous namespaces, classes, enums, and unions. +For the sake of documentation they must be given some name that starts with +``@``, e.g., ``@42`` or ``@data``. +These names can also be used in cross-references and (type) expressions, +though nested symbols will be found even when omitted. +The ``@...`` name will always be rendered as **[anonymous]** (possibly as a +link). + +Example:: + + .. cpp:class:: Data + + .. cpp:union:: @data + + .. cpp:var:: int a + + .. cpp:var:: double b + + Explicit ref: :cpp:var:`Data::@data::a`. Short-hand ref: :cpp:var:`Data::a`. + +This will be rendered as: + +.. cpp:class:: Data + + .. cpp:union:: @data + + .. cpp:var:: int a + + .. cpp:var:: double b + +Explicit ref: :cpp:var:`Data::@data::a`. Short-hand ref: :cpp:var:`Data::a`. + +.. versionadded:: 1.8 + + +Aliasing Declarations +~~~~~~~~~~~~~~~~~~~~~ + +Sometimes it may be helpful list declarations elsewhere than their main +documentation, e.g., when creating a synopsis of a class interface. +The following directive can be used for this purpose. + +.. rst:directive:: .. cpp:alias:: name or function signature + + Insert one or more alias declarations. Each entity can be specified + as they can in the :rst:role:`cpp:any` role. + If the name of a function is given (as opposed to the complete signature), + then all overloads of the function will be listed. + + For example:: + + .. cpp:alias:: Data::a + overload_example::C::f + + becomes + + .. cpp:alias:: Data::a + overload_example::C::f + + whereas:: + + .. cpp:alias:: void overload_example::C::f(double d) const + void overload_example::C::f(double d) + + becomes + + .. cpp:alias:: void overload_example::C::f(double d) const + void overload_example::C::f(double d) + + .. versionadded:: 2.0 + + +Constrained Templates +~~~~~~~~~~~~~~~~~~~~~ + +.. warning:: The support for concepts is experimental. It is based on the + current draft standard and the Concepts Technical Specification. + The features may change as they evolve. + +.. note:: Sphinx does not currently support ``requires`` clauses. + +Placeholders +^^^^^^^^^^^^ + +Declarations may use the name of a concept to introduce constrained template +parameters, or the keyword ``auto`` to introduce unconstrained template +parameters:: + + .. cpp:function:: void f(auto &&arg) + + A function template with a single unconstrained template parameter. + + .. cpp:function:: void f(std::Iterator it) + + A function template with a single template parameter, constrained by the + Iterator concept. + +Template Introductions +^^^^^^^^^^^^^^^^^^^^^^ + +Simple constrained function or class templates can be declared with a `template +introduction` instead of a template parameter list:: + + .. cpp:function:: std::Iterator{It} void advance(It &it) + + A function template with a template parameter constrained to be an + Iterator. + + .. cpp:class:: std::LessThanComparable{T} MySortedContainer + + A class template with a template parameter constrained to be + LessThanComparable. + +They are rendered as follows. + +.. cpp:function:: std::Iterator{It} void advance(It &it) + + A function template with a template parameter constrained to be an Iterator. + +.. cpp:class:: std::LessThanComparable{T} MySortedContainer + + A class template with a template parameter constrained to be + LessThanComparable. + +Note however that no checking is performed with respect to parameter +compatibility. E.g., ``Iterator{A, B, C}`` will be accepted as an introduction +even though it would not be valid C++. + +Inline Expressions and Types +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. rst:role:: cpp:expr + cpp:texpr + + Insert a C++ expression or type either as inline code (``cpp:expr``) + or inline text (``cpp:texpr``). For example:: + + .. cpp:var:: int a = 42 + + .. cpp:function:: int f(int i) + + An expression: :cpp:expr:`a * f(a)` (or as text: :cpp:texpr:`a * f(a)`). + + A type: :cpp:expr:`const MySortedContainer<int>&` + (or as text :cpp:texpr:`const MySortedContainer<int>&`). + + will be rendered as follows: + + .. cpp:var:: int a = 42 + + .. cpp:function:: int f(int i) + + An expression: :cpp:expr:`a * f(a)` (or as text: :cpp:texpr:`a * f(a)`). + + A type: :cpp:expr:`const MySortedContainer<int>&` + (or as text :cpp:texpr:`const MySortedContainer<int>&`). + + .. versionadded:: 1.7 + The :rst:role:`cpp:expr` role. + + .. versionadded:: 1.8 + The :rst:role:`cpp:texpr` role. + +Namespacing +~~~~~~~~~~~ + +Declarations in the C++ domain are as default placed in global scope. The +current scope can be changed using three namespace directives. They manage a +stack declarations where ``cpp:namespace`` resets the stack and changes a given +scope. + +The ``cpp:namespace-push`` directive changes the scope to a given inner scope +of the current one. + +The ``cpp:namespace-pop`` directive undoes the most recent +``cpp:namespace-push`` directive. + +.. rst:directive:: .. cpp:namespace:: scope specification + + Changes the current scope for the subsequent objects to the given scope, and + resets the namespace directive stack. Note that the namespace does not need + to correspond to C++ namespaces, but can end in names of classes, e.g.,:: + + .. cpp:namespace:: Namespace1::Namespace2::SomeClass::AnInnerClass + + All subsequent objects will be defined as if their name were declared with + the scope prepended. The subsequent cross-references will be searched for + starting in the current scope. + + Using ``NULL``, ``0``, or ``nullptr`` as the scope will change to global + scope. + + A namespace declaration can also be templated, e.g.,:: + + .. cpp:class:: template<typename T> \ + std::vector + + .. cpp:namespace:: template<typename T> std::vector + + .. cpp:function:: std::size_t size() const + + declares ``size`` as a member function of the class template + ``std::vector``. Equivalently this could have been declared using:: + + .. cpp:class:: template<typename T> \ + std::vector + + .. cpp:function:: std::size_t size() const + + or:: + + .. cpp:class:: template<typename T> \ + std::vector + +.. rst:directive:: .. cpp:namespace-push:: scope specification + + Change the scope relatively to the current scope. For example, after:: + + .. cpp:namespace:: A::B + + .. cpp:namespace-push:: C::D + + the current scope will be ``A::B::C::D``. + + .. versionadded:: 1.4 + +.. rst:directive:: .. cpp:namespace-pop:: + + Undo the previous ``cpp:namespace-push`` directive (*not* just pop a scope). + For example, after:: + + .. cpp:namespace:: A::B + + .. cpp:namespace-push:: C::D + + .. cpp:namespace-pop:: + + the current scope will be ``A::B`` (*not* ``A::B::C``). + + If no previous ``cpp:namespace-push`` directive has been used, but only a + ``cpp:namespace`` directive, then the current scope will be reset to global + scope. That is, ``.. cpp:namespace:: A::B`` is equivalent to:: + + .. cpp:namespace:: nullptr + + .. cpp:namespace-push:: A::B + + .. versionadded:: 1.4 + +Info field lists +~~~~~~~~~~~~~~~~~ + +The C++ directives support the following info fields (see also +:ref:`info-field-lists`): + +* `param`, `parameter`, `arg`, `argument`: Description of a parameter. +* `tparam`: Description of a template parameter. +* `returns`, `return`: Description of a return value. +* `throws`, `throw`, `exception`: Description of a possibly thrown exception. + +.. _cpp-roles: + +Cross-referencing +~~~~~~~~~~~~~~~~~ + +These roles link to the given declaration types: + +.. rst:role:: cpp:any + cpp:class + cpp:struct + cpp:func + cpp:member + cpp:var + cpp:type + cpp:concept + cpp:enum + cpp:enumerator + + Reference a C++ declaration by name (see below for details). The name must + be properly qualified relative to the position of the link. + + .. versionadded:: 2.0 + The :rst:role:`cpp:struct` role as alias for the :rst:role:`cpp:class` + role. + +.. admonition:: Note on References with Templates Parameters/Arguments + + These roles follow the Sphinx :ref:`xref-syntax` rules. This means care must + be taken when referencing a (partial) template specialization, e.g. if the + link looks like this: ``:cpp:class:`MyClass<int>```. + This is interpreted as a link to ``int`` with a title of ``MyClass``. + In this case, escape the opening angle bracket with a backslash, + like this: ``:cpp:class:`MyClass\<int>```. + + When a custom title is not needed it may be useful to use the roles for + inline expressions, :rst:role:`cpp:expr` and :rst:role:`cpp:texpr`, where + angle brackets do not need escaping. + +Declarations without template parameters and template arguments +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +For linking to non-templated declarations the name must be a nested name, e.g., +``f`` or ``MyClass::f``. + + +Overloaded (member) functions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +When a (member) function is referenced using just its name, the reference +will point to an arbitrary matching overload. +The :rst:role:`cpp:any` and :rst:role:`cpp:func` roles use an alternative +format, which simply is a complete function declaration. +This will resolve to the exact matching overload. +As example, consider the following class declaration: + +.. cpp:namespace-push:: overload_example +.. cpp:class:: C + + .. cpp:function:: void f(double d) const + .. cpp:function:: void f(double d) + .. cpp:function:: void f(int i) + .. cpp:function:: void f() + +References using the :rst:role:`cpp:func` role: + +- Arbitrary overload: ``C::f``, :cpp:func:`C::f` +- Also arbitrary overload: ``C::f()``, :cpp:func:`C::f()` +- Specific overload: ``void C::f()``, :cpp:func:`void C::f()` +- Specific overload: ``void C::f(int)``, :cpp:func:`void C::f(int)` +- Specific overload: ``void C::f(double)``, :cpp:func:`void C::f(double)` +- Specific overload: ``void C::f(double) const``, + :cpp:func:`void C::f(double) const` + +Note that the :confval:`add_function_parentheses` configuration variable +does not influence specific overload references. + +.. cpp:namespace-pop:: + + +Templated declarations +^^^^^^^^^^^^^^^^^^^^^^ + +Assume the following declarations. + +.. cpp:class:: Wrapper + + .. cpp:class:: template<typename TOuter> \ + Outer + + .. cpp:class:: template<typename TInner> \ + Inner + +In general the reference must include the template parameter declarations, +and template arguments for the prefix of qualified names. For example: + +- ``template\<typename TOuter> Wrapper::Outer`` + (:cpp:class:`template\<typename TOuter> Wrapper::Outer`) +- ``template\<typename TOuter> template\<typename TInner> Wrapper::Outer<TOuter>::Inner`` + (:cpp:class:`template\<typename TOuter> template\<typename TInner> Wrapper::Outer<TOuter>::Inner`) + +Currently the lookup only succeed if the template parameter identifiers are +equal strings. That is, ``template\<typename UOuter> Wrapper::Outer`` will not +work. + +As a shorthand notation, if a template parameter list is omitted, +then the lookup will assume either a primary template or a non-template, +but not a partial template specialisation. +This means the following references work as well: + +- ``Wrapper::Outer`` + (:cpp:class:`Wrapper::Outer`) +- ``Wrapper::Outer::Inner`` + (:cpp:class:`Wrapper::Outer::Inner`) +- ``template\<typename TInner> Wrapper::Outer::Inner`` + (:cpp:class:`template\<typename TInner> Wrapper::Outer::Inner`) + +(Full) Template Specialisations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Assume the following declarations. + +.. cpp:class:: template<typename TOuter> \ + Outer + + .. cpp:class:: template<typename TInner> \ + Inner + +.. cpp:class:: template<> \ + Outer<int> + + .. cpp:class:: template<typename TInner> \ + Inner + + .. cpp:class:: template<> \ + Inner<bool> + +In general the reference must include a template parameter list for each +template argument list. The full specialisation above can therefore be +referenced with ``template\<> Outer\<int>`` (:cpp:class:`template\<> +Outer\<int>`) and ``template\<> template\<> Outer\<int>::Inner\<bool>`` +(:cpp:class:`template\<> template\<> Outer\<int>::Inner\<bool>`). As a +shorthand the empty template parameter list can be omitted, e.g., +``Outer\<int>`` (:cpp:class:`Outer\<int>`) and ``Outer\<int>::Inner\<bool>`` +(:cpp:class:`Outer\<int>::Inner\<bool>`). + +Partial Template Specialisations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Assume the following declaration. + +.. cpp:class:: template<typename T> \ + Outer<T*> + +References to partial specialisations must always include the template +parameter lists, e.g., ``template\<typename T> Outer\<T*>`` +(:cpp:class:`template\<typename T> Outer\<T*>`). Currently the lookup only +succeed if the template parameter identifiers are equal strings. + +Configuration Variables +~~~~~~~~~~~~~~~~~~~~~~~ + +See :ref:`cpp-config`. + +.. _domains-std: + +The Standard Domain +------------------- + +The so-called "standard" domain collects all markup that doesn't warrant a +domain of its own. Its directives and roles are not prefixed with a domain +name. + +The standard domain is also where custom object descriptions, added using the +:func:`~sphinx.application.Sphinx.add_object_type` API, are placed. + +There is a set of directives allowing documenting command-line programs: + +.. rst:directive:: .. option:: name args, name args, ... + + Describes a command line argument or switch. Option argument names should + be enclosed in angle brackets. Examples:: + + .. option:: dest_dir + + Destination directory. + + .. option:: -m <module>, --module <module> + + Run a module as a script. + + The directive will create cross-reference targets for the given options, + referenceable by :rst:role:`option` (in the example case, you'd use something + like ``:option:`dest_dir```, ``:option:`-m```, or ``:option:`--module```). + + ``cmdoption`` directive is a deprecated alias for the ``option`` directive. + +.. rst:directive:: .. envvar:: name + + Describes an environment variable that the documented code or program uses + or defines. Referenceable by :rst:role:`envvar`. + +.. rst:directive:: .. program:: name + + Like :rst:dir:`py:currentmodule`, this directive produces no output. + Instead, it serves to notify Sphinx that all following :rst:dir:`option` + directives document options for the program called *name*. + + If you use :rst:dir:`program`, you have to qualify the references in your + :rst:role:`option` roles by the program name, so if you have the following + situation :: + + .. program:: rm + + .. option:: -r + + Work recursively. + + .. program:: svn + + .. option:: -r revision + + Specify the revision to work upon. + + then ``:option:`rm -r``` would refer to the first option, while + ``:option:`svn -r``` would refer to the second one. + + The program name may contain spaces (in case you want to document + subcommands like ``svn add`` and ``svn commit`` separately). + + .. versionadded:: 0.5 + +There is also a very generic object description directive, which is not tied to +any domain: + +.. rst:directive:: .. describe:: text + .. object:: text + + This directive produces the same formatting as the specific ones provided by + domains, but does not create index entries or cross-referencing targets. + Example:: + + .. describe:: PAPER + + You can set this variable to select a paper size. + + +The JavaScript Domain +--------------------- + +The JavaScript domain (name **js**) provides the following directives: + +.. rst:directive:: .. js:module:: name + + This directive sets the module name for object declarations that follow + after. The module name is used in the global module index and in cross + references. This directive does not create an object heading like + :rst:dir:`py:class` would, for example. + + By default, this directive will create a linkable entity and will cause an + entry in the global module index, unless the ``noindex`` option is + specified. If this option is specified, the directive will only update the + current module name. + + .. versionadded:: 1.6 + +.. rst:directive:: .. js:function:: name(signature) + + Describes a JavaScript function or method. If you want to describe + arguments as optional use square brackets as :ref:`documented <signatures>` + for Python signatures. + + You can use fields to give more details about arguments and their expected + types, errors which may be thrown by the function, and the value being + returned:: + + .. js:function:: $.getJSON(href, callback[, errback]) + + :param string href: An URI to the location of the resource. + :param callback: Gets called with the object. + :param errback: + Gets called in case the request fails. And a lot of other + text so we need multiple lines. + :throws SomeError: For whatever reason in that case. + :returns: Something. + + This is rendered as: + + .. js:function:: $.getJSON(href, callback[, errback]) + + :param string href: An URI to the location of the resource. + :param callback: Gets called with the object. + :param errback: + Gets called in case the request fails. And a lot of other + text so we need multiple lines. + :throws SomeError: For whatever reason in that case. + :returns: Something. + +.. rst:directive:: .. js:method:: name(signature) + + This directive is an alias for :rst:dir:`js:function`, however it describes + a function that is implemented as a method on a class object. + + .. versionadded:: 1.6 + +.. rst:directive:: .. js:class:: name + + Describes a constructor that creates an object. This is basically like a + function but will show up with a `class` prefix:: + + .. js:class:: MyAnimal(name[, age]) + + :param string name: The name of the animal + :param number age: an optional age for the animal + + This is rendered as: + + .. js:class:: MyAnimal(name[, age]) + + :param string name: The name of the animal + :param number age: an optional age for the animal + +.. rst:directive:: .. js:data:: name + + Describes a global variable or constant. + +.. rst:directive:: .. js:attribute:: object.name + + Describes the attribute *name* of *object*. + +.. _js-roles: + +These roles are provided to refer to the described objects: + +.. rst:role:: js:mod + js:func + js:meth + js:class + js:data + js:attr + + +The reStructuredText domain +--------------------------- + +The reStructuredText domain (name **rst**) provides the following directives: + +.. rst:directive:: .. rst:directive:: name + + Describes a reST directive. The *name* can be a single directive name or + actual directive syntax (`..` prefix and `::` suffix) with arguments that + will be rendered differently. For example:: + + .. rst:directive:: foo + + Foo description. + + .. rst:directive:: .. bar:: baz + + Bar description. + + will be rendered as: + + .. rst:directive:: foo + + Foo description. + + .. rst:directive:: .. bar:: baz + + Bar description. + +.. rst:directive:: .. rst:directive:option:: name + + Describes an option for reST directive. The *name* can be a single option + name or option name with arguments which separated with colon (``:``). + For example:: + + .. rst:directive:: toctree + + .. rst:directive:option:: caption: caption of ToC + + .. rst:directive:option:: glob + + will be rendered as: + + .. rst:directive:: toctree + :noindex: + + .. rst:directive:option:: caption: caption of ToC + + .. rst:directive:option:: glob + + .. rubric:: options + + .. rst:directive:option:: type: description of argument + :type: text + + Describe the type of option value. + + For example:: + + .. rst:directive:: toctree + + .. rst:directive:option:: maxdepth + :type: integer or no value + + .. versionadded:: 2.1 + +.. rst:directive:: .. rst:role:: name + + Describes a reST role. For example:: + + .. rst:role:: foo + + Foo description. + + will be rendered as: + + .. rst:role:: foo + + Foo description. + +.. _rst-roles: + +These roles are provided to refer to the described objects: + +.. rst:role:: rst:dir + rst:role + +.. _math-domain: + +The Math Domain +--------------- + +The math domain (name **math**) provides the following roles: + +.. rst:role:: math:numref + + Role for cross-referencing equations defined by :rst:dir:`math` directive + via their label. Example:: + + .. math:: e^{i\pi} + 1 = 0 + :label: euler + + Euler's identity, equation :math:numref:`euler`, was elected one of the + most beautiful mathematical formulas. + + .. versionadded:: 1.8 + +More domains +------------ + +The sphinx-contrib_ repository contains more domains available as extensions; +currently Ada_, CoffeeScript_, Erlang_, HTTP_, Lasso_, MATLAB_, PHP_, and Ruby_ +domains. Also available are domains for `Chapel`_, `Common Lisp`_, dqn_, Go_, +Jinja_, Operation_, and Scala_. + +.. _sphinx-contrib: https://bitbucket.org/birkenfeld/sphinx-contrib/ + +.. _Ada: https://pypi.org/project/sphinxcontrib-adadomain/ +.. _Chapel: https://pypi.org/project/sphinxcontrib-chapeldomain/ +.. _CoffeeScript: https://pypi.org/project/sphinxcontrib-coffee/ +.. _Common Lisp: https://pypi.org/project/sphinxcontrib-cldomain/ +.. _dqn: https://pypi.org/project/sphinxcontrib-dqndomain/ +.. _Erlang: https://pypi.org/project/sphinxcontrib-erlangdomain/ +.. _Go: https://pypi.org/project/sphinxcontrib-golangdomain/ +.. _HTTP: https://pypi.org/project/sphinxcontrib-httpdomain/ +.. _Jinja: https://pypi.org/project/sphinxcontrib-jinjadomain/ +.. _Lasso: https://pypi.org/project/sphinxcontrib-lassodomain/ +.. _MATLAB: https://pypi.org/project/sphinxcontrib-matlabdomain/ +.. _Operation: https://pypi.org/project/sphinxcontrib-operationdomain/ +.. _PHP: https://pypi.org/project/sphinxcontrib-phpdomain/ +.. _Ruby: https://bitbucket.org/birkenfeld/sphinx-contrib/src/default/rubydomain +.. _Scala: https://pypi.org/project/sphinxcontrib-scaladomain/ diff --git a/sphinx/doc/usage/restructuredtext/field-lists.rst b/sphinx/doc/usage/restructuredtext/field-lists.rst new file mode 100644 index 0000000..28b3cfe --- /dev/null +++ b/sphinx/doc/usage/restructuredtext/field-lists.rst @@ -0,0 +1,62 @@ +.. highlight:: rst + +=========== +Field Lists +=========== + +:ref:`As previously discussed <rst-field-lists>`, field lists are sequences of +fields marked up like this:: + + :fieldname: Field content + +Sphinx provides custom behavior for bibliographic fields compared to docutils. + +.. _metadata: + +File-wide metadata +------------------ + +A field list near the top of a file is normally parsed by docutils as the +*docinfo* which is generally used to record the author, date of publication and +other metadata. However, in Sphinx, a field list preceding any other markup is +moved from the *docinfo* to the Sphinx environment as document metadata and is +not displayed in the output; a field list appearing after the document title +will be part of the *docinfo* as normal and will be displayed in the output. + +At the moment, these metadata fields are recognized: + +``tocdepth`` + The maximum depth for a table of contents of this file. :: + + :tocdepth: 2 + + .. note:: + + This metadata effects to the depth of local toctree. But it does not + effect to the depth of *global* toctree. So this would not be change + the sidebar of some themes which uses global one. + + .. versionadded:: 0.4 + +``nocomments`` + If set, the web application won't display a comment form for a page + generated from this source file. :: + + :nocomments: + +``orphan`` + If set, warnings about this file not being included in any toctree will be + suppressed. :: + + :orphan: + + .. versionadded:: 1.0 + +``nosearch`` + If set, full text search for this file is disabled. :: + + :nosearch: + + .. note:: object search is still available even if `nosearch` option is set. + + .. versionadded:: 3.0 diff --git a/sphinx/doc/usage/restructuredtext/index.rst b/sphinx/doc/usage/restructuredtext/index.rst new file mode 100644 index 0000000..ea346b3 --- /dev/null +++ b/sphinx/doc/usage/restructuredtext/index.rst @@ -0,0 +1,24 @@ +.. _rst-index: + +================ +reStructuredText +================ + +reStructuredText (reST) is the default plaintext markup language used by both +Docutils and Sphinx. Docutils provides the basic reStructuredText syntax, while +Sphinx extends this to support additional functionality. + +The below guides go through the most important aspects of reST. For the +authoritative reStructuredText reference, refer to the `docutils +documentation`__. + +__ http://docutils.sourceforge.net/rst.html + +.. toctree:: + :maxdepth: 2 + + basics + roles + directives + field-lists + domains diff --git a/sphinx/doc/usage/restructuredtext/roles.rst b/sphinx/doc/usage/restructuredtext/roles.rst new file mode 100644 index 0000000..de12a41 --- /dev/null +++ b/sphinx/doc/usage/restructuredtext/roles.rst @@ -0,0 +1,473 @@ +.. highlight:: rst + +===== +Roles +===== + +Sphinx uses interpreted text roles to insert semantic markup into documents. +They are written as ``:rolename:`content```. + +.. note:: + + The default role (```content```) has no special meaning by default. You are + free to use it for anything you like, e.g. variable names; use the + :confval:`default_role` config value to set it to a known role -- the + :rst:role:`any` role to find anything or the :rst:role:`py:obj` role to find + Python objects are very useful for this. + +See :doc:`/usage/restructuredtext/domains` for roles added by domains. + + +.. _xref-syntax: + +Cross-referencing syntax +------------------------ + +Cross-references are generated by many semantic interpreted text roles. +Basically, you only need to write ``:role:`target```, and a link will be +created to the item named *target* of the type indicated by *role*. The link's +text will be the same as *target*. + +There are some additional facilities, however, that make cross-referencing +roles more versatile: + +* You may supply an explicit title and reference target, like in reST direct + hyperlinks: ``:role:`title <target>``` will refer to *target*, but the link + text will be *title*. + +* If you prefix the content with ``!``, no reference/hyperlink will be created. + +* If you prefix the content with ``~``, the link text will only be the last + component of the target. For example, ``:py:meth:`~Queue.Queue.get``` will + refer to ``Queue.Queue.get`` but only display ``get`` as the link text. This + does not work with all cross-reference roles, but is domain specific. + + In HTML output, the link's ``title`` attribute (that is e.g. shown as a + tool-tip on mouse-hover) will always be the full target name. + + +.. _any-role: + +Cross-referencing anything +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. rst:role:: any + + .. versionadded:: 1.3 + + This convenience role tries to do its best to find a valid target for its + reference text. + + * First, it tries standard cross-reference targets that would be referenced + by :rst:role:`doc`, :rst:role:`ref` or :rst:role:`option`. + + Custom objects added to the standard domain by extensions (see + :meth:`.Sphinx.add_object_type`) are also searched. + + * Then, it looks for objects (targets) in all loaded domains. It is up to + the domains how specific a match must be. For example, in the Python + domain a reference of ``:any:`Builder``` would match the + ``sphinx.builders.Builder`` class. + + If none or multiple targets are found, a warning will be emitted. In the + case of multiple targets, you can change "any" to a specific role. + + This role is a good candidate for setting :confval:`default_role`. If you + do, you can write cross-references without a lot of markup overhead. For + example, in this Python function documentation :: + + .. function:: install() + + This function installs a `handler` for every signal known by the + `signal` module. See the section `about-signals` for more information. + + there could be references to a glossary term (usually ``:term:`handler```), a + Python module (usually ``:py:mod:`signal``` or ``:mod:`signal```) and a + section (usually ``:ref:`about-signals```). + + The :rst:role:`any` role also works together with the + :mod:`~sphinx.ext.intersphinx` extension: when no local cross-reference is + found, all object types of intersphinx inventories are also searched. + +Cross-referencing objects +^^^^^^^^^^^^^^^^^^^^^^^^^ + +These roles are described with their respective domains: + +* :ref:`Python <python-roles>` +* :ref:`C <c-roles>` +* :ref:`C++ <cpp-roles>` +* :ref:`JavaScript <js-roles>` +* :ref:`ReST <rst-roles>` + + +.. _ref-role: + +Cross-referencing arbitrary locations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. rst:role:: ref + + To support cross-referencing to arbitrary locations in any document, the + standard reST labels are used. For this to work label names must be unique + throughout the entire documentation. There are two ways in which you can + refer to labels: + + * If you place a label directly before a section title, you can reference to + it with ``:ref:`label-name```. For example:: + + .. _my-reference-label: + + Section to cross-reference + -------------------------- + + This is the text of the section. + + It refers to the section itself, see :ref:`my-reference-label`. + + The ``:ref:`` role would then generate a link to the section, with the + link title being "Section to cross-reference". This works just as well + when section and reference are in different source files. + + Automatic labels also work with figures. For example:: + + .. _my-figure: + + .. figure:: whatever + + Figure caption + + In this case, a reference ``:ref:`my-figure``` would insert a reference + to the figure with link text "Figure caption". + + The same works for tables that are given an explicit caption using the + :dudir:`table` directive. + + * Labels that aren't placed before a section title can still be referenced, + but you must give the link an explicit title, using this syntax: + ``:ref:`Link title <label-name>```. + + .. note:: + + Reference labels must start with an underscore. When referencing a label, + the underscore must be omitted (see examples above). + + Using :rst:role:`ref` is advised over standard reStructuredText links to + sections (like ```Section title`_``) because it works across files, when + section headings are changed, will raise warnings if incorrect, and works + for all builders that support cross-references. + + +Cross-referencing documents +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. versionadded:: 0.6 + +There is also a way to directly link to documents: + +.. rst:role:: doc + + Link to the specified document; the document name can be specified in + absolute or relative fashion. For example, if the reference + ``:doc:`parrot``` occurs in the document ``sketches/index``, then the link + refers to ``sketches/parrot``. If the reference is ``:doc:`/people``` or + ``:doc:`../people```, the link refers to ``people``. + + If no explicit link text is given (like usual: ``:doc:`Monty Python members + </people>```), the link caption will be the title of the given document. + + +Referencing downloadable files +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. versionadded:: 0.6 + +.. rst:role:: download + + This role lets you link to files within your source tree that are not reST + documents that can be viewed, but files that can be downloaded. + + When you use this role, the referenced file is automatically marked for + inclusion in the output when building (obviously, for HTML output only). + All downloadable files are put into a ``_downloads/<unique hash>/`` + subdirectory of the output directory; duplicate filenames are handled. + + An example:: + + See :download:`this example script <../example.py>`. + + The given filename is usually relative to the directory the current source + file is contained in, but if it absolute (starting with ``/``), it is taken + as relative to the top source directory. + + The ``example.py`` file will be copied to the output directory, and a + suitable link generated to it. + + Not to show unavailable download links, you should wrap whole paragraphs that + have this role:: + + .. only:: builder_html + + See :download:`this example script <../example.py>`. + +Cross-referencing figures by figure number +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. versionadded:: 1.3 + +.. versionchanged:: 1.5 + `numref` role can also refer sections. + And `numref` allows `{name}` for the link text. + +.. rst:role:: numref + + Link to the specified figures, tables, code-blocks and sections; the standard + reST labels are used. When you use this role, it will insert a reference to + the figure with link text by its figure number like "Fig. 1.1". + + If an explicit link text is given (as usual: ``:numref:`Image of Sphinx (Fig. + %s) <my-figure>```), the link caption will serve as title of the reference. + As placeholders, `%s` and `{number}` get replaced by the figure + number and `{name}` by the figure caption. + If no explicit link text is given, the :confval:`numfig_format` setting is + used as fall-back default. + + If :confval:`numfig` is ``False``, figures are not numbered, + so this role inserts not a reference but the label or the link text. + +Cross-referencing other items of interest +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The following roles do possibly create a cross-reference, but do not refer to +objects: + +.. rst:role:: envvar + + An environment variable. Index entries are generated. Also generates a link + to the matching :rst:dir:`envvar` directive, if it exists. + +.. rst:role:: token + + The name of a grammar token (used to create links between + :rst:dir:`productionlist` directives). + +.. rst:role:: keyword + + The name of a keyword in Python. This creates a link to a reference label + with that name, if it exists. + +.. rst:role:: option + + A command-line option to an executable program. This generates a link to + a :rst:dir:`option` directive, if it exists. + + +The following role creates a cross-reference to a term in a +:ref:`glossary <glossary-directive>`: + +.. rst:role:: term + + Reference to a term in a glossary. A glossary is created using the + ``glossary`` directive containing a definition list with terms and + definitions. It does not have to be in the same file as the ``term`` markup, + for example the Python docs have one global glossary in the ``glossary.rst`` + file. + + If you use a term that's not explained in a glossary, you'll get a warning + during build. + + +Math +---- + +.. rst:role:: math + + Role for inline math. Use like this:: + + Since Pythagoras, we know that :math:`a^2 + b^2 = c^2`. + +.. rst:role:: eq + + Same as :rst:role:`math:numref`. + + +Other semantic markup +--------------------- + +The following roles don't do anything special except formatting the text in a +different style: + +.. rst:role:: abbr + + An abbreviation. If the role content contains a parenthesized explanation, + it will be treated specially: it will be shown in a tool-tip in HTML, and + output only once in LaTeX. + + Example: ``:abbr:`LIFO (last-in, first-out)```. + + .. versionadded:: 0.6 + +.. rst:role:: command + + The name of an OS-level command, such as ``rm``. + +.. rst:role:: dfn + + Mark the defining instance of a term in the text. (No index entries are + generated.) + +.. rst:role:: file + + The name of a file or directory. Within the contents, you can use curly + braces to indicate a "variable" part, for example:: + + ... is installed in :file:`/usr/lib/python2.{x}/site-packages` ... + + In the built documentation, the ``x`` will be displayed differently to + indicate that it is to be replaced by the Python minor version. + +.. rst:role:: guilabel + + Labels presented as part of an interactive user interface should be marked + using ``guilabel``. This includes labels from text-based interfaces such as + those created using :mod:`curses` or other text-based libraries. Any label + used in the interface should be marked with this role, including button + labels, window titles, field names, menu and menu selection names, and even + values in selection lists. + + .. versionchanged:: 1.0 + An accelerator key for the GUI label can be included using an ampersand; + this will be stripped and displayed underlined in the output (example: + ``:guilabel:`&Cancel```). To include a literal ampersand, double it. + +.. rst:role:: kbd + + Mark a sequence of keystrokes. What form the key sequence takes may depend + on platform- or application-specific conventions. When there are no + relevant conventions, the names of modifier keys should be spelled out, to + improve accessibility for new users and non-native speakers. For example, + an *xemacs* key sequence may be marked like ``:kbd:`C-x C-f```, but without + reference to a specific application or platform, the same sequence should be + marked as ``:kbd:`Control-x Control-f```. + +.. rst:role:: mailheader + + The name of an RFC 822-style mail header. This markup does not imply that + the header is being used in an email message, but can be used to refer to + any header of the same "style." This is also used for headers defined by + the various MIME specifications. The header name should be entered in the + same way it would normally be found in practice, with the camel-casing + conventions being preferred where there is more than one common usage. For + example: ``:mailheader:`Content-Type```. + +.. rst:role:: makevar + + The name of a :command:`make` variable. + +.. rst:role:: manpage + + A reference to a Unix manual page including the section, e.g. + ``:manpage:`ls(1)```. Creates a hyperlink to an external site rendering the + manpage if :confval:`manpages_url` is defined. + +.. rst:role:: menuselection + + Menu selections should be marked using the ``menuselection`` role. This is + used to mark a complete sequence of menu selections, including selecting + submenus and choosing a specific operation, or any subsequence of such a + sequence. The names of individual selections should be separated by + ``-->``. + + For example, to mark the selection "Start > Programs", use this markup:: + + :menuselection:`Start --> Programs` + + When including a selection that includes some trailing indicator, such as + the ellipsis some operating systems use to indicate that the command opens a + dialog, the indicator should be omitted from the selection name. + + ``menuselection`` also supports ampersand accelerators just like + :rst:role:`guilabel`. + +.. rst:role:: mimetype + + The name of a MIME type, or a component of a MIME type (the major or minor + portion, taken alone). + +.. rst:role:: newsgroup + + The name of a Usenet newsgroup. + +.. todo:: Is this not part of the standard domain? + +.. rst:role:: program + + The name of an executable program. This may differ from the file name for + the executable for some platforms. In particular, the ``.exe`` (or other) + extension should be omitted for Windows programs. + +.. rst:role:: regexp + + A regular expression. Quotes should not be included. + +.. rst:role:: samp + + A piece of literal text, such as code. Within the contents, you can use + curly braces to indicate a "variable" part, as in :rst:role:`file`. For + example, in ``:samp:`print 1+{variable}```, the part ``variable`` would be + emphasized. + + If you don't need the "variable part" indication, use the standard + ````code```` instead. + + .. versionchanged:: 1.8 + Allowed to escape curly braces with backslash + +There is also an :rst:role:`index` role to generate index entries. + +The following roles generate external links: + +.. rst:role:: pep + + A reference to a Python Enhancement Proposal. This generates appropriate + index entries. The text "PEP *number*\ " is generated; in the HTML output, + this text is a hyperlink to an online copy of the specified PEP. You can + link to a specific section by saying ``:pep:`number#anchor```. + +.. rst:role:: rfc + + A reference to an Internet Request for Comments. This generates appropriate + index entries. The text "RFC *number*\ " is generated; in the HTML output, + this text is a hyperlink to an online copy of the specified RFC. You can + link to a specific section by saying ``:rfc:`number#anchor```. + + +Note that there are no special roles for including hyperlinks as you can use +the standard reST markup for that purpose. + + +.. _default-substitutions: + +Substitutions +------------- + +The documentation system provides three substitutions that are defined by +default. They are set in the build configuration file. + +.. describe:: |release| + + Replaced by the project release the documentation refers to. This is meant + to be the full version string including alpha/beta/release candidate tags, + e.g. ``2.5.2b3``. Set by :confval:`release`. + +.. describe:: |version| + + Replaced by the project version the documentation refers to. This is meant to + consist only of the major and minor version parts, e.g. ``2.5``, even for + version 2.5.1. Set by :confval:`version`. + +.. describe:: |today| + + Replaced by either today's date (the date on which the document is read), or + the date set in the build configuration file. Normally has the format + ``April 14, 2007``. Set by :confval:`today_fmt` and :confval:`today`. diff --git a/sphinx/doc/usage/theming.rst b/sphinx/doc/usage/theming.rst new file mode 100644 index 0000000..5ed9f1f --- /dev/null +++ b/sphinx/doc/usage/theming.rst @@ -0,0 +1,345 @@ +.. highlight:: python + +HTML +==== + +Sphinx provides a number of builders for HTML and HTML-based formats. + +Builders +-------- + +.. todo:: Populate when the 'builders' document is split up. + + +Themes +------ + +.. versionadded:: 0.6 + +.. note:: + + This section provides information about using pre-existing HTML themes. If + you wish to create your own theme, refer to :doc:`/theming`. + +Sphinx supports changing the appearance of its HTML output via *themes*. A +theme is a collection of HTML templates, stylesheet(s) and other static files. +Additionally, it has a configuration file which specifies from which theme to +inherit, which highlighting style to use, and what options exist for customizing +the theme's look and feel. + +Themes are meant to be project-unaware, so they can be used for different +projects without change. + +Using a theme +~~~~~~~~~~~~~ + +Using a :ref:`theme provided with Sphinx <builtin-themes>` is easy. Since these +do not need to be installed, you only need to set the :confval:`html_theme` +config value. For example, to enable the ``classic`` theme, add the following +to :file:`conf.py`:: + + html_theme = "classic" + +You can also set theme-specific options using the :confval:`html_theme_options` +config value. These options are generally used to change the look and feel of +the theme. For example, to place the sidebar on the right side and a black +background for the relation bar (the bar with the navigation links at the +page's top and bottom), add the following :file:`conf.py`:: + + html_theme_options = { + "rightsidebar": "true", + "relbarbgcolor": "black" + } + +If the theme does not come with Sphinx, it can be in two static forms or as a +Python package. For the static forms, either a directory (containing +:file:`theme.conf` and other needed files), or a zip file with the same +contents is supported. The directory or zipfile must be put where Sphinx can +find it; for this there is the config value :confval:`html_theme_path`. This +can be a list of directories, relative to the directory containing +:file:`conf.py`, that can contain theme directories or zip files. For example, +if you have a theme in the file :file:`blue.zip`, you can put it right in the +directory containing :file:`conf.py` and use this configuration:: + + html_theme = "blue" + html_theme_path = ["."] + +The third form is a Python package. If a theme you want to use is distributed +as a Python package, you can use it after installing + +.. code-block:: bash + + # installing theme package + $ pip install sphinxjp.themes.dotted + +Once installed, this can be used in the same manner as a directory or +zipfile-based theme:: + + html_theme = "dotted" + +For more information on the design of themes, including information about +writing your own themes, refer to :doc:`/theming`. + +.. _builtin-themes: + +Builtin themes +~~~~~~~~~~~~~~ + +.. cssclass:: longtable + ++--------------------+--------------------+ +| **Theme overview** | | ++--------------------+--------------------+ +| |alabaster| | |classic| | +| | | +| *alabaster* | *classic* | ++--------------------+--------------------+ +| |sphinxdoc| | |scrolls| | +| | | +| *sphinxdoc* | *scrolls* | ++--------------------+--------------------+ +| |agogo| | |traditional| | +| | | +| *agogo* | *traditional* | ++--------------------+--------------------+ +| |nature| | |haiku| | +| | | +| *nature* | *haiku* | ++--------------------+--------------------+ +| |pyramid| | |bizstyle| | +| | | +| *pyramid* | *bizstyle* | ++--------------------+--------------------+ + +.. |alabaster| image:: /_static/themes/alabaster.png +.. |classic| image:: /_static/themes/classic.png +.. |sphinxdoc| image:: /_static/themes/sphinxdoc.png +.. |scrolls| image:: /_static/themes/scrolls.png +.. |agogo| image:: /_static/themes/agogo.png +.. |traditional| image:: /_static/themes/traditional.png +.. |nature| image:: /_static/themes/nature.png +.. |haiku| image:: /_static/themes/haiku.png +.. |pyramid| image:: /_static/themes/pyramid.png +.. |bizstyle| image:: /_static/themes/bizstyle.png + +Sphinx comes with a selection of themes to choose from. + +.. cssclass:: clear + +These themes are: + +**basic** + This is a basically unstyled layout used as the base for the + other themes, and usable as the base for custom themes as well. The HTML + contains all important elements like sidebar and relation bar. There are + these options (which are inherited by the other themes): + + - **nosidebar** (true or false): Don't include the sidebar. Defaults to + ``False``. + + - **sidebarwidth** (int or str): Width of the sidebar in pixels. + This can be an int, which is interpreted as pixels or a valid CSS + dimension string such as '70em' or '50%'. Defaults to 230 pixels. + + - **body_min_width** (int or str): Minimal width of the document body. + This can be an int, which is interpreted as pixels or a valid CSS + dimension string such as '70em' or '50%'. Use 0 if you don't want + a width limit. Defaults may depend on the theme (often 450px). + + - **body_max_width** (int or str): Maximal width of the document body. + This can be an int, which is interpreted as pixels or a valid CSS + dimension string such as '70em' or '50%'. Use 'none' if you don't + want a width limit. Defaults may depend on the theme (often 800px). + + - **navigation_with_keys** (true or false): Allow navigating to the + previous/next page using the keyboard's left and right arrows. Defaults to + ``False``. + +**alabaster** + `Alabaster theme`_ is a modified "Kr" Sphinx theme from @kennethreitz + (especially as used in his Requests project), which was itself originally + based on @mitsuhiko's theme used for Flask & related projects. Refer to its + `installation page`_ for information on how to configure + :confval:`html_sidebars` for its use. + + .. _Alabaster theme: https://pypi.org/project/alabaster/ + .. _installation page: https://alabaster.readthedocs.io/en/latest/installation.html + +**classic** + This is the classic theme, which looks like `the Python 2 + documentation <https://docs.python.org/2/>`_. It can be customized via + these options: + + - **rightsidebar** (true or false): Put the sidebar on the right side. + Defaults to ``False``. + + - **stickysidebar** (true or false): Make the sidebar "fixed" so that it + doesn't scroll out of view for long body content. This may not work well + with all browsers. Defaults to ``False``. + + - **collapsiblesidebar** (true or false): Add an *experimental* JavaScript + snippet that makes the sidebar collapsible via a button on its side. + Defaults to ``False``. + + - **externalrefs** (true or false): Display external links differently from + internal links. Defaults to ``False``. + + There are also various color and font options that can change the color scheme + without having to write a custom stylesheet: + + - **footerbgcolor** (CSS color): Background color for the footer line. + - **footertextcolor** (CSS color): Text color for the footer line. + - **sidebarbgcolor** (CSS color): Background color for the sidebar. + - **sidebarbtncolor** (CSS color): Background color for the sidebar collapse + button (used when *collapsiblesidebar* is ``True``). + - **sidebartextcolor** (CSS color): Text color for the sidebar. + - **sidebarlinkcolor** (CSS color): Link color for the sidebar. + - **relbarbgcolor** (CSS color): Background color for the relation bar. + - **relbartextcolor** (CSS color): Text color for the relation bar. + - **relbarlinkcolor** (CSS color): Link color for the relation bar. + - **bgcolor** (CSS color): Body background color. + - **textcolor** (CSS color): Body text color. + - **linkcolor** (CSS color): Body link color. + - **visitedlinkcolor** (CSS color): Body color for visited links. + - **headbgcolor** (CSS color): Background color for headings. + - **headtextcolor** (CSS color): Text color for headings. + - **headlinkcolor** (CSS color): Link color for headings. + - **codebgcolor** (CSS color): Background color for code blocks. + - **codetextcolor** (CSS color): Default text color for code blocks, if not + set differently by the highlighting style. + + - **bodyfont** (CSS font-family): Font for normal text. + - **headfont** (CSS font-family): Font for headings. + +**sphinxdoc** + The theme originally used by this documentation. It features + a sidebar on the right side. There are currently no options beyond + *nosidebar* and *sidebarwidth*. + + .. note:: + + The Sphinx documentation now uses + `an adjusted version of the sphinxdoc theme + <https://github.com/sphinx-doc/sphinx/tree/master/doc/_themes/sphinx13>`_. + +**scrolls** + A more lightweight theme, based on `the Jinja documentation + <http://jinja.pocoo.org/>`_. The following color options are available: + + - **headerbordercolor** + - **subheadlinecolor** + - **linkcolor** + - **visitedlinkcolor** + - **admonitioncolor** + +**agogo** + A theme created by Andi Albrecht. The following options are supported: + + - **bodyfont** (CSS font family): Font for normal text. + - **headerfont** (CSS font family): Font for headings. + - **pagewidth** (CSS length): Width of the page content, default 70em. + - **documentwidth** (CSS length): Width of the document (without sidebar), + default 50em. + - **sidebarwidth** (CSS length): Width of the sidebar, default 20em. + - **rightsidebar** (true or false): Put the sidebar on the right side. + Defaults to ``True``. + - **bgcolor** (CSS color): Background color. + - **headerbg** (CSS value for "background"): background for the header area, + default a grayish gradient. + - **footerbg** (CSS value for "background"): background for the footer area, + default a light gray gradient. + - **linkcolor** (CSS color): Body link color. + - **headercolor1**, **headercolor2** (CSS color): colors for <h1> and <h2> + headings. + - **headerlinkcolor** (CSS color): Color for the backreference link in + headings. + - **textalign** (CSS *text-align* value): Text alignment for the body, default + is ``justify``. + +**nature** + A greenish theme. There are currently no options beyond + *nosidebar* and *sidebarwidth*. + +**pyramid** + A theme from the Pyramid web framework project, designed by Blaise Laflamme. + There are currently no options beyond *nosidebar* and *sidebarwidth*. + +**haiku** + A theme without sidebar inspired by the `Haiku OS user guide + <https://www.haiku-os.org/docs/userguide/en/contents.html>`_. The following + options are supported: + + - **full_logo** (true or false, default ``False``): If this is true, the + header will only show the :confval:`html_logo`. Use this for large logos. + If this is false, the logo (if present) will be shown floating right, and + the documentation title will be put in the header. + + - **textcolor**, **headingcolor**, **linkcolor**, **visitedlinkcolor**, + **hoverlinkcolor** (CSS colors): Colors for various body elements. + +**traditional** + A theme resembling the old Python documentation. There are + currently no options beyond *nosidebar* and *sidebarwidth*. + +**epub** + A theme for the epub builder. This theme tries to save visual + space which is a sparse resource on ebook readers. The following options + are supported: + + - **relbar1** (true or false, default ``True``): If this is true, the + `relbar1` block is inserted in the epub output, otherwise it is omitted. + + - **footer** (true or false, default ``True``): If this is true, the + `footer` block is inserted in the epub output, otherwise it is omitted. + +**bizstyle** + A simple bluish theme. The following options are supported + beyond *nosidebar* and *sidebarwidth*: + + - **rightsidebar** (true or false): Put the sidebar on the right side. + Defaults to ``False``. + +.. versionadded:: 1.3 + 'alabaster', 'sphinx_rtd_theme' and 'bizstyle' theme. + +.. versionchanged:: 1.3 + The 'default' theme has been renamed to 'classic'. 'default' is still + available, however it will emit a notice that it is an alias for the new + 'alabaster' theme. + +Third Party Themes +~~~~~~~~~~~~~~~~~~ + +.. cssclass:: longtable + ++--------------------+--------------------+ +| **Theme overview** | | ++--------------------+--------------------+ +| |sphinx_rtd_theme| | | +| | | +| *sphinx_rtd_theme* | | ++--------------------+--------------------+ + +.. |sphinx_rtd_theme| image:: /_static/themes/sphinx_rtd_theme.png + +There are many third-party themes available. Some of these are general use, +while others are specific to an individual project. A section of third-party +themes is listed below. Many more can be found on PyPI__, GitHub__ and +sphinx-themes.org__. + +.. cssclass:: clear + +**sphinx_rtd_theme** + `Read the Docs Sphinx Theme`_. + This is a mobile-friendly sphinx theme that was made for readthedocs.org. + View a working demo over on readthedocs.org. You can get install and options + information at `Read the Docs Sphinx Theme`_ page. + + .. _Read the Docs Sphinx Theme: https://pypi.org/project/sphinx_rtd_theme/ + + .. versionchanged:: 1.4 + **sphinx_rtd_theme** has become optional. + +.. __: https://pypi.org/search/?q=&o=&c=Framework+%3A%3A+Sphinx+%3A%3A+Theme +.. __: https://github.com/search?utf8=%E2%9C%93&q=sphinx+theme&type= +.. __: https://sphinx-themes.org/ diff --git a/sphinx/karma.conf.js b/sphinx/karma.conf.js new file mode 100644 index 0000000..d0c11aa --- /dev/null +++ b/sphinx/karma.conf.js @@ -0,0 +1,72 @@ +// Karma configuration +// Generated on Sat Jul 21 2018 22:01:48 GMT+0200 (CEST) + +module.exports = function(config) { + config.set({ + + // base path that will be used to resolve all patterns (eg. files, exclude) + basePath: '', + + + // frameworks to use + // available frameworks: https://npmjs.org/browse/keyword/karma-adapter + frameworks: ['jasmine'], + + + // list of files / patterns to load in the browser + files: [ + 'sphinx/themes/basic/static/underscore.js', + 'sphinx/themes/basic/static/jquery.js', + 'sphinx/themes/basic/static/doctools.js', + 'tests/js/*.js' + ], + + + // list of files / patterns to exclude + exclude: [ + ], + + + // preprocess matching files before serving them to the browser + // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor + preprocessors: { + }, + + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ['progress'], + + + // web server port + port: 9876, + + + // enable / disable colors in the output (reporters and logs) + colors: true, + + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: true, + + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher + browsers: ['Chrome', 'Firefox'], + + + // Continuous Integration mode + // if true, Karma captures browsers, runs the tests and exits + singleRun: false, + + // Concurrency level + // how many browser should be started simultaneous + concurrency: Infinity + }) +} diff --git a/sphinx/package-lock.json b/sphinx/package-lock.json new file mode 100644 index 0000000..4691270 --- /dev/null +++ b/sphinx/package-lock.json @@ -0,0 +1,1237 @@ +{ + "name": "sphinx", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "anymatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.0.3.tgz", + "integrity": "sha512-c6IvoeBECQlMVuYUjSwimnhmztImpErfxJzWZhIQinIvQWoGOnB0dLIgifbPHQt5heS6mNlaZG16f06H3C8t1g==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true + }, + "bluebird": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "chokidar": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.0.2.tgz", + "integrity": "sha512-c4PR2egjNjI1um6bamCQ6bUNPDiyofNQruHvKgHQ4gDUP/ITSVSzNsiI5OWtHOsX323i5ha/kk4YmOZ1Ktg7KA==", + "dev": true, + "requires": { + "anymatch": "^3.0.1", + "braces": "^3.0.2", + "fsevents": "^2.0.6", + "glob-parent": "^5.0.0", + "is-binary-path": "^2.1.0", + "is-glob": "^4.0.1", + "normalize-path": "^3.0.0", + "readdirp": "^3.1.1" + } + }, + "colors": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "core-js": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.1.4.tgz", + "integrity": "sha512-YNZN8lt82XIMLnLirj9MhKDFZHalwzzrL9YLt6eb0T5D0EDl4IQ90IGkua8mHbnxNrkj1d8hbdizMc0Qmg1WnQ==", + "dev": true + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "date-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.0.0.tgz", + "integrity": "sha512-M6UqVvZVgFYqZL1SfHsRGIQSz3ZL+qgbsV5Lp1Vj61LZVYuEwcMXYay7DRDtYs2HQQBK5hQtQ0fD9aEJ89V0LA==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "engine.io": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", + "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~3.3.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "engine.io-client": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", + "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "dev": true + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, + "follow-redirects": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", + "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", + "dev": true, + "requires": { + "debug": "^3.2.6" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.7.tgz", + "integrity": "sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ==", + "dev": true, + "optional": true + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", + "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "graceful-fs": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", + "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==", + "dev": true + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "dev": true, + "requires": { + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "jasmine-core": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.4.0.tgz", + "integrity": "sha512-HU/YxV4i6GcmiH4duATwAbJQMlE0MsDIR5XmSVxURxKHn3aGAdbY1/ZJFmVRbKtnLwIxxMJD7gYaPsypcbYimg==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "karma": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/karma/-/karma-4.2.0.tgz", + "integrity": "sha512-fmCuxN1rwJxTdZfOXK5LjlmS4Ana/OvzNMpkyLL/TLE8hmgSkpVpMYQ7RTVa8TNKRVQDZNl5W1oF5cfKfgIMlA==", + "dev": true, + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "braces": "^3.0.2", + "chokidar": "^3.0.0", + "colors": "^1.1.0", + "connect": "^3.6.0", + "core-js": "^3.1.3", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "flatted": "^2.0.0", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^4.17.11", + "log4js": "^4.0.0", + "mime": "^2.3.1", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", + "socket.io": "2.1.1", + "source-map": "^0.6.1", + "tmp": "0.0.33", + "useragent": "2.3.0" + } + }, + "karma-chrome-launcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.0.0.tgz", + "integrity": "sha512-u/PnVgDOP97AUe/gJeABlC6Wa6aQ83MZsm0JgsJQ5bGQ9XcXON/7b2aRhl59A62Zom+q3PFveBkczc7E1RT7TA==", + "dev": true, + "requires": { + "which": "^1.2.1" + } + }, + "karma-firefox-launcher": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.1.0.tgz", + "integrity": "sha512-LbZ5/XlIXLeQ3cqnCbYLn+rOVhuMIK9aZwlP6eOLGzWdo1UVp7t6CN3DP4SafiRLjexKwHeKHDm0c38Mtd3VxA==", + "dev": true + }, + "karma-jasmine": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-2.0.1.tgz", + "integrity": "sha512-iuC0hmr9b+SNn1DaUD2QEYtUxkS1J+bSJSn7ejdEexs7P8EYvA1CWkEdrDQ+8jVH3AgWlCNwjYsT1chjcNW9lA==", + "dev": true, + "requires": { + "jasmine-core": "^3.3" + } + }, + "lodash": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", + "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", + "dev": true + }, + "log4js": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.5.1.tgz", + "integrity": "sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw==", + "dev": true, + "requires": { + "date-format": "^2.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.0", + "rfdc": "^1.1.4", + "streamroller": "^1.0.6" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "picomatch": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz", + "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readdirp": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.1.1.tgz", + "integrity": "sha512-XXdSXZrQuvqoETj50+JAitxz1UPdt5dupjT6T5nVB+WvjMv2XKYj+s7hPeAVCXvmJrL36O4YYyWlIC3an2ePiQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "rfdc": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", + "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "socket.io": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", + "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "dev": true, + "requires": { + "debug": "~3.1.0", + "engine.io": "~3.2.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.1.1", + "socket.io-parser": "~3.2.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", + "dev": true + }, + "socket.io-client": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", + "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "socket.io-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "streamroller": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.6.tgz", + "integrity": "sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg==", + "dev": true, + "requires": { + "async": "^2.6.2", + "date-format": "^2.0.0", + "debug": "^3.2.6", + "fs-extra": "^7.0.1", + "lodash": "^4.17.14" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "useragent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "dev": true, + "requires": { + "lru-cache": "4.1.x", + "tmp": "0.0.x" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + } + } +} diff --git a/sphinx/package.json b/sphinx/package.json new file mode 100644 index 0000000..eeecd37 --- /dev/null +++ b/sphinx/package.json @@ -0,0 +1,20 @@ +{ + "name": "sphinx", + "scripts": { + "test": "./node_modules/.bin/karma start --browsers Firefox --single-run" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/sphinx-doc/sphinx.git" + }, + "bugs": { + "url": "https://github.com/sphinx-doc/sphinx/issues" + }, + "devDependencies": { + "jasmine-core": "^3.4.0", + "karma": "^4.0.0", + "karma-chrome-launcher": "^3.0.0", + "karma-firefox-launcher": "^1.1.0", + "karma-jasmine": "^2.0.0" + } +} diff --git a/sphinx/setup.cfg b/sphinx/setup.cfg new file mode 100644 index 0000000..21e1581 --- /dev/null +++ b/sphinx/setup.cfg @@ -0,0 +1,77 @@ +[metadata] +license_file = LICENSE + +[egg_info] +tag_build = .dev +tag_date = true + +[aliases] +release = egg_info -Db '' +upload = upload --sign --identity=36580288 + +[build_sphinx] +warning-is-error = 1 + +[extract_messages] +mapping_file = babel.cfg +output_file = sphinx/locale/sphinx.pot +keywords = _ __ l_ lazy_gettext + +[update_catalog] +input_file = sphinx/locale/sphinx.pot +domain = sphinx +output_dir = sphinx/locale/ + +[compile_catalog] +domain = sphinx +directory = sphinx/locale/ + +[flake8] +max-line-length = 95 +ignore = E116,E241,E251,E741,W504,I101 +exclude = .git,.tox,.venv,tests/*,build/*,doc/_build/*,sphinx/search/*,doc/usage/extensions/example*.py +application-import-names = sphinx +import-order-style = smarkets + +[flake8:local-plugins] +extension = + X101 = utils.checks:sphinx_has_header +paths = + . + +[mypy] +python_version = 3.5 +disallow_incomplete_defs = True +show_column_numbers = True +show_error_context = True +ignore_missing_imports = True +follow_imports = skip +check_untyped_defs = True +warn_unused_ignores = True +strict_optional = False + +[tool:pytest] +filterwarnings = + all + ignore::DeprecationWarning:docutils.io +markers = + sphinx + apidoc + setup_command + test_params +testpaths = tests + +[coverage:run] +branch = True +parallel = True +source = sphinx + +[coverage:report] +exclude_lines = + # Have to re-enable the standard pragma + pragma: no cover + # Don't complain if tests don't hit defensive assertion code: + raise NotImplementedError + # Don't complain if non-runnable code isn't run: + if __name__ == .__main__.: +ignore_errors = True diff --git a/sphinx/setup.py b/sphinx/setup.py new file mode 100644 index 0000000..a427d54 --- /dev/null +++ b/sphinx/setup.py @@ -0,0 +1,246 @@ +import os +import sys +from distutils import log +from io import StringIO + +from setuptools import find_packages, setup + +import sphinx + +with open('README.rst') as f: + long_desc = f.read() + +if sys.version_info < (3, 5): + print('ERROR: Sphinx requires at least Python 3.5 to run.') + sys.exit(1) + +install_requires = [ + 'sphinxcontrib-applehelp', + 'sphinxcontrib-devhelp', + 'sphinxcontrib-jsmath', + 'sphinxcontrib-htmlhelp', + 'sphinxcontrib-serializinghtml', + 'sphinxcontrib-qthelp', + 'Jinja2>=2.3', + 'Pygments>=2.0', + 'docutils>=0.12', + 'snowballstemmer>=1.1', + 'babel>=1.3', + 'alabaster>=0.7,<0.8', + 'imagesize', + 'requests>=2.5.0', + 'setuptools', + 'packaging', +] + +extras_require = { + # Environment Marker works for wheel 0.24 or later + ':sys_platform=="win32"': [ + 'colorama>=0.3.5', + ], + 'docs': [ + 'sphinxcontrib-websupport', + ], + 'lint': [ + 'flake8>=3.5.0', + 'flake8-import-order', + 'mypy>=0.770', + 'docutils-stubs', + ], + 'test': [ + 'pytest', + 'pytest-cov', + 'html5lib', + 'typed_ast', # for py35-37 + 'cython', + ], +} + +# Provide a "compile_catalog" command that also creates the translated +# JavaScript files if Babel is available. + +cmdclass = {} + + +class Tee: + def __init__(self, stream): + self.stream = stream + self.buffer = StringIO() + + def write(self, s): + self.stream.write(s) + self.buffer.write(s) + + def flush(self): + self.stream.flush() + + +try: + from babel.messages.pofile import read_po + from babel.messages.frontend import compile_catalog + from json import dump +except ImportError: + pass +else: + class compile_catalog_plusjs(compile_catalog): + """ + An extended command that writes all message strings that occur in + JavaScript files to a JavaScript file along with the .mo file. + + Unfortunately, babel's setup command isn't built very extensible, so + most of the run() code is duplicated here. + """ + + def run(self): + try: + sys.stderr = Tee(sys.stderr) + compile_catalog.run(self) + finally: + if sys.stderr.buffer.getvalue(): + print("Compiling failed.") + sys.exit(1) + + if isinstance(self.domain, list): + for domain in self.domain: + self._run_domain_js(domain) + else: + self._run_domain_js(self.domain) + + def _run_domain_js(self, domain): + po_files = [] + js_files = [] + + if not self.input_file: + if self.locale: + po_files.append((self.locale, + os.path.join(self.directory, self.locale, + 'LC_MESSAGES', + domain + '.po'))) + js_files.append(os.path.join(self.directory, self.locale, + 'LC_MESSAGES', + domain + '.js')) + else: + for locale in os.listdir(self.directory): + po_file = os.path.join(self.directory, locale, + 'LC_MESSAGES', + domain + '.po') + if os.path.exists(po_file): + po_files.append((locale, po_file)) + js_files.append(os.path.join(self.directory, locale, + 'LC_MESSAGES', + domain + '.js')) + else: + po_files.append((self.locale, self.input_file)) + if self.output_file: + js_files.append(self.output_file) + else: + js_files.append(os.path.join(self.directory, self.locale, + 'LC_MESSAGES', + domain + '.js')) + + for js_file, (locale, po_file) in zip(js_files, po_files): + with open(po_file) as infile: + catalog = read_po(infile, locale) + + if catalog.fuzzy and not self.use_fuzzy: + continue + + log.info('writing JavaScript strings in catalog %r to %r', + po_file, js_file) + + jscatalog = {} + for message in catalog: + if any(x[0].endswith(('.js', '.js_t', '.html')) + for x in message.locations): + msgid = message.id + if isinstance(msgid, (list, tuple)): + msgid = msgid[0] + jscatalog[msgid] = message.string + + with open(js_file, 'wt') as outfile: + outfile.write('Documentation.addTranslations(') + dump({ + 'messages': jscatalog, + 'plural_expr': catalog.plural_expr, + 'locale': str(catalog.locale) + }, outfile, sort_keys=True) + outfile.write(');') + + cmdclass['compile_catalog'] = compile_catalog_plusjs + + +setup( + name='Sphinx', + version=sphinx.__version__, + url='http://sphinx-doc.org/', + download_url='https://pypi.org/project/Sphinx/', + license='BSD', + author='Georg Brandl', + author_email='georg@python.org', + description='Python documentation generator', + long_description=long_desc, + long_description_content_type='text/x-rst', + project_urls={ + "Code": "https://github.com/sphinx-doc/sphinx", + "Issue tracker": "https://github.com/sphinx-doc/sphinx/issues", + }, + zip_safe=False, + classifiers=[ + 'Development Status :: 5 - Production/Stable', + 'Environment :: Console', + 'Environment :: Web Environment', + 'Intended Audience :: Developers', + 'Intended Audience :: Education', + 'Intended Audience :: End Users/Desktop', + 'Intended Audience :: Science/Research', + 'Intended Audience :: System Administrators', + 'License :: OSI Approved :: BSD License', + 'Operating System :: OS Independent', + 'Programming Language :: Python', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3 :: Only', + 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: Implementation :: CPython', + 'Programming Language :: Python :: Implementation :: PyPy', + 'Framework :: Setuptools Plugin', + 'Framework :: Sphinx', + 'Framework :: Sphinx :: Extension', + 'Framework :: Sphinx :: Theme', + 'Topic :: Documentation', + 'Topic :: Documentation :: Sphinx', + 'Topic :: Internet :: WWW/HTTP :: Site Management', + 'Topic :: Printing', + 'Topic :: Software Development', + 'Topic :: Software Development :: Documentation', + 'Topic :: Text Processing', + 'Topic :: Text Processing :: General', + 'Topic :: Text Processing :: Indexing', + 'Topic :: Text Processing :: Markup', + 'Topic :: Text Processing :: Markup :: HTML', + 'Topic :: Text Processing :: Markup :: LaTeX', + 'Topic :: Utilities', + ], + platforms='any', + packages=find_packages(exclude=['tests', 'utils']), + package_data = { + 'sphinx': ['py.typed'], + }, + include_package_data=True, + entry_points={ + 'console_scripts': [ + 'sphinx-build = sphinx.cmd.build:main', + 'sphinx-quickstart = sphinx.cmd.quickstart:main', + 'sphinx-apidoc = sphinx.ext.apidoc:main', + 'sphinx-autogen = sphinx.ext.autosummary.generate:main', + ], + 'distutils.commands': [ + 'build_sphinx = sphinx.setup_command:BuildDoc', + ], + }, + python_requires=">=3.5", + install_requires=install_requires, + extras_require=extras_require, + cmdclass=cmdclass, +) diff --git a/sphinx/sphinx/__init__.py b/sphinx/sphinx/__init__.py new file mode 100644 index 0000000..3aecfbf --- /dev/null +++ b/sphinx/sphinx/__init__.py @@ -0,0 +1,63 @@ +""" + Sphinx + ~~~~~~ + + The Sphinx documentation toolchain. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +# Keep this file executable as-is in Python 3! +# (Otherwise getting the version out of it from setup.py is impossible.) + +import os +import subprocess +import warnings +from os import path +from subprocess import PIPE + +from .deprecation import RemovedInNextVersionWarning + +if False: + # For type annotation + from typing import Any # NOQA + + +# by default, all DeprecationWarning under sphinx package will be emit. +# Users can avoid this by using environment variable: PYTHONWARNINGS= +if 'PYTHONWARNINGS' not in os.environ: + warnings.filterwarnings('default', category=RemovedInNextVersionWarning) +# docutils.io using mode='rU' for open +warnings.filterwarnings('ignore', "'U' mode is deprecated", + DeprecationWarning, module='docutils.io') + +__version__ = '3.1.0+' +__released__ = '3.1.0' # used when Sphinx builds its own docs + +#: Version info for better programmatic use. +#: +#: A tuple of five elements; for Sphinx version 1.2.1 beta 3 this would be +#: ``(1, 2, 1, 'beta', 3)``. The fourth element can be one of: ``alpha``, +#: ``beta``, ``rc``, ``final``. ``final`` always has 0 as the last element. +#: +#: .. versionadded:: 1.2 +#: Before version 1.2, check the string ``sphinx.__version__``. +version_info = (3, 1, 0, 'beta', 0) + +package_dir = path.abspath(path.dirname(__file__)) + +__display_version__ = __version__ # used for command line version +if __version__.endswith('+'): + # try to find out the commit hash if checked out from git, and append + # it to __version__ (since we use this value from setup.py, it gets + # automatically propagated to an installed copy as well) + __display_version__ = __version__ + __version__ = __version__[:-1] # remove '+' for PEP-440 version spec. + try: + ret = subprocess.run(['git', 'show', '-s', '--pretty=format:%h'], + stdout=PIPE, stderr=PIPE) + if ret.stdout: + __display_version__ += '/' + ret.stdout.decode('ascii').strip() + except Exception: + pass diff --git a/sphinx/sphinx/__main__.py b/sphinx/sphinx/__main__.py new file mode 100644 index 0000000..5da4090 --- /dev/null +++ b/sphinx/sphinx/__main__.py @@ -0,0 +1,15 @@ +""" + sphinx.__main__ + ~~~~~~~~~~~~~~~ + + The Sphinx documentation toolchain. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import sys + +from sphinx.cmd.build import main + +sys.exit(main(sys.argv[1:])) diff --git a/sphinx/sphinx/addnodes.py b/sphinx/sphinx/addnodes.py new file mode 100644 index 0000000..847a6d7 --- /dev/null +++ b/sphinx/sphinx/addnodes.py @@ -0,0 +1,390 @@ +""" + sphinx.addnodes + ~~~~~~~~~~~~~~~ + + Additional docutils nodes. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import warnings +from typing import Any, Dict, List, Sequence + +from docutils import nodes +from docutils.nodes import Element, Node + +from sphinx.deprecation import RemovedInSphinx40Warning + +if False: + # For type annotation + from sphinx.application import Sphinx + + +class translatable(nodes.Node): + """Node which supports translation. + + The translation goes forward with following steps: + + 1. Preserve original translatable messages + 2. Apply translated messages from message catalog + 3. Extract preserved messages (for gettext builder) + + The translatable nodes MUST preserve original messages. + And these messages should not be overridden at applying step. + Because they are used at final step; extraction. + """ + + def preserve_original_messages(self) -> None: + """Preserve original translatable messages.""" + raise NotImplementedError + + def apply_translated_message(self, original_message: str, translated_message: str) -> None: + """Apply translated message.""" + raise NotImplementedError + + def extract_original_messages(self) -> Sequence[str]: + """Extract translation messages. + + :returns: list of extracted messages or messages generator + """ + raise NotImplementedError + + +class not_smartquotable: + """A node which does not support smart-quotes.""" + support_smartquotes = False + + +class toctree(nodes.General, nodes.Element, translatable): + """Node for inserting a "TOC tree".""" + + def preserve_original_messages(self) -> None: + # toctree entries + rawentries = self.setdefault('rawentries', []) + for title, docname in self['entries']: + if title: + rawentries.append(title) + + # :caption: option + if self.get('caption'): + self['rawcaption'] = self['caption'] + + def apply_translated_message(self, original_message: str, translated_message: str) -> None: + # toctree entries + for i, (title, docname) in enumerate(self['entries']): + if title == original_message: + self['entries'][i] = (translated_message, docname) + + # :caption: option + if self.get('rawcaption') == original_message: + self['caption'] = translated_message + + def extract_original_messages(self) -> List[str]: + messages = [] # type: List[str] + + # toctree entries + messages.extend(self.get('rawentries', [])) + + # :caption: option + if 'rawcaption' in self: + messages.append(self['rawcaption']) + return messages + + +# domain-specific object descriptions (class, function etc.) + +class desc(nodes.Admonition, nodes.Element): + """Node for object descriptions. + + This node is similar to a "definition list" with one definition. It + contains one or more ``desc_signature`` and a ``desc_content``. + """ + + +class desc_signature(nodes.Part, nodes.Inline, nodes.TextElement): + """Node for object signatures. + + The "term" part of the custom Sphinx definition list. + + As default the signature is a single line signature, + but set ``is_multiline = True`` to describe a multi-line signature. + In that case all child nodes must be ``desc_signature_line`` nodes. + """ + + +class desc_signature_line(nodes.Part, nodes.Inline, nodes.FixedTextElement): + """Node for a line in a multi-line object signatures. + + It should only be used in a ``desc_signature`` with ``is_multiline`` set. + Set ``add_permalink = True`` for the line that should get the permalink. + """ + sphinx_line_type = '' + + +# nodes to use within a desc_signature or desc_signature_line + +class desc_addname(nodes.Part, nodes.Inline, nodes.FixedTextElement): + """Node for additional name parts (module name, class name).""" + + +# compatibility alias +desc_classname = desc_addname + + +class desc_type(nodes.Part, nodes.Inline, nodes.FixedTextElement): + """Node for return types or object type names.""" + + +class desc_returns(desc_type): + """Node for a "returns" annotation (a la -> in Python).""" + def astext(self) -> str: + return ' -> ' + super().astext() + + +class desc_name(nodes.Part, nodes.Inline, nodes.FixedTextElement): + """Node for the main object name.""" + + +class desc_parameterlist(nodes.Part, nodes.Inline, nodes.FixedTextElement): + """Node for a general parameter list.""" + child_text_separator = ', ' + + +class desc_parameter(nodes.Part, nodes.Inline, nodes.FixedTextElement): + """Node for a single parameter.""" + + +class desc_optional(nodes.Part, nodes.Inline, nodes.FixedTextElement): + """Node for marking optional parts of the parameter list.""" + child_text_separator = ', ' + + def astext(self) -> str: + return '[' + super().astext() + ']' + + +class desc_annotation(nodes.Part, nodes.Inline, nodes.FixedTextElement): + """Node for signature annotations (not Python 3-style annotations).""" + + +class desc_content(nodes.General, nodes.Element): + """Node for object description content. + + This is the "definition" part of the custom Sphinx definition list. + """ + + +class desc_sig_element(nodes.inline): + """Common parent class of nodes for inline text of a signature.""" + classes = [] # type: List[str] + + def __init__(self, rawsource: str = '', text: str = '', + *children: Element, **attributes: Any) -> None: + super().__init__(rawsource, text, *children, **attributes) + self['classes'].extend(self.classes) + + +class desc_sig_name(desc_sig_element): + """Node for a name in a signature.""" + classes = ["n"] + + +class desc_sig_operator(desc_sig_element): + """Node for an operator in a signature.""" + classes = ["o"] + + +class desc_sig_punctuation(desc_sig_element): + """Node for a punctuation in a signature.""" + classes = ["p"] + + +# new admonition-like constructs + +class versionmodified(nodes.Admonition, nodes.TextElement): + """Node for version change entries. + + Currently used for "versionadded", "versionchanged" and "deprecated" + directives. + """ + + +class seealso(nodes.Admonition, nodes.Element): + """Custom "see also" admonition.""" + + +class productionlist(nodes.Admonition, nodes.Element): + """Node for grammar production lists. + + Contains ``production`` nodes. + """ + + +class production(nodes.Part, nodes.Inline, nodes.FixedTextElement): + """Node for a single grammar production rule.""" + + +# other directive-level nodes + +class index(nodes.Invisible, nodes.Inline, nodes.TextElement): + """Node for index entries. + + This node is created by the ``index`` directive and has one attribute, + ``entries``. Its value is a list of 5-tuples of ``(entrytype, entryname, + target, ignored, key)``. + + *entrytype* is one of "single", "pair", "double", "triple". + + *key* is categorization characters (usually a single character) for + general index page. For the details of this, please see also: + :rst:dir:`glossary` and issue #2320. + """ + + +class centered(nodes.Part, nodes.TextElement): + """Deprecated.""" + + +class acks(nodes.Element): + """Special node for "acks" lists.""" + + +class hlist(nodes.Element): + """Node for "horizontal lists", i.e. lists that should be compressed to + take up less vertical space. + """ + + +class hlistcol(nodes.Element): + """Node for one column in a horizontal list.""" + + +class compact_paragraph(nodes.paragraph): + """Node for a compact paragraph (which never makes a <p> node).""" + + +class glossary(nodes.Element): + """Node to insert a glossary.""" + + +class only(nodes.Element): + """Node for "only" directives (conditional inclusion based on tags).""" + + +# meta-information nodes + +class start_of_file(nodes.Element): + """Node to mark start of a new file, used in the LaTeX builder only.""" + + +class highlightlang(nodes.Element): + """Inserted to set the highlight language and line number options for + subsequent code blocks. + """ + + +class tabular_col_spec(nodes.Element): + """Node for specifying tabular columns, used for LaTeX output.""" + + +class meta(nodes.Special, nodes.PreBibliographic, nodes.Element): + """Node for meta directive -- same as docutils' standard meta node, + but pickleable. + """ + rawcontent = None + + +# inline nodes + +class pending_xref(nodes.Inline, nodes.Element): + """Node for cross-references that cannot be resolved without complete + information about all documents. + + These nodes are resolved before writing output, in + BuildEnvironment.resolve_references. + """ + + +class number_reference(nodes.reference): + """Node for number references, similar to pending_xref.""" + + +class download_reference(nodes.reference): + """Node for download references, similar to pending_xref.""" + + +class literal_emphasis(nodes.emphasis, not_smartquotable): + """Node that behaves like `emphasis`, but further text processors are not + applied (e.g. smartypants for HTML output). + """ + + +class literal_strong(nodes.strong, not_smartquotable): + """Node that behaves like `strong`, but further text processors are not + applied (e.g. smartypants for HTML output). + """ + + +class abbreviation(nodes.abbreviation): + """Node for abbreviations with explanations. + + .. deprecated:: 2.0 + """ + + def __init__(self, rawsource: str = '', text: str = '', + *children: Node, **attributes: Any) -> None: + warnings.warn("abbrevition node for Sphinx was replaced by docutils'.", + RemovedInSphinx40Warning, stacklevel=2) + + super().__init__(rawsource, text, *children, **attributes) + + +class manpage(nodes.Inline, nodes.FixedTextElement): + """Node for references to manpages.""" + + +def setup(app: "Sphinx") -> Dict[str, Any]: + app.add_node(toctree) + app.add_node(desc) + app.add_node(desc_signature) + app.add_node(desc_signature_line) + app.add_node(desc_addname) + app.add_node(desc_type) + app.add_node(desc_returns) + app.add_node(desc_name) + app.add_node(desc_parameterlist) + app.add_node(desc_parameter) + app.add_node(desc_optional) + app.add_node(desc_annotation) + app.add_node(desc_content) + app.add_node(desc_sig_name) + app.add_node(desc_sig_operator) + app.add_node(desc_sig_punctuation) + app.add_node(versionmodified) + app.add_node(seealso) + app.add_node(productionlist) + app.add_node(production) + app.add_node(index) + app.add_node(centered) + app.add_node(acks) + app.add_node(hlist) + app.add_node(hlistcol) + app.add_node(compact_paragraph) + app.add_node(glossary) + app.add_node(only) + app.add_node(start_of_file) + app.add_node(highlightlang) + app.add_node(tabular_col_spec) + app.add_node(meta) + app.add_node(pending_xref) + app.add_node(number_reference) + app.add_node(download_reference) + app.add_node(literal_emphasis) + app.add_node(literal_strong) + app.add_node(manpage) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/application.py b/sphinx/sphinx/application.py new file mode 100644 index 0000000..d2fd776 --- /dev/null +++ b/sphinx/sphinx/application.py @@ -0,0 +1,1191 @@ +""" + sphinx.application + ~~~~~~~~~~~~~~~~~~ + + Sphinx application class and extensibility interface. + + Gracefully adapted from the TextPress system by Armin. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import os +import pickle +import platform +import sys +import warnings +from collections import deque +from io import StringIO +from os import path +from typing import Any, Callable, Dict, IO, List, Tuple, Union + +from docutils import nodes +from docutils.nodes import Element, TextElement +from docutils.parsers.rst import Directive, roles +from docutils.transforms import Transform +from pygments.lexer import Lexer + +import sphinx +from sphinx import package_dir, locale +from sphinx.config import Config +from sphinx.deprecation import RemovedInSphinx40Warning +from sphinx.domains import Domain, Index +from sphinx.environment import BuildEnvironment +from sphinx.environment.collectors import EnvironmentCollector +from sphinx.errors import ApplicationError, ConfigError, VersionRequirementError +from sphinx.events import EventManager +from sphinx.extension import Extension +from sphinx.highlighting import lexer_classes, lexers +from sphinx.locale import __ +from sphinx.project import Project +from sphinx.registry import SphinxComponentRegistry +from sphinx.roles import XRefRole +from sphinx.theming import Theme +from sphinx.util import docutils +from sphinx.util import logging +from sphinx.util import progress_message +from sphinx.util.build_phase import BuildPhase +from sphinx.util.console import bold # type: ignore +from sphinx.util.i18n import CatalogRepository +from sphinx.util.logging import prefixed_warnings +from sphinx.util.osutil import abspath, ensuredir, relpath +from sphinx.util.tags import Tags +from sphinx.util.typing import RoleFunction, TitleGetter + +if False: + # For type annotation + from docutils.nodes import Node # NOQA + from typing import Type # for python3.5.1 + from sphinx.builders import Builder + + +builtin_extensions = ( + 'sphinx.addnodes', + 'sphinx.builders.changes', + 'sphinx.builders.epub3', + 'sphinx.builders.dirhtml', + 'sphinx.builders.dummy', + 'sphinx.builders.gettext', + 'sphinx.builders.html', + 'sphinx.builders.latex', + 'sphinx.builders.linkcheck', + 'sphinx.builders.manpage', + 'sphinx.builders.singlehtml', + 'sphinx.builders.texinfo', + 'sphinx.builders.text', + 'sphinx.builders.xml', + 'sphinx.config', + 'sphinx.domains.c', + 'sphinx.domains.changeset', + 'sphinx.domains.citation', + 'sphinx.domains.cpp', + 'sphinx.domains.index', + 'sphinx.domains.javascript', + 'sphinx.domains.math', + 'sphinx.domains.python', + 'sphinx.domains.rst', + 'sphinx.domains.std', + 'sphinx.directives', + 'sphinx.directives.code', + 'sphinx.directives.other', + 'sphinx.directives.patches', + 'sphinx.extension', + 'sphinx.parsers', + 'sphinx.registry', + 'sphinx.roles', + 'sphinx.transforms', + 'sphinx.transforms.compact_bullet_list', + 'sphinx.transforms.i18n', + 'sphinx.transforms.references', + 'sphinx.transforms.post_transforms', + 'sphinx.transforms.post_transforms.code', + 'sphinx.transforms.post_transforms.images', + 'sphinx.util.compat', + 'sphinx.versioning', + # collectors should be loaded by specific order + 'sphinx.environment.collectors.dependencies', + 'sphinx.environment.collectors.asset', + 'sphinx.environment.collectors.metadata', + 'sphinx.environment.collectors.title', + 'sphinx.environment.collectors.toctree', + # 1st party extensions + 'sphinxcontrib.applehelp', + 'sphinxcontrib.devhelp', + 'sphinxcontrib.htmlhelp', + 'sphinxcontrib.serializinghtml', + 'sphinxcontrib.qthelp', + # Strictly, alabaster theme is not a builtin extension, + # but it is loaded automatically to use it as default theme. + 'alabaster', +) + +ENV_PICKLE_FILENAME = 'environment.pickle' + +logger = logging.getLogger(__name__) + + +class Sphinx: + """The main application class and extensibility interface. + + :ivar srcdir: Directory containing source. + :ivar confdir: Directory containing ``conf.py``. + :ivar doctreedir: Directory for storing pickled doctrees. + :ivar outdir: Directory for storing build documents. + """ + + def __init__(self, srcdir: str, confdir: str, outdir: str, doctreedir: str, + buildername: str, confoverrides: Dict = None, + status: IO = sys.stdout, warning: IO = sys.stderr, + freshenv: bool = False, warningiserror: bool = False, tags: List[str] = None, + verbosity: int = 0, parallel: int = 0, keep_going: bool = False) -> None: + self.phase = BuildPhase.INITIALIZATION + self.verbosity = verbosity + self.extensions = {} # type: Dict[str, Extension] + self.builder = None # type: Builder + self.env = None # type: BuildEnvironment + self.project = None # type: Project + self.registry = SphinxComponentRegistry() + self.html_themes = {} # type: Dict[str, str] + + # validate provided directories + self.srcdir = abspath(srcdir) + self.outdir = abspath(outdir) + self.doctreedir = abspath(doctreedir) + self.confdir = confdir + if self.confdir: # confdir is optional + self.confdir = abspath(self.confdir) + if not path.isfile(path.join(self.confdir, 'conf.py')): + raise ApplicationError(__("config directory doesn't contain a " + "conf.py file (%s)") % confdir) + + if not path.isdir(self.srcdir): + raise ApplicationError(__('Cannot find source directory (%s)') % + self.srcdir) + + if path.exists(self.outdir) and not path.isdir(self.outdir): + raise ApplicationError(__('Output directory (%s) is not a directory') % + self.srcdir) + + if self.srcdir == self.outdir: + raise ApplicationError(__('Source directory and destination ' + 'directory cannot be identical')) + + self.parallel = parallel + + if status is None: + self._status = StringIO() # type: IO + self.quiet = True + else: + self._status = status + self.quiet = False + + if warning is None: + self._warning = StringIO() # type: IO + else: + self._warning = warning + self._warncount = 0 + self.keep_going = warningiserror and keep_going + if self.keep_going: + self.warningiserror = False + else: + self.warningiserror = warningiserror + logging.setup(self, self._status, self._warning) + + self.events = EventManager(self) + + # keep last few messages for traceback + # This will be filled by sphinx.util.logging.LastMessagesWriter + self.messagelog = deque(maxlen=10) # type: deque + + # say hello to the world + logger.info(bold(__('Running Sphinx v%s') % sphinx.__display_version__)) + + # notice for parallel build on macOS and py38+ + if sys.version_info > (3, 8) and platform.system() == 'Darwin' and parallel > 1: + logger.info(bold(__("For security reason, parallel mode is disabled on macOS and " + "python3.8 and above. For more details, please read " + "https://github.com/sphinx-doc/sphinx/issues/6803"))) + + # status code for command-line application + self.statuscode = 0 + + # read config + self.tags = Tags(tags) + if self.confdir is None: + self.config = Config({}, confoverrides or {}) + else: + self.config = Config.read(self.confdir, confoverrides or {}, self.tags) + + # initialize some limited config variables before initialize i18n and loading + # extensions + self.config.pre_init_values() + + # set up translation infrastructure + self._init_i18n() + + # check the Sphinx version if requested + if self.config.needs_sphinx and self.config.needs_sphinx > sphinx.__display_version__: + raise VersionRequirementError( + __('This project needs at least Sphinx v%s and therefore cannot ' + 'be built with this version.') % self.config.needs_sphinx) + + # set confdir to srcdir if -C given (!= no confdir); a few pieces + # of code expect a confdir to be set + if self.confdir is None: + self.confdir = self.srcdir + + # load all built-in extension modules + for extension in builtin_extensions: + self.setup_extension(extension) + + # load all user-given extension modules + for extension in self.config.extensions: + self.setup_extension(extension) + + # preload builder module (before init config values) + self.preload_builder(buildername) + + if not path.isdir(outdir): + with progress_message(__('making output directory')): + ensuredir(outdir) + + # the config file itself can be an extension + if self.config.setup: + prefix = __('while setting up extension %s:') % "conf.py" + with prefixed_warnings(prefix): + if callable(self.config.setup): + self.config.setup(self) + else: + raise ConfigError( + __("'setup' as currently defined in conf.py isn't a Python callable. " + "Please modify its definition to make it a callable function. " + "This is needed for conf.py to behave as a Sphinx extension.") + ) + + # now that we know all config values, collect them from conf.py + self.config.init_values() + self.events.emit('config-inited', self.config) + + # create the project + self.project = Project(self.srcdir, self.config.source_suffix) + # create the builder + self.builder = self.create_builder(buildername) + # set up the build environment + self._init_env(freshenv) + # set up the builder + self._init_builder() + + def _init_i18n(self) -> None: + """Load translated strings from the configured localedirs if enabled in + the configuration. + """ + if self.config.language is None: + self.translator, has_translation = locale.init([], None) + else: + logger.info(bold(__('loading translations [%s]... ') % self.config.language), + nonl=True) + + # compile mo files if sphinx.po file in user locale directories are updated + repo = CatalogRepository(self.srcdir, self.config.locale_dirs, + self.config.language, self.config.source_encoding) + for catalog in repo.catalogs: + if catalog.domain == 'sphinx' and catalog.is_outdated(): + catalog.write_mo(self.config.language) + + locale_dirs = [None, path.join(package_dir, 'locale')] + list(repo.locale_dirs) + self.translator, has_translation = locale.init(locale_dirs, self.config.language) + if has_translation or self.config.language == 'en': + # "en" never needs to be translated + logger.info(__('done')) + else: + logger.info(__('not available for built-in messages')) + + def _init_env(self, freshenv: bool) -> None: + filename = path.join(self.doctreedir, ENV_PICKLE_FILENAME) + if freshenv or not os.path.exists(filename): + self.env = BuildEnvironment() + self.env.setup(self) + self.env.find_files(self.config, self.builder) + else: + try: + with progress_message(__('loading pickled environment')): + with open(filename, 'rb') as f: + self.env = pickle.load(f) + self.env.setup(self) + except Exception as err: + logger.info(__('failed: %s'), err) + self._init_env(freshenv=True) + + def preload_builder(self, name: str) -> None: + self.registry.preload_builder(self, name) + + def create_builder(self, name: str) -> "Builder": + if name is None: + logger.info(__('No builder selected, using default: html')) + name = 'html' + + return self.registry.create_builder(self, name) + + def _init_builder(self) -> None: + self.builder.set_environment(self.env) + self.builder.init() + self.events.emit('builder-inited') + + # ---- main "build" method ------------------------------------------------- + + def build(self, force_all: bool = False, filenames: List[str] = None) -> None: + self.phase = BuildPhase.READING + try: + if force_all: + self.builder.compile_all_catalogs() + self.builder.build_all() + elif filenames: + self.builder.compile_specific_catalogs(filenames) + self.builder.build_specific(filenames) + else: + self.builder.compile_update_catalogs() + self.builder.build_update() + + if self._warncount and self.keep_going: + self.statuscode = 1 + + status = (__('succeeded') if self.statuscode == 0 + else __('finished with problems')) + if self._warncount: + if self.warningiserror: + if self._warncount == 1: + msg = __('build %s, %s warning (with warnings treated as errors).') + else: + msg = __('build %s, %s warnings (with warnings treated as errors).') + else: + if self._warncount == 1: + msg = __('build %s, %s warning.') + else: + msg = __('build %s, %s warnings.') + + logger.info(bold(msg % (status, self._warncount))) + else: + logger.info(bold(__('build %s.') % status)) + + if self.statuscode == 0 and self.builder.epilog: + logger.info('') + logger.info(self.builder.epilog % { + 'outdir': relpath(self.outdir), + 'project': self.config.project + }) + except Exception as err: + # delete the saved env to force a fresh build next time + envfile = path.join(self.doctreedir, ENV_PICKLE_FILENAME) + if path.isfile(envfile): + os.unlink(envfile) + self.events.emit('build-finished', err) + raise + else: + self.events.emit('build-finished', None) + self.builder.cleanup() + + # ---- general extensibility interface ------------------------------------- + + def setup_extension(self, extname: str) -> None: + """Import and setup a Sphinx extension module. + + Load the extension given by the module *name*. Use this if your + extension needs the features provided by another extension. No-op if + called twice. + """ + logger.debug('[app] setting up extension: %r', extname) + self.registry.load_extension(self, extname) + + def require_sphinx(self, version: str) -> None: + """Check the Sphinx version if requested. + + Compare *version* (which must be a ``major.minor`` version string, e.g. + ``'1.1'``) with the version of the running Sphinx, and abort the build + when it is too old. + + .. versionadded:: 1.0 + """ + if version > sphinx.__display_version__[:3]: + raise VersionRequirementError(version) + + # event interface + def connect(self, event: str, callback: Callable, priority: int = 500) -> int: + """Register *callback* to be called when *event* is emitted. + + For details on available core events and the arguments of callback + functions, please see :ref:`events`. + + Registered callbacks will be invoked on event in the order of *priority* and + registration. The priority is ascending order. + + The method returns a "listener ID" that can be used as an argument to + :meth:`disconnect`. + + .. versionchanged:: 3.0 + + Support *priority* + """ + listener_id = self.events.connect(event, callback, priority) + logger.debug('[app] connecting event %r (%d): %r [id=%s]', + event, priority, callback, listener_id) + return listener_id + + def disconnect(self, listener_id: int) -> None: + """Unregister callback by *listener_id*.""" + logger.debug('[app] disconnecting event: [id=%s]', listener_id) + self.events.disconnect(listener_id) + + def emit(self, event: str, *args: Any) -> List: + """Emit *event* and pass *arguments* to the callback functions. + + Return the return values of all callbacks as a list. Do not emit core + Sphinx events in extensions! + """ + return self.events.emit(event, *args) + + def emit_firstresult(self, event: str, *args: Any) -> Any: + """Emit *event* and pass *arguments* to the callback functions. + + Return the result of the first callback that doesn't return ``None``. + + .. versionadded:: 0.5 + """ + return self.events.emit_firstresult(event, *args) + + # registering addon parts + + def add_builder(self, builder: "Type[Builder]", override: bool = False) -> None: + """Register a new builder. + + *builder* must be a class that inherits from + :class:`~sphinx.builders.Builder`. + + .. versionchanged:: 1.8 + Add *override* keyword. + """ + self.registry.add_builder(builder, override=override) + + # TODO(stephenfin): Describe 'types' parameter + def add_config_value(self, name: str, default: Any, rebuild: Union[bool, str], + types: Any = ()) -> None: + """Register a configuration value. + + This is necessary for Sphinx to recognize new values and set default + values accordingly. The *name* should be prefixed with the extension + name, to avoid clashes. The *default* value can be any Python object. + The string value *rebuild* must be one of those values: + + * ``'env'`` if a change in the setting only takes effect when a + document is parsed -- this means that the whole environment must be + rebuilt. + * ``'html'`` if a change in the setting needs a full rebuild of HTML + documents. + * ``''`` if a change in the setting will not need any special rebuild. + + .. versionchanged:: 0.6 + Changed *rebuild* from a simple boolean (equivalent to ``''`` or + ``'env'``) to a string. However, booleans are still accepted and + converted internally. + + .. versionchanged:: 0.4 + If the *default* value is a callable, it will be called with the + config object as its argument in order to get the default value. + This can be used to implement config values whose default depends on + other values. + """ + logger.debug('[app] adding config value: %r', + (name, default, rebuild) + ((types,) if types else ())) + if rebuild in (False, True): + rebuild = 'env' if rebuild else '' + self.config.add(name, default, rebuild, types) + + def add_event(self, name: str) -> None: + """Register an event called *name*. + + This is needed to be able to emit it. + """ + logger.debug('[app] adding event: %r', name) + self.events.add(name) + + def set_translator(self, name: str, translator_class: "Type[nodes.NodeVisitor]", + override: bool = False) -> None: + """Register or override a Docutils translator class. + + This is used to register a custom output translator or to replace a + builtin translator. This allows extensions to use custom translator + and define custom nodes for the translator (see :meth:`add_node`). + + .. versionadded:: 1.3 + .. versionchanged:: 1.8 + Add *override* keyword. + """ + self.registry.add_translator(name, translator_class, override=override) + + def add_node(self, node: "Type[Element]", override: bool = False, + **kwargs: Tuple[Callable, Callable]) -> None: + """Register a Docutils node class. + + This is necessary for Docutils internals. It may also be used in the + future to validate nodes in the parsed documents. + + Node visitor functions for the Sphinx HTML, LaTeX, text and manpage + writers can be given as keyword arguments: the keyword should be one or + more of ``'html'``, ``'latex'``, ``'text'``, ``'man'``, ``'texinfo'`` + or any other supported translators, the value a 2-tuple of ``(visit, + depart)`` methods. ``depart`` can be ``None`` if the ``visit`` + function raises :exc:`docutils.nodes.SkipNode`. Example: + + .. code-block:: python + + class math(docutils.nodes.Element): pass + + def visit_math_html(self, node): + self.body.append(self.starttag(node, 'math')) + def depart_math_html(self, node): + self.body.append('</math>') + + app.add_node(math, html=(visit_math_html, depart_math_html)) + + Obviously, translators for which you don't specify visitor methods will + choke on the node when encountered in a document to translate. + + .. versionchanged:: 0.5 + Added the support for keyword arguments giving visit functions. + """ + logger.debug('[app] adding node: %r', (node, kwargs)) + if not override and docutils.is_node_registered(node): + logger.warning(__('node class %r is already registered, ' + 'its visitors will be overridden'), + node.__name__, type='app', subtype='add_node') + docutils.register_node(node) + self.registry.add_translation_handlers(node, **kwargs) + + def add_enumerable_node(self, node: "Type[Element]", figtype: str, + title_getter: TitleGetter = None, override: bool = False, + **kwargs: Tuple[Callable, Callable]) -> None: + """Register a Docutils node class as a numfig target. + + Sphinx numbers the node automatically. And then the users can refer it + using :rst:role:`numref`. + + *figtype* is a type of enumerable nodes. Each figtypes have individual + numbering sequences. As a system figtypes, ``figure``, ``table`` and + ``code-block`` are defined. It is able to add custom nodes to these + default figtypes. It is also able to define new custom figtype if new + figtype is given. + + *title_getter* is a getter function to obtain the title of node. It + takes an instance of the enumerable node, and it must return its title + as string. The title is used to the default title of references for + :rst:role:`ref`. By default, Sphinx searches + ``docutils.nodes.caption`` or ``docutils.nodes.title`` from the node as + a title. + + Other keyword arguments are used for node visitor functions. See the + :meth:`.Sphinx.add_node` for details. + + .. versionadded:: 1.4 + """ + self.registry.add_enumerable_node(node, figtype, title_getter, override=override) + self.add_node(node, override=override, **kwargs) + + def add_directive(self, name: str, cls: "Type[Directive]", override: bool = False) -> None: + """Register a Docutils directive. + + *name* must be the prospective directive name. *cls* is a directive + class which inherits ``docutils.parsers.rst.Directive``. For more + details, see `the Docutils docs + <http://docutils.sourceforge.net/docs/howto/rst-directives.html>`_ . + + For example, the (already existing) :rst:dir:`literalinclude` directive + would be added like this: + + .. code-block:: python + + from docutils.parsers.rst import Directive, directives + + class LiteralIncludeDirective(Directive): + has_content = True + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = { + 'class': directives.class_option, + 'name': directives.unchanged, + } + + def run(self): + ... + + add_directive('literalinclude', LiteralIncludeDirective) + + .. versionchanged:: 0.6 + Docutils 0.5-style directive classes are now supported. + .. deprecated:: 1.8 + Docutils 0.4-style (function based) directives support is deprecated. + .. versionchanged:: 1.8 + Add *override* keyword. + """ + logger.debug('[app] adding directive: %r', (name, cls)) + if not override and docutils.is_directive_registered(name): + logger.warning(__('directive %r is already registered, it will be overridden'), + name, type='app', subtype='add_directive') + + docutils.register_directive(name, cls) + + def add_role(self, name: str, role: Any, override: bool = False) -> None: + """Register a Docutils role. + + *name* must be the role name that occurs in the source, *role* the role + function. Refer to the `Docutils documentation + <http://docutils.sourceforge.net/docs/howto/rst-roles.html>`_ for + more information. + + .. versionchanged:: 1.8 + Add *override* keyword. + """ + logger.debug('[app] adding role: %r', (name, role)) + if not override and docutils.is_role_registered(name): + logger.warning(__('role %r is already registered, it will be overridden'), + name, type='app', subtype='add_role') + docutils.register_role(name, role) + + def add_generic_role(self, name: str, nodeclass: Any, override: bool = False) -> None: + """Register a generic Docutils role. + + Register a Docutils role that does nothing but wrap its contents in the + node given by *nodeclass*. + + .. versionadded:: 0.6 + .. versionchanged:: 1.8 + Add *override* keyword. + """ + # Don't use ``roles.register_generic_role`` because it uses + # ``register_canonical_role``. + logger.debug('[app] adding generic role: %r', (name, nodeclass)) + if not override and docutils.is_role_registered(name): + logger.warning(__('role %r is already registered, it will be overridden'), + name, type='app', subtype='add_generic_role') + role = roles.GenericRole(name, nodeclass) + docutils.register_role(name, role) + + def add_domain(self, domain: "Type[Domain]", override: bool = False) -> None: + """Register a domain. + + Make the given *domain* (which must be a class; more precisely, a + subclass of :class:`~sphinx.domains.Domain`) known to Sphinx. + + .. versionadded:: 1.0 + .. versionchanged:: 1.8 + Add *override* keyword. + """ + self.registry.add_domain(domain, override=override) + + def add_directive_to_domain(self, domain: str, name: str, + cls: "Type[Directive]", override: bool = False) -> None: + """Register a Docutils directive in a domain. + + Like :meth:`add_directive`, but the directive is added to the domain + named *domain*. + + .. versionadded:: 1.0 + .. versionchanged:: 1.8 + Add *override* keyword. + """ + self.registry.add_directive_to_domain(domain, name, cls, override=override) + + def add_role_to_domain(self, domain: str, name: str, role: Union[RoleFunction, XRefRole], + override: bool = False) -> None: + """Register a Docutils role in a domain. + + Like :meth:`add_role`, but the role is added to the domain named + *domain*. + + .. versionadded:: 1.0 + .. versionchanged:: 1.8 + Add *override* keyword. + """ + self.registry.add_role_to_domain(domain, name, role, override=override) + + def add_index_to_domain(self, domain: str, index: "Type[Index]", override: bool = False + ) -> None: + """Register a custom index for a domain. + + Add a custom *index* class to the domain named *domain*. *index* must + be a subclass of :class:`~sphinx.domains.Index`. + + .. versionadded:: 1.0 + .. versionchanged:: 1.8 + Add *override* keyword. + """ + self.registry.add_index_to_domain(domain, index) + + def add_object_type(self, directivename: str, rolename: str, indextemplate: str = '', + parse_node: Callable = None, ref_nodeclass: "Type[TextElement]" = None, + objname: str = '', doc_field_types: List = [], override: bool = False + ) -> None: + """Register a new object type. + + This method is a very convenient way to add a new :term:`object` type + that can be cross-referenced. It will do this: + + - Create a new directive (called *directivename*) for documenting an + object. It will automatically add index entries if *indextemplate* + is nonempty; if given, it must contain exactly one instance of + ``%s``. See the example below for how the template will be + interpreted. + - Create a new role (called *rolename*) to cross-reference to these + object descriptions. + - If you provide *parse_node*, it must be a function that takes a + string and a docutils node, and it must populate the node with + children parsed from the string. It must then return the name of the + item to be used in cross-referencing and index entries. See the + :file:`conf.py` file in the source for this documentation for an + example. + - The *objname* (if not given, will default to *directivename*) names + the type of object. It is used when listing objects, e.g. in search + results. + + For example, if you have this call in a custom Sphinx extension:: + + app.add_object_type('directive', 'dir', 'pair: %s; directive') + + you can use this markup in your documents:: + + .. rst:directive:: function + + Document a function. + + <...> + + See also the :rst:dir:`function` directive. + + For the directive, an index entry will be generated as if you had prepended :: + + .. index:: pair: function; directive + + The reference node will be of class ``literal`` (so it will be rendered + in a proportional font, as appropriate for code) unless you give the + *ref_nodeclass* argument, which must be a docutils node class. Most + useful are ``docutils.nodes.emphasis`` or ``docutils.nodes.strong`` -- + you can also use ``docutils.nodes.generated`` if you want no further + text decoration. If the text should be treated as literal (e.g. no + smart quote replacement), but not have typewriter styling, use + ``sphinx.addnodes.literal_emphasis`` or + ``sphinx.addnodes.literal_strong``. + + For the role content, you have the same syntactical possibilities as + for standard Sphinx roles (see :ref:`xref-syntax`). + + .. versionchanged:: 1.8 + Add *override* keyword. + """ + self.registry.add_object_type(directivename, rolename, indextemplate, parse_node, + ref_nodeclass, objname, doc_field_types, + override=override) + + def add_crossref_type(self, directivename: str, rolename: str, indextemplate: str = '', + ref_nodeclass: "Type[TextElement]" = None, objname: str = '', + override: bool = False) -> None: + """Register a new crossref object type. + + This method is very similar to :meth:`add_object_type` except that the + directive it generates must be empty, and will produce no output. + + That means that you can add semantic targets to your sources, and refer + to them using custom roles instead of generic ones (like + :rst:role:`ref`). Example call:: + + app.add_crossref_type('topic', 'topic', 'single: %s', + docutils.nodes.emphasis) + + Example usage:: + + .. topic:: application API + + The application API + ------------------- + + Some random text here. + + See also :topic:`this section <application API>`. + + (Of course, the element following the ``topic`` directive needn't be a + section.) + + .. versionchanged:: 1.8 + Add *override* keyword. + """ + self.registry.add_crossref_type(directivename, rolename, + indextemplate, ref_nodeclass, objname, + override=override) + + def add_transform(self, transform: "Type[Transform]") -> None: + """Register a Docutils transform to be applied after parsing. + + Add the standard docutils :class:`Transform` subclass *transform* to + the list of transforms that are applied after Sphinx parses a reST + document. + + .. list-table:: priority range categories for Sphinx transforms + :widths: 20,80 + + * - Priority + - Main purpose in Sphinx + * - 0-99 + - Fix invalid nodes by docutils. Translate a doctree. + * - 100-299 + - Preparation + * - 300-399 + - early + * - 400-699 + - main + * - 700-799 + - Post processing. Deadline to modify text and referencing. + * - 800-899 + - Collect referencing and referenced nodes. Domain processing. + * - 900-999 + - Finalize and clean up. + + refs: `Transform Priority Range Categories`__ + + __ http://docutils.sourceforge.net/docs/ref/transforms.html#transform-priority-range-categories + """ # NOQA + self.registry.add_transform(transform) + + def add_post_transform(self, transform: "Type[Transform]") -> None: + """Register a Docutils transform to be applied before writing. + + Add the standard docutils :class:`Transform` subclass *transform* to + the list of transforms that are applied before Sphinx writes a + document. + """ + self.registry.add_post_transform(transform) + + def add_javascript(self, filename: str, **kwargs: str) -> None: + """An alias of :meth:`add_js_file`.""" + warnings.warn('The app.add_javascript() is deprecated. ' + 'Please use app.add_js_file() instead.', + RemovedInSphinx40Warning, stacklevel=2) + self.add_js_file(filename, **kwargs) + + def add_js_file(self, filename: str, **kwargs: str) -> None: + """Register a JavaScript file to include in the HTML output. + + Add *filename* to the list of JavaScript files that the default HTML + template will include. The filename must be relative to the HTML + static path , or a full URI with scheme. If the keyword argument + ``body`` is given, its value will be added between the + ``<script>`` tags. Extra keyword arguments are included as + attributes of the ``<script>`` tag. + + Example:: + + app.add_js_file('example.js') + # => <script src="_static/example.js"></script> + + app.add_js_file('example.js', async="async") + # => <script src="_static/example.js" async="async"></script> + + app.add_js_file(None, body="var myVariable = 'foo';") + # => <script>var myVariable = 'foo';</script> + + .. versionadded:: 0.5 + + .. versionchanged:: 1.8 + Renamed from ``app.add_javascript()``. + And it allows keyword arguments as attributes of script tag. + """ + self.registry.add_js_file(filename, **kwargs) + if hasattr(self.builder, 'add_js_file'): + self.builder.add_js_file(filename, **kwargs) # type: ignore + + def add_css_file(self, filename: str, **kwargs: str) -> None: + """Register a stylesheet to include in the HTML output. + + Add *filename* to the list of CSS files that the default HTML template + will include. The filename must be relative to the HTML static path, + or a full URI with scheme. The keyword arguments are also accepted for + attributes of ``<link>`` tag. + + Example:: + + app.add_css_file('custom.css') + # => <link rel="stylesheet" href="_static/custom.css" type="text/css" /> + + app.add_css_file('print.css', media='print') + # => <link rel="stylesheet" href="_static/print.css" + # type="text/css" media="print" /> + + app.add_css_file('fancy.css', rel='alternate stylesheet', title='fancy') + # => <link rel="alternate stylesheet" href="_static/fancy.css" + # type="text/css" title="fancy" /> + + .. versionadded:: 1.0 + + .. versionchanged:: 1.6 + Optional ``alternate`` and/or ``title`` attributes can be supplied + with the *alternate* (of boolean type) and *title* (a string) + arguments. The default is no title and *alternate* = ``False``. For + more information, refer to the `documentation + <https://mdn.io/Web/CSS/Alternative_style_sheets>`__. + + .. versionchanged:: 1.8 + Renamed from ``app.add_stylesheet()``. + And it allows keyword arguments as attributes of link tag. + """ + logger.debug('[app] adding stylesheet: %r', filename) + self.registry.add_css_files(filename, **kwargs) + if hasattr(self.builder, 'add_css_file'): + self.builder.add_css_file(filename, **kwargs) # type: ignore + + def add_stylesheet(self, filename: str, alternate: bool = False, title: str = None + ) -> None: + """An alias of :meth:`add_css_file`.""" + warnings.warn('The app.add_stylesheet() is deprecated. ' + 'Please use app.add_css_file() instead.', + RemovedInSphinx40Warning, stacklevel=2) + + attributes = {} # type: Dict[str, str] + if alternate: + attributes['rel'] = 'alternate stylesheet' + else: + attributes['rel'] = 'stylesheet' + + if title: + attributes['title'] = title + + self.add_css_file(filename, **attributes) + + def add_latex_package(self, packagename: str, options: str = None) -> None: + r"""Register a package to include in the LaTeX source code. + + Add *packagename* to the list of packages that LaTeX source code will + include. If you provide *options*, it will be taken to `\usepackage` + declaration. + + .. code-block:: python + + app.add_latex_package('mypackage') + # => \usepackage{mypackage} + app.add_latex_package('mypackage', 'foo,bar') + # => \usepackage[foo,bar]{mypackage} + + .. versionadded:: 1.3 + """ + self.registry.add_latex_package(packagename, options) + + def add_lexer(self, alias: str, lexer: Union[Lexer, "Type[Lexer]"]) -> None: + """Register a new lexer for source code. + + Use *lexer* to highlight code blocks with the given language *alias*. + + .. versionadded:: 0.6 + .. versionchanged:: 2.1 + Take a lexer class as an argument. An instance of lexers are + still supported until Sphinx-3.x. + """ + logger.debug('[app] adding lexer: %r', (alias, lexer)) + if isinstance(lexer, Lexer): + warnings.warn('app.add_lexer() API changed; ' + 'Please give lexer class instead instance', + RemovedInSphinx40Warning) + lexers[alias] = lexer + else: + lexer_classes[alias] = lexer + + def add_autodocumenter(self, cls: Any, override: bool = False) -> None: + """Register a new documenter class for the autodoc extension. + + Add *cls* as a new documenter class for the :mod:`sphinx.ext.autodoc` + extension. It must be a subclass of + :class:`sphinx.ext.autodoc.Documenter`. This allows to auto-document + new types of objects. See the source of the autodoc module for + examples on how to subclass :class:`Documenter`. + + .. todo:: Add real docs for Documenter and subclassing + + .. versionadded:: 0.6 + .. versionchanged:: 2.2 + Add *override* keyword. + """ + logger.debug('[app] adding autodocumenter: %r', cls) + from sphinx.ext.autodoc.directive import AutodocDirective + self.registry.add_documenter(cls.objtype, cls) + self.add_directive('auto' + cls.objtype, AutodocDirective, override=override) + + def add_autodoc_attrgetter(self, typ: "Type", getter: Callable[[Any, str, Any], Any] + ) -> None: + """Register a new ``getattr``-like function for the autodoc extension. + + Add *getter*, which must be a function with an interface compatible to + the :func:`getattr` builtin, as the autodoc attribute getter for + objects that are instances of *typ*. All cases where autodoc needs to + get an attribute of a type are then handled by this function instead of + :func:`getattr`. + + .. versionadded:: 0.6 + """ + logger.debug('[app] adding autodoc attrgetter: %r', (typ, getter)) + self.registry.add_autodoc_attrgetter(typ, getter) + + def add_search_language(self, cls: Any) -> None: + """Register a new language for the HTML search index. + + Add *cls*, which must be a subclass of + :class:`sphinx.search.SearchLanguage`, as a support language for + building the HTML full-text search index. The class must have a *lang* + attribute that indicates the language it should be used for. See + :confval:`html_search_language`. + + .. versionadded:: 1.1 + """ + logger.debug('[app] adding search language: %r', cls) + from sphinx.search import languages, SearchLanguage + assert issubclass(cls, SearchLanguage) + languages[cls.lang] = cls + + def add_source_suffix(self, suffix: str, filetype: str, override: bool = False) -> None: + """Register a suffix of source files. + + Same as :confval:`source_suffix`. The users can override this + using the setting. + + .. versionadded:: 1.8 + """ + self.registry.add_source_suffix(suffix, filetype, override=override) + + def add_source_parser(self, *args: Any, **kwargs: Any) -> None: + """Register a parser class. + + .. versionadded:: 1.4 + .. versionchanged:: 1.8 + *suffix* argument is deprecated. It only accepts *parser* argument. + Use :meth:`add_source_suffix` API to register suffix instead. + .. versionchanged:: 1.8 + Add *override* keyword. + """ + self.registry.add_source_parser(*args, **kwargs) + + def add_env_collector(self, collector: "Type[EnvironmentCollector]") -> None: + """Register an environment collector class. + + Refer to :ref:`collector-api`. + + .. versionadded:: 1.6 + """ + logger.debug('[app] adding environment collector: %r', collector) + collector().enable(self) + + def add_html_theme(self, name: str, theme_path: str) -> None: + """Register a HTML Theme. + + The *name* is a name of theme, and *path* is a full path to the theme + (refs: :ref:`distribute-your-theme`). + + .. versionadded:: 1.6 + """ + logger.debug('[app] adding HTML theme: %r, %r', name, theme_path) + self.html_themes[name] = theme_path + + def add_html_math_renderer(self, name: str, + inline_renderers: Tuple[Callable, Callable] = None, + block_renderers: Tuple[Callable, Callable] = None) -> None: + """Register a math renderer for HTML. + + The *name* is a name of math renderer. Both *inline_renderers* and + *block_renderers* are used as visitor functions for the HTML writer: + the former for inline math node (``nodes.math``), the latter for + block math node (``nodes.math_block``). Regarding visitor functions, + see :meth:`add_node` for details. + + .. versionadded:: 1.8 + + """ + self.registry.add_html_math_renderer(name, inline_renderers, block_renderers) + + def add_message_catalog(self, catalog: str, locale_dir: str) -> None: + """Register a message catalog. + + The *catalog* is a name of catalog, and *locale_dir* is a base path + of message catalog. For more details, see + :func:`sphinx.locale.get_translation()`. + + .. versionadded:: 1.8 + """ + locale.init([locale_dir], self.config.language, catalog) + locale.init_console(locale_dir, catalog) + + # ---- other methods ------------------------------------------------- + def is_parallel_allowed(self, typ: str) -> bool: + """Check parallel processing is allowed or not. + + ``typ`` is a type of processing; ``'read'`` or ``'write'``. + """ + if typ == 'read': + attrname = 'parallel_read_safe' + message_not_declared = __("the %s extension does not declare if it " + "is safe for parallel reading, assuming " + "it isn't - please ask the extension author " + "to check and make it explicit") + message_not_safe = __("the %s extension is not safe for parallel reading") + elif typ == 'write': + attrname = 'parallel_write_safe' + message_not_declared = __("the %s extension does not declare if it " + "is safe for parallel writing, assuming " + "it isn't - please ask the extension author " + "to check and make it explicit") + message_not_safe = __("the %s extension is not safe for parallel writing") + else: + raise ValueError('parallel type %s is not supported' % typ) + + for ext in self.extensions.values(): + allowed = getattr(ext, attrname, None) + if allowed is None: + logger.warning(message_not_declared, ext.name) + logger.warning(__('doing serial %s'), typ) + return False + elif not allowed: + logger.warning(message_not_safe, ext.name) + logger.warning(__('doing serial %s'), typ) + return False + + return True + + +class TemplateBridge: + """ + This class defines the interface for a "template bridge", that is, a class + that renders templates given a template name and a context. + """ + + def init(self, builder: "Builder", theme: Theme = None, dirs: List[str] = None) -> None: + """Called by the builder to initialize the template system. + + *builder* is the builder object; you'll probably want to look at the + value of ``builder.config.templates_path``. + + *theme* is a :class:`sphinx.theming.Theme` object or None; in the latter + case, *dirs* can be list of fixed directories to look for templates. + """ + raise NotImplementedError('must be implemented in subclasses') + + def newest_template_mtime(self) -> float: + """Called by the builder to determine if output files are outdated + because of template changes. Return the mtime of the newest template + file that was changed. The default implementation returns ``0``. + """ + return 0 + + def render(self, template: str, context: Dict) -> None: + """Called by the builder to render a template given as a filename with + a specified context (a Python dictionary). + """ + raise NotImplementedError('must be implemented in subclasses') + + def render_string(self, template: str, context: Dict) -> str: + """Called by the builder to render a template given as a string with a + specified context (a Python dictionary). + """ + raise NotImplementedError('must be implemented in subclasses') diff --git a/sphinx/sphinx/builders/__init__.py b/sphinx/sphinx/builders/__init__.py new file mode 100644 index 0000000..93c246c --- /dev/null +++ b/sphinx/sphinx/builders/__init__.py @@ -0,0 +1,620 @@ +""" + sphinx.builders + ~~~~~~~~~~~~~~~ + + Builder superclass for all builders. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import pickle +import time +from os import path +from typing import Any, Dict, Iterable, List, Sequence, Set, Tuple, Union + +from docutils import nodes +from docutils.nodes import Node + +from sphinx.config import Config +from sphinx.environment import BuildEnvironment, CONFIG_OK, CONFIG_CHANGED_REASON +from sphinx.environment.adapters.asset import ImageAdapter +from sphinx.errors import SphinxError +from sphinx.events import EventManager +from sphinx.io import read_doc +from sphinx.locale import __ +from sphinx.util import import_object, logging, rst, progress_message, status_iterator +from sphinx.util.build_phase import BuildPhase +from sphinx.util.console import bold # type: ignore +from sphinx.util.docutils import sphinx_domains +from sphinx.util.i18n import CatalogInfo, CatalogRepository, docname_to_domain +from sphinx.util.osutil import SEP, ensuredir, relative_uri, relpath +from sphinx.util.parallel import ParallelTasks, SerialTasks, make_chunks, \ + parallel_available +from sphinx.util.tags import Tags + +# side effect: registers roles and directives +from sphinx import roles # noqa +from sphinx import directives # noqa + +try: + import multiprocessing +except ImportError: + multiprocessing = None + +if False: + # For type annotation + from typing import Type # for python3.5.1 + from sphinx.application import Sphinx + + +logger = logging.getLogger(__name__) + + +class Builder: + """ + Builds target formats from the reST sources. + """ + + #: The builder's name, for the -b command line option. + name = '' + #: The builder's output format, or '' if no document output is produced. + format = '' + #: The message emitted upon successful build completion. This can be a + #: printf-style template string with the following keys: ``outdir``, + #: ``project`` + epilog = '' + + #: default translator class for the builder. This can be overridden by + #: :py:meth:`app.set_translator()`. + default_translator_class = None # type: Type[nodes.NodeVisitor] + # doctree versioning method + versioning_method = 'none' + versioning_compare = False + # allow parallel write_doc() calls + allow_parallel = False + # support translation + use_message_catalog = True + + #: The list of MIME types of image formats supported by the builder. + #: Image files are searched in the order in which they appear here. + supported_image_types = [] # type: List[str] + #: The builder supports remote images or not. + supported_remote_images = False + #: The builder supports data URIs or not. + supported_data_uri_images = False + + def __init__(self, app: "Sphinx") -> None: + self.srcdir = app.srcdir + self.confdir = app.confdir + self.outdir = app.outdir + self.doctreedir = app.doctreedir + ensuredir(self.doctreedir) + + self.app = app # type: Sphinx + self.env = None # type: BuildEnvironment + self.events = app.events # type: EventManager + self.config = app.config # type: Config + self.tags = app.tags # type: Tags + self.tags.add(self.format) + self.tags.add(self.name) + self.tags.add("format_%s" % self.format) + self.tags.add("builder_%s" % self.name) + + # images that need to be copied over (source -> dest) + self.images = {} # type: Dict[str, str] + # basename of images directory + self.imagedir = "" + # relative path to image directory from current docname (used at writing docs) + self.imgpath = "" + + # these get set later + self.parallel_ok = False + self.finish_tasks = None # type: Any + + def set_environment(self, env: BuildEnvironment) -> None: + """Store BuildEnvironment object.""" + self.env = env + self.env.set_versioning_method(self.versioning_method, + self.versioning_compare) + + def get_translator_class(self, *args: Any) -> "Type[nodes.NodeVisitor]": + """Return a class of translator.""" + return self.app.registry.get_translator_class(self) + + def create_translator(self, *args: Any) -> nodes.NodeVisitor: + """Return an instance of translator. + + This method returns an instance of ``default_translator_class`` by default. + Users can replace the translator class with ``app.set_translator()`` API. + """ + return self.app.registry.create_translator(self, *args) + + # helper methods + def init(self) -> None: + """Load necessary templates and perform initialization. The default + implementation does nothing. + """ + pass + + def create_template_bridge(self) -> None: + """Return the template bridge configured.""" + if self.config.template_bridge: + self.templates = import_object(self.config.template_bridge, + 'template_bridge setting')() + else: + from sphinx.jinja2glue import BuiltinTemplateLoader + self.templates = BuiltinTemplateLoader() + + def get_target_uri(self, docname: str, typ: str = None) -> str: + """Return the target URI for a document name. + + *typ* can be used to qualify the link characteristic for individual + builders. + """ + raise NotImplementedError + + def get_relative_uri(self, from_: str, to: str, typ: str = None) -> str: + """Return a relative URI between two source filenames. + + May raise environment.NoUri if there's no way to return a sensible URI. + """ + return relative_uri(self.get_target_uri(from_), + self.get_target_uri(to, typ)) + + def get_outdated_docs(self) -> Union[str, Iterable[str]]: + """Return an iterable of output files that are outdated, or a string + describing what an update build will build. + + If the builder does not output individual files corresponding to + source files, return a string here. If it does, return an iterable + of those files that need to be written. + """ + raise NotImplementedError + + def get_asset_paths(self) -> List[str]: + """Return list of paths for assets (ex. templates, CSS, etc.).""" + return [] + + def post_process_images(self, doctree: Node) -> None: + """Pick the best candidate for all image URIs.""" + images = ImageAdapter(self.env) + for node in doctree.traverse(nodes.image): + if '?' in node['candidates']: + # don't rewrite nonlocal image URIs + continue + if '*' not in node['candidates']: + for imgtype in self.supported_image_types: + candidate = node['candidates'].get(imgtype, None) + if candidate: + break + else: + mimetypes = sorted(node['candidates']) + image_uri = images.get_original_image_uri(node['uri']) + if mimetypes: + logger.warning(__('a suitable image for %s builder not found: ' + '%s (%s)'), + self.name, mimetypes, image_uri, location=node) + else: + logger.warning(__('a suitable image for %s builder not found: %s'), + self.name, image_uri, location=node) + continue + node['uri'] = candidate + else: + candidate = node['uri'] + if candidate not in self.env.images: + # non-existing URI; let it alone + continue + self.images[candidate] = self.env.images[candidate][1] + + # compile po methods + + def compile_catalogs(self, catalogs: Set[CatalogInfo], message: str) -> None: + if not self.config.gettext_auto_build: + return + + def cat2relpath(cat: CatalogInfo) -> str: + return relpath(cat.mo_path, self.env.srcdir).replace(path.sep, SEP) + + logger.info(bold(__('building [mo]: ')) + message) + for catalog in status_iterator(catalogs, __('writing output... '), "darkgreen", + len(catalogs), self.app.verbosity, + stringify_func=cat2relpath): + catalog.write_mo(self.config.language) + + def compile_all_catalogs(self) -> None: + repo = CatalogRepository(self.srcdir, self.config.locale_dirs, + self.config.language, self.config.source_encoding) + message = __('all of %d po files') % len(list(repo.catalogs)) + self.compile_catalogs(set(repo.catalogs), message) + + def compile_specific_catalogs(self, specified_files: List[str]) -> None: + def to_domain(fpath: str) -> str: + docname = self.env.path2doc(path.abspath(fpath)) + if docname: + return docname_to_domain(docname, self.config.gettext_compact) + else: + return None + + catalogs = set() + domains = set(map(to_domain, specified_files)) + repo = CatalogRepository(self.srcdir, self.config.locale_dirs, + self.config.language, self.config.source_encoding) + for catalog in repo.catalogs: + if catalog.domain in domains and catalog.is_outdated(): + catalogs.add(catalog) + message = __('targets for %d po files that are specified') % len(catalogs) + self.compile_catalogs(catalogs, message) + + def compile_update_catalogs(self) -> None: + repo = CatalogRepository(self.srcdir, self.config.locale_dirs, + self.config.language, self.config.source_encoding) + catalogs = {c for c in repo.catalogs if c.is_outdated()} + message = __('targets for %d po files that are out of date') % len(catalogs) + self.compile_catalogs(catalogs, message) + + # build methods + + def build_all(self) -> None: + """Build all source files.""" + self.build(None, summary=__('all source files'), method='all') + + def build_specific(self, filenames: List[str]) -> None: + """Only rebuild as much as needed for changes in the *filenames*.""" + # bring the filenames to the canonical format, that is, + # relative to the source directory and without source_suffix. + dirlen = len(self.srcdir) + 1 + to_write = [] + suffixes = None # type: Tuple[str] + suffixes = tuple(self.config.source_suffix) # type: ignore + for filename in filenames: + filename = path.normpath(path.abspath(filename)) + if not filename.startswith(self.srcdir): + logger.warning(__('file %r given on command line is not under the ' + 'source directory, ignoring'), filename) + continue + if not path.isfile(filename): + logger.warning(__('file %r given on command line does not exist, ' + 'ignoring'), filename) + continue + filename = filename[dirlen:] + for suffix in suffixes: + if filename.endswith(suffix): + filename = filename[:-len(suffix)] + break + filename = filename.replace(path.sep, SEP) + to_write.append(filename) + self.build(to_write, method='specific', + summary=__('%d source files given on command line') % len(to_write)) + + def build_update(self) -> None: + """Only rebuild what was changed or added since last build.""" + to_build = self.get_outdated_docs() + if isinstance(to_build, str): + self.build(['__all__'], to_build) + else: + to_build = list(to_build) + self.build(to_build, + summary=__('targets for %d source files that are out of date') % + len(to_build)) + + def build(self, docnames: Iterable[str], summary: str = None, method: str = 'update') -> None: # NOQA + """Main build method. + + First updates the environment, and then calls :meth:`write`. + """ + if summary: + logger.info(bold(__('building [%s]: ') % self.name) + summary) + + # while reading, collect all warnings from docutils + with logging.pending_warnings(): + updated_docnames = set(self.read()) + + doccount = len(updated_docnames) + logger.info(bold(__('looking for now-outdated files... ')), nonl=True) + for docname in self.env.check_dependents(self.app, updated_docnames): + updated_docnames.add(docname) + outdated = len(updated_docnames) - doccount + if outdated: + logger.info(__('%d found'), outdated) + else: + logger.info(__('none found')) + + if updated_docnames: + # save the environment + from sphinx.application import ENV_PICKLE_FILENAME + with progress_message(__('pickling environment')): + with open(path.join(self.doctreedir, ENV_PICKLE_FILENAME), 'wb') as f: + pickle.dump(self.env, f, pickle.HIGHEST_PROTOCOL) + + # global actions + self.app.phase = BuildPhase.CONSISTENCY_CHECK + with progress_message(__('checking consistency')): + self.env.check_consistency() + else: + if method == 'update' and not docnames: + logger.info(bold(__('no targets are out of date.'))) + return + + self.app.phase = BuildPhase.RESOLVING + + # filter "docnames" (list of outdated files) by the updated + # found_docs of the environment; this will remove docs that + # have since been removed + if docnames and docnames != ['__all__']: + docnames = set(docnames) & self.env.found_docs + + # determine if we can write in parallel + if parallel_available and self.app.parallel > 1 and self.allow_parallel: + self.parallel_ok = self.app.is_parallel_allowed('write') + else: + self.parallel_ok = False + + # create a task executor to use for misc. "finish-up" tasks + # if self.parallel_ok: + # self.finish_tasks = ParallelTasks(self.app.parallel) + # else: + # for now, just execute them serially + self.finish_tasks = SerialTasks() + + # write all "normal" documents (or everything for some builders) + self.write(docnames, list(updated_docnames), method) + + # finish (write static files etc.) + self.finish() + + # wait for all tasks + self.finish_tasks.join() + + def read(self) -> List[str]: + """(Re-)read all files new or changed since last update. + + Store all environment docnames in the canonical format (ie using SEP as + a separator in place of os.path.sep). + """ + logger.info(bold(__('updating environment: ')), nonl=True) + + self.env.find_files(self.config, self) + updated = (self.env.config_status != CONFIG_OK) + added, changed, removed = self.env.get_outdated_files(updated) + + # allow user intervention as well + for docs in self.events.emit('env-get-outdated', self.env, added, changed, removed): + changed.update(set(docs) & self.env.found_docs) + + # if files were added or removed, all documents with globbed toctrees + # must be reread + if added or removed: + # ... but not those that already were removed + changed.update(self.env.glob_toctrees & self.env.found_docs) + + if updated: # explain the change iff build config status was not ok + reason = (CONFIG_CHANGED_REASON.get(self.env.config_status, '') + + (self.env.config_status_extra or '')) + logger.info('[%s] ', reason, nonl=True) + + logger.info(__('%s added, %s changed, %s removed'), + len(added), len(changed), len(removed)) + + # clear all files no longer present + for docname in removed: + self.events.emit('env-purge-doc', self.env, docname) + self.env.clear_doc(docname) + + # read all new and changed files + docnames = sorted(added | changed) + # allow changing and reordering the list of docs to read + self.events.emit('env-before-read-docs', self.env, docnames) + + # check if we should do parallel or serial read + if parallel_available and len(docnames) > 5 and self.app.parallel > 1: + par_ok = self.app.is_parallel_allowed('read') + else: + par_ok = False + + if par_ok: + self._read_parallel(docnames, nproc=self.app.parallel) + else: + self._read_serial(docnames) + + if self.config.master_doc not in self.env.all_docs: + raise SphinxError('master file %s not found' % + self.env.doc2path(self.config.master_doc)) + + for retval in self.events.emit('env-updated', self.env): + if retval is not None: + docnames.extend(retval) + + # workaround: marked as okay to call builder.read() twice in same process + self.env.config_status = CONFIG_OK + + return sorted(docnames) + + def _read_serial(self, docnames: List[str]) -> None: + for docname in status_iterator(docnames, __('reading sources... '), "purple", + len(docnames), self.app.verbosity): + # remove all inventory entries for that file + self.events.emit('env-purge-doc', self.env, docname) + self.env.clear_doc(docname) + self.read_doc(docname) + + def _read_parallel(self, docnames: List[str], nproc: int) -> None: + # clear all outdated docs at once + for docname in docnames: + self.events.emit('env-purge-doc', self.env, docname) + self.env.clear_doc(docname) + + def read_process(docs: List[str]) -> bytes: + self.env.app = self.app + for docname in docs: + self.read_doc(docname) + # allow pickling self to send it back + return pickle.dumps(self.env, pickle.HIGHEST_PROTOCOL) + + def merge(docs: List[str], otherenv: bytes) -> None: + env = pickle.loads(otherenv) + self.env.merge_info_from(docs, env, self.app) + + tasks = ParallelTasks(nproc) + chunks = make_chunks(docnames, nproc) + + for chunk in status_iterator(chunks, __('reading sources... '), "purple", + len(chunks), self.app.verbosity): + tasks.add_task(read_process, chunk, merge) + + # make sure all threads have finished + logger.info(bold(__('waiting for workers...'))) + tasks.join() + + def read_doc(self, docname: str) -> None: + """Parse a file and add/update inventory entries for the doctree.""" + self.env.prepare_settings(docname) + + # Add confdir/docutils.conf to dependencies list if exists + docutilsconf = path.join(self.confdir, 'docutils.conf') + if path.isfile(docutilsconf): + self.env.note_dependency(docutilsconf) + + with sphinx_domains(self.env), rst.default_role(docname, self.config.default_role): + doctree = read_doc(self.app, self.env, self.env.doc2path(docname)) + + # store time of reading, for outdated files detection + # (Some filesystems have coarse timestamp resolution; + # therefore time.time() can be older than filesystem's timestamp. + # For example, FAT32 has 2sec timestamp resolution.) + self.env.all_docs[docname] = max(time.time(), + path.getmtime(self.env.doc2path(docname))) + + # cleanup + self.env.temp_data.clear() + self.env.ref_context.clear() + + self.write_doctree(docname, doctree) + + def write_doctree(self, docname: str, doctree: nodes.document) -> None: + """Write the doctree to a file.""" + # make it picklable + doctree.reporter = None + doctree.transformer = None + doctree.settings.warning_stream = None + doctree.settings.env = None + doctree.settings.record_dependencies = None + + doctree_filename = path.join(self.doctreedir, docname + '.doctree') + ensuredir(path.dirname(doctree_filename)) + with open(doctree_filename, 'wb') as f: + pickle.dump(doctree, f, pickle.HIGHEST_PROTOCOL) + + def write(self, build_docnames: Iterable[str], updated_docnames: Sequence[str], method: str = 'update') -> None: # NOQA + if build_docnames is None or build_docnames == ['__all__']: + # build_all + build_docnames = self.env.found_docs + if method == 'update': + # build updated ones as well + docnames = set(build_docnames) | set(updated_docnames) + else: + docnames = set(build_docnames) + logger.debug(__('docnames to write: %s'), ', '.join(sorted(docnames))) + + # add all toctree-containing files that may have changed + for docname in list(docnames): + for tocdocname in self.env.files_to_rebuild.get(docname, set()): + if tocdocname in self.env.found_docs: + docnames.add(tocdocname) + docnames.add(self.config.master_doc) + + with progress_message(__('preparing documents')): + self.prepare_writing(docnames) + + if self.parallel_ok: + # number of subprocesses is parallel-1 because the main process + # is busy loading doctrees and doing write_doc_serialized() + self._write_parallel(sorted(docnames), + nproc=self.app.parallel - 1) + else: + self._write_serial(sorted(docnames)) + + def _write_serial(self, docnames: Sequence[str]) -> None: + with logging.pending_warnings(): + for docname in status_iterator(docnames, __('writing output... '), "darkgreen", + len(docnames), self.app.verbosity): + self.app.phase = BuildPhase.RESOLVING + doctree = self.env.get_and_resolve_doctree(docname, self) + self.app.phase = BuildPhase.WRITING + self.write_doc_serialized(docname, doctree) + self.write_doc(docname, doctree) + + def _write_parallel(self, docnames: Sequence[str], nproc: int) -> None: + def write_process(docs: List[Tuple[str, nodes.document]]) -> None: + self.app.phase = BuildPhase.WRITING + for docname, doctree in docs: + self.write_doc(docname, doctree) + + # warm up caches/compile templates using the first document + firstname, docnames = docnames[0], docnames[1:] + self.app.phase = BuildPhase.RESOLVING + doctree = self.env.get_and_resolve_doctree(firstname, self) + self.app.phase = BuildPhase.WRITING + self.write_doc_serialized(firstname, doctree) + self.write_doc(firstname, doctree) + + tasks = ParallelTasks(nproc) + chunks = make_chunks(docnames, nproc) + + self.app.phase = BuildPhase.RESOLVING + for chunk in status_iterator(chunks, __('writing output... '), "darkgreen", + len(chunks), self.app.verbosity): + arg = [] + for i, docname in enumerate(chunk): + doctree = self.env.get_and_resolve_doctree(docname, self) + self.write_doc_serialized(docname, doctree) + arg.append((docname, doctree)) + tasks.add_task(write_process, arg) + + # make sure all threads have finished + logger.info(bold(__('waiting for workers...'))) + tasks.join() + + def prepare_writing(self, docnames: Set[str]) -> None: + """A place where you can add logic before :meth:`write_doc` is run""" + raise NotImplementedError + + def write_doc(self, docname: str, doctree: nodes.document) -> None: + """Where you actually write something to the filesystem.""" + raise NotImplementedError + + def write_doc_serialized(self, docname: str, doctree: nodes.document) -> None: + """Handle parts of write_doc that must be called in the main process + if parallel build is active. + """ + pass + + def finish(self) -> None: + """Finish the building process. + + The default implementation does nothing. + """ + pass + + def cleanup(self) -> None: + """Cleanup any resources. + + The default implementation does nothing. + """ + pass + + def get_builder_config(self, option: str, default: str) -> Any: + """Return a builder specific option. + + This method allows customization of common builder settings by + inserting the name of the current builder in the option key. + If the key does not exist, use default as builder name. + """ + # At the moment, only XXX_use_index is looked up this way. + # Every new builder variant must be registered in Config.config_values. + try: + optname = '%s_%s' % (self.name, option) + return getattr(self.config, optname) + except AttributeError: + optname = '%s_%s' % (default, option) + return getattr(self.config, optname) diff --git a/sphinx/sphinx/builders/_epub_base.py b/sphinx/sphinx/builders/_epub_base.py new file mode 100644 index 0000000..b2d8413 --- /dev/null +++ b/sphinx/sphinx/builders/_epub_base.py @@ -0,0 +1,734 @@ +""" + sphinx.builders._epub_base + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Base class of epub2/epub3 builders. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import html +import os +import re +import warnings +from collections import namedtuple +from os import path +from typing import Any, Dict, List, Set, Tuple +from zipfile import ZIP_DEFLATED, ZIP_STORED, ZipFile + +from docutils import nodes +from docutils.nodes import Element, Node +from docutils.utils import smartquotes + +from sphinx import addnodes +from sphinx.builders.html import BuildInfo, StandaloneHTMLBuilder +from sphinx.deprecation import RemovedInSphinx40Warning +from sphinx.locale import __ +from sphinx.util import logging +from sphinx.util import status_iterator +from sphinx.util.fileutil import copy_asset_file +from sphinx.util.i18n import format_date +from sphinx.util.osutil import ensuredir, copyfile + +try: + from PIL import Image +except ImportError: + Image = None + + +logger = logging.getLogger(__name__) + + +# (Fragment) templates from which the metainfo files content.opf and +# toc.ncx are created. +# This template section also defines strings that are embedded in the html +# output but that may be customized by (re-)setting module attributes, +# e.g. from conf.py. + +COVERPAGE_NAME = 'epub-cover.xhtml' + +TOCTREE_TEMPLATE = 'toctree-l%d' + +LINK_TARGET_TEMPLATE = ' [%(uri)s]' + +FOOTNOTE_LABEL_TEMPLATE = '#%d' + +FOOTNOTES_RUBRIC_NAME = 'Footnotes' + +CSS_LINK_TARGET_CLASS = 'link-target' + +# XXX These strings should be localized according to epub_language +GUIDE_TITLES = { + 'toc': 'Table of Contents', + 'cover': 'Cover' +} + +MEDIA_TYPES = { + '.xhtml': 'application/xhtml+xml', + '.css': 'text/css', + '.png': 'image/png', + '.gif': 'image/gif', + '.svg': 'image/svg+xml', + '.jpg': 'image/jpeg', + '.jpeg': 'image/jpeg', + '.otf': 'application/x-font-otf', + '.ttf': 'application/x-font-ttf', + '.woff': 'application/font-woff', +} + +VECTOR_GRAPHICS_EXTENSIONS = ('.svg',) + +# Regular expression to match colons only in local fragment identifiers. +# If the URI contains a colon before the #, +# it is an external link that should not change. +REFURI_RE = re.compile("([^#:]*#)(.*)") + + +ManifestItem = namedtuple('ManifestItem', ['href', 'id', 'media_type']) +Spine = namedtuple('Spine', ['idref', 'linear']) +Guide = namedtuple('Guide', ['type', 'title', 'uri']) +NavPoint = namedtuple('NavPoint', ['navpoint', 'playorder', 'text', 'refuri', 'children']) + + +def sphinx_smarty_pants(t: str, language: str = 'en') -> str: + t = t.replace('"', '"') + t = smartquotes.educateDashesOldSchool(t) + t = smartquotes.educateQuotes(t, language) + t = t.replace('"', '"') + return t + + +ssp = sphinx_smarty_pants + + +# The epub publisher + +class EpubBuilder(StandaloneHTMLBuilder): + """ + Builder that outputs epub files. + + It creates the metainfo files container.opf, toc.ncx, mimetype, and + META-INF/container.xml. Afterwards, all necessary files are zipped to an + epub file. + """ + + # don't copy the reST source + copysource = False + supported_image_types = ['image/svg+xml', 'image/png', 'image/gif', + 'image/jpeg'] + supported_remote_images = False + + # don't add links + add_permalinks = False + # don't use # as current path. ePub check reject it. + allow_sharp_as_current_path = False + # don't add sidebar etc. + embedded = True + # disable download role + download_support = False + # dont' create links to original images from images + html_scaled_image_link = False + # don't generate search index or include search page + search = False + + coverpage_name = COVERPAGE_NAME + toctree_template = TOCTREE_TEMPLATE + link_target_template = LINK_TARGET_TEMPLATE + css_link_target_class = CSS_LINK_TARGET_CLASS + guide_titles = GUIDE_TITLES + media_types = MEDIA_TYPES + refuri_re = REFURI_RE + template_dir = "" + doctype = "" + + def init(self) -> None: + super().init() + # the output files for epub must be .html only + self.out_suffix = '.xhtml' + self.link_suffix = '.xhtml' + self.playorder = 0 + self.tocid = 0 + self.id_cache = {} # type: Dict[str, str] + self.use_index = self.get_builder_config('use_index', 'epub') + self.refnodes = [] # type: List[Dict[str, Any]] + + def create_build_info(self) -> BuildInfo: + return BuildInfo(self.config, self.tags, ['html', 'epub']) + + def get_theme_config(self) -> Tuple[str, Dict]: + return self.config.epub_theme, self.config.epub_theme_options + + # generic support functions + def make_id(self, name: str) -> str: + # id_cache is intentionally mutable + """Return a unique id for name.""" + id = self.id_cache.get(name) + if not id: + id = 'epub-%d' % self.env.new_serialno('epub') + self.id_cache[name] = id + return id + + def esc(self, name: str) -> str: + """Replace all characters not allowed in text an attribute values.""" + warnings.warn( + '%s.esc() is deprecated. Use html.escape() instead.' % self.__class__.__name__, + RemovedInSphinx40Warning) + name = name.replace('&', '&') + name = name.replace('<', '<') + name = name.replace('>', '>') + name = name.replace('"', '"') + name = name.replace('\'', ''') + return name + + def get_refnodes(self, doctree: Node, result: List[Dict[str, Any]]) -> List[Dict[str, Any]]: # NOQA + """Collect section titles, their depth in the toc and the refuri.""" + # XXX: is there a better way than checking the attribute + # toctree-l[1-8] on the parent node? + if isinstance(doctree, nodes.reference) and doctree.get('refuri'): + refuri = doctree['refuri'] + if refuri.startswith('http://') or refuri.startswith('https://') \ + or refuri.startswith('irc:') or refuri.startswith('mailto:'): + return result + classes = doctree.parent.attributes['classes'] + for level in range(8, 0, -1): # or range(1, 8)? + if (self.toctree_template % level) in classes: + result.append({ + 'level': level, + 'refuri': html.escape(refuri), + 'text': ssp(html.escape(doctree.astext())) + }) + break + elif isinstance(doctree, nodes.Element): + for elem in doctree: + result = self.get_refnodes(elem, result) + return result + + def check_refnodes(self, nodes: List[Dict[str, Any]]) -> None: + appeared = set() # type: Set[str] + for node in nodes: + if node['refuri'] in appeared: + logger.warning(__('duplicated ToC entry found: %s'), node['refuri']) + else: + appeared.add(node['refuri']) + + def get_toc(self) -> None: + """Get the total table of contents, containing the master_doc + and pre and post files not managed by sphinx. + """ + doctree = self.env.get_and_resolve_doctree(self.config.master_doc, + self, prune_toctrees=False, + includehidden=True) + self.refnodes = self.get_refnodes(doctree, []) + master_dir = path.dirname(self.config.master_doc) + if master_dir: + master_dir += '/' # XXX or os.sep? + for item in self.refnodes: + item['refuri'] = master_dir + item['refuri'] + self.toc_add_files(self.refnodes) + + def toc_add_files(self, refnodes: List[Dict[str, Any]]) -> None: + """Add the master_doc, pre and post files to a list of refnodes. + """ + refnodes.insert(0, { + 'level': 1, + 'refuri': html.escape(self.config.master_doc + self.out_suffix), + 'text': ssp(html.escape( + self.env.titles[self.config.master_doc].astext())) + }) + for file, text in reversed(self.config.epub_pre_files): + refnodes.insert(0, { + 'level': 1, + 'refuri': html.escape(file), + 'text': ssp(html.escape(text)) + }) + for file, text in self.config.epub_post_files: + refnodes.append({ + 'level': 1, + 'refuri': html.escape(file), + 'text': ssp(html.escape(text)) + }) + + def fix_fragment(self, prefix: str, fragment: str) -> str: + """Return a href/id attribute with colons replaced by hyphens.""" + return prefix + fragment.replace(':', '-') + + def fix_ids(self, tree: nodes.document) -> None: + """Replace colons with hyphens in href and id attributes. + + Some readers crash because they interpret the part as a + transport protocol specification. + """ + def update_node_id(node: Element) -> None: + """Update IDs of given *node*.""" + new_ids = [] + for node_id in node['ids']: + new_id = self.fix_fragment('', node_id) + if new_id not in new_ids: + new_ids.append(new_id) + node['ids'] = new_ids + + for reference in tree.traverse(nodes.reference): + if 'refuri' in reference: + m = self.refuri_re.match(reference['refuri']) + if m: + reference['refuri'] = self.fix_fragment(m.group(1), m.group(2)) + if 'refid' in reference: + reference['refid'] = self.fix_fragment('', reference['refid']) + + for target in tree.traverse(nodes.target): + update_node_id(target) + + next_node = target.next_node(ascend=True) # type: Node + if isinstance(next_node, nodes.Element): + update_node_id(next_node) + + for desc_signature in tree.traverse(addnodes.desc_signature): + update_node_id(desc_signature) + + def add_visible_links(self, tree: nodes.document, show_urls: str = 'inline') -> None: + """Add visible link targets for external links""" + + def make_footnote_ref(doc: nodes.document, label: str) -> nodes.footnote_reference: + """Create a footnote_reference node with children""" + footnote_ref = nodes.footnote_reference('[#]_') + footnote_ref.append(nodes.Text(label)) + doc.note_autofootnote_ref(footnote_ref) + return footnote_ref + + def make_footnote(doc: nodes.document, label: str, uri: str) -> nodes.footnote: + """Create a footnote node with children""" + footnote = nodes.footnote(uri) + para = nodes.paragraph() + para.append(nodes.Text(uri)) + footnote.append(para) + footnote.insert(0, nodes.label('', label)) + doc.note_autofootnote(footnote) + return footnote + + def footnote_spot(tree: nodes.document) -> Tuple[Element, int]: + """Find or create a spot to place footnotes. + + The function returns the tuple (parent, index).""" + # The code uses the following heuristic: + # a) place them after the last existing footnote + # b) place them after an (empty) Footnotes rubric + # c) create an empty Footnotes rubric at the end of the document + fns = tree.traverse(nodes.footnote) + if fns: + fn = fns[-1] + return fn.parent, fn.parent.index(fn) + 1 + for node in tree.traverse(nodes.rubric): + if len(node) == 1 and node.astext() == FOOTNOTES_RUBRIC_NAME: + return node.parent, node.parent.index(node) + 1 + doc = tree.traverse(nodes.document)[0] + rub = nodes.rubric() + rub.append(nodes.Text(FOOTNOTES_RUBRIC_NAME)) + doc.append(rub) + return doc, doc.index(rub) + 1 + + if show_urls == 'no': + return + if show_urls == 'footnote': + doc = tree.traverse(nodes.document)[0] + fn_spot, fn_idx = footnote_spot(tree) + nr = 1 + for node in tree.traverse(nodes.reference): + uri = node.get('refuri', '') + if (uri.startswith('http:') or uri.startswith('https:') or + uri.startswith('ftp:')) and uri not in node.astext(): + idx = node.parent.index(node) + 1 + if show_urls == 'inline': + uri = self.link_target_template % {'uri': uri} + link = nodes.inline(uri, uri) + link['classes'].append(self.css_link_target_class) + node.parent.insert(idx, link) + elif show_urls == 'footnote': + label = FOOTNOTE_LABEL_TEMPLATE % nr + nr += 1 + footnote_ref = make_footnote_ref(doc, label) + node.parent.insert(idx, footnote_ref) + footnote = make_footnote(doc, label, uri) + fn_spot.insert(fn_idx, footnote) + footnote_ref['refid'] = footnote['ids'][0] + footnote.add_backref(footnote_ref['ids'][0]) + fn_idx += 1 + + def write_doc(self, docname: str, doctree: nodes.document) -> None: + """Write one document file. + + This method is overwritten in order to fix fragment identifiers + and to add visible external links. + """ + self.fix_ids(doctree) + self.add_visible_links(doctree, self.config.epub_show_urls) + super().write_doc(docname, doctree) + + def fix_genindex(self, tree: List[Tuple[str, List[Tuple[str, Any]]]]) -> None: + """Fix href attributes for genindex pages.""" + # XXX: modifies tree inline + # Logic modeled from themes/basic/genindex.html + for key, columns in tree: + for entryname, (links, subitems, key_) in columns: + for (i, (ismain, link)) in enumerate(links): + m = self.refuri_re.match(link) + if m: + links[i] = (ismain, + self.fix_fragment(m.group(1), m.group(2))) + for subentryname, subentrylinks in subitems: + for (i, (ismain, link)) in enumerate(subentrylinks): + m = self.refuri_re.match(link) + if m: + subentrylinks[i] = (ismain, + self.fix_fragment(m.group(1), m.group(2))) + + def is_vector_graphics(self, filename: str) -> bool: + """Does the filename extension indicate a vector graphic format?""" + ext = path.splitext(filename)[-1] + return ext in VECTOR_GRAPHICS_EXTENSIONS + + def copy_image_files_pil(self) -> None: + """Copy images using Pillow, the Python Imaging Libary. + The method tries to read and write the files with Pillow, converting + the format and resizing the image if necessary/possible. + """ + ensuredir(path.join(self.outdir, self.imagedir)) + for src in status_iterator(self.images, __('copying images... '), "brown", + len(self.images), self.app.verbosity): + dest = self.images[src] + try: + img = Image.open(path.join(self.srcdir, src)) + except OSError: + if not self.is_vector_graphics(src): + logger.warning(__('cannot read image file %r: copying it instead'), + path.join(self.srcdir, src)) + try: + copyfile(path.join(self.srcdir, src), + path.join(self.outdir, self.imagedir, dest)) + except OSError as err: + logger.warning(__('cannot copy image file %r: %s'), + path.join(self.srcdir, src), err) + continue + if self.config.epub_fix_images: + if img.mode in ('P',): + # See the Pillow documentation for Image.convert() + # https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.Image.convert + img = img.convert() + if self.config.epub_max_image_width > 0: + (width, height) = img.size + nw = self.config.epub_max_image_width + if width > nw: + nh = (height * nw) / width + img = img.resize((nw, nh), Image.BICUBIC) + try: + img.save(path.join(self.outdir, self.imagedir, dest)) + except OSError as err: + logger.warning(__('cannot write image file %r: %s'), + path.join(self.srcdir, src), err) + + def copy_image_files(self) -> None: + """Copy image files to destination directory. + This overwritten method can use Pillow to convert image files. + """ + if self.images: + if self.config.epub_fix_images or self.config.epub_max_image_width: + if not Image: + logger.warning(__('Pillow not found - copying image files')) + super().copy_image_files() + else: + self.copy_image_files_pil() + else: + super().copy_image_files() + + def copy_download_files(self) -> None: + pass + + def handle_page(self, pagename: str, addctx: Dict, templatename: str = 'page.html', + outfilename: str = None, event_arg: Any = None) -> None: + """Create a rendered page. + + This method is overwritten for genindex pages in order to fix href link + attributes. + """ + if pagename.startswith('genindex') and 'genindexentries' in addctx: + if not self.use_index: + return + self.fix_genindex(addctx['genindexentries']) + addctx['doctype'] = self.doctype + super().handle_page(pagename, addctx, templatename, outfilename, event_arg) + + def build_mimetype(self, outdir: str = None, outname: str = 'mimetype') -> None: + """Write the metainfo file mimetype.""" + if outdir: + warnings.warn('The arguments of EpubBuilder.build_mimetype() is deprecated.', + RemovedInSphinx40Warning, stacklevel=2) + else: + outdir = self.outdir + + logger.info(__('writing %s file...'), outname) + copy_asset_file(path.join(self.template_dir, 'mimetype'), + path.join(outdir, outname)) + + def build_container(self, outdir: str = None, outname: str = 'META-INF/container.xml') -> None: # NOQA + """Write the metainfo file META-INF/container.xml.""" + if outdir: + warnings.warn('The arguments of EpubBuilder.build_container() is deprecated.', + RemovedInSphinx40Warning, stacklevel=2) + else: + outdir = self.outdir + + logger.info(__('writing %s file...'), outname) + filename = path.join(outdir, outname) + ensuredir(path.dirname(filename)) + copy_asset_file(path.join(self.template_dir, 'container.xml'), filename) + + def content_metadata(self) -> Dict[str, Any]: + """Create a dictionary with all metadata for the content.opf + file properly escaped. + """ + metadata = {} # type: Dict[str, Any] + metadata['title'] = html.escape(self.config.epub_title) + metadata['author'] = html.escape(self.config.epub_author) + metadata['uid'] = html.escape(self.config.epub_uid) + metadata['lang'] = html.escape(self.config.epub_language) + metadata['publisher'] = html.escape(self.config.epub_publisher) + metadata['copyright'] = html.escape(self.config.epub_copyright) + metadata['scheme'] = html.escape(self.config.epub_scheme) + metadata['id'] = html.escape(self.config.epub_identifier) + metadata['date'] = html.escape(format_date("%Y-%m-%d")) + metadata['manifest_items'] = [] + metadata['spines'] = [] + metadata['guides'] = [] + return metadata + + def build_content(self, outdir: str = None, outname: str = 'content.opf') -> None: + """Write the metainfo file content.opf It contains bibliographic data, + a file list and the spine (the reading order). + """ + if outdir: + warnings.warn('The arguments of EpubBuilder.build_content() is deprecated.', + RemovedInSphinx40Warning, stacklevel=2) + else: + outdir = self.outdir + + logger.info(__('writing %s file...'), outname) + metadata = self.content_metadata() + + # files + if not outdir.endswith(os.sep): + outdir += os.sep + olen = len(outdir) + self.files = [] # type: List[str] + self.ignored_files = ['.buildinfo', 'mimetype', 'content.opf', + 'toc.ncx', 'META-INF/container.xml', + 'Thumbs.db', 'ehthumbs.db', '.DS_Store', + 'nav.xhtml', self.config.epub_basename + '.epub'] + \ + self.config.epub_exclude_files + if not self.use_index: + self.ignored_files.append('genindex' + self.out_suffix) + for root, dirs, files in os.walk(outdir): + dirs.sort() + for fn in sorted(files): + filename = path.join(root, fn)[olen:] + if filename in self.ignored_files: + continue + ext = path.splitext(filename)[-1] + if ext not in self.media_types: + # we always have JS and potentially OpenSearch files, don't + # always warn about them + if ext not in ('.js', '.xml'): + logger.warning(__('unknown mimetype for %s, ignoring'), filename, + type='epub', subtype='unknown_project_files') + continue + filename = filename.replace(os.sep, '/') + item = ManifestItem(html.escape(filename), + html.escape(self.make_id(filename)), + html.escape(self.media_types[ext])) + metadata['manifest_items'].append(item) + self.files.append(filename) + + # spine + spinefiles = set() + for refnode in self.refnodes: + if '#' in refnode['refuri']: + continue + if refnode['refuri'] in self.ignored_files: + continue + spine = Spine(html.escape(self.make_id(refnode['refuri'])), True) + metadata['spines'].append(spine) + spinefiles.add(refnode['refuri']) + for info in self.domain_indices: + spine = Spine(html.escape(self.make_id(info[0] + self.out_suffix)), True) + metadata['spines'].append(spine) + spinefiles.add(info[0] + self.out_suffix) + if self.use_index: + spine = Spine(html.escape(self.make_id('genindex' + self.out_suffix)), True) + metadata['spines'].append(spine) + spinefiles.add('genindex' + self.out_suffix) + # add auto generated files + for name in self.files: + if name not in spinefiles and name.endswith(self.out_suffix): + spine = Spine(html.escape(self.make_id(name)), False) + metadata['spines'].append(spine) + + # add the optional cover + html_tmpl = None + if self.config.epub_cover: + image, html_tmpl = self.config.epub_cover + image = image.replace(os.sep, '/') + metadata['cover'] = html.escape(self.make_id(image)) + if html_tmpl: + spine = Spine(html.escape(self.make_id(self.coverpage_name)), True) + metadata['spines'].insert(0, spine) + if self.coverpage_name not in self.files: + ext = path.splitext(self.coverpage_name)[-1] + self.files.append(self.coverpage_name) + item = ManifestItem(html.escape(self.coverpage_name), + html.escape(self.make_id(self.coverpage_name)), + html.escape(self.media_types[ext])) + metadata['manifest_items'].append(item) + ctx = {'image': html.escape(image), 'title': self.config.project} + self.handle_page( + path.splitext(self.coverpage_name)[0], ctx, html_tmpl) + spinefiles.add(self.coverpage_name) + + auto_add_cover = True + auto_add_toc = True + if self.config.epub_guide: + for type, uri, title in self.config.epub_guide: + file = uri.split('#')[0] + if file not in self.files: + self.files.append(file) + if type == 'cover': + auto_add_cover = False + if type == 'toc': + auto_add_toc = False + metadata['guides'].append(Guide(html.escape(type), + html.escape(title), + html.escape(uri))) + if auto_add_cover and html_tmpl: + metadata['guides'].append(Guide('cover', + self.guide_titles['cover'], + html.escape(self.coverpage_name))) + if auto_add_toc and self.refnodes: + metadata['guides'].append(Guide('toc', + self.guide_titles['toc'], + html.escape(self.refnodes[0]['refuri']))) + + # write the project file + copy_asset_file(path.join(self.template_dir, 'content.opf_t'), + path.join(outdir, outname), + metadata) + + def new_navpoint(self, node: Dict[str, Any], level: int, incr: bool = True) -> NavPoint: + """Create a new entry in the toc from the node at given level.""" + # XXX Modifies the node + if incr: + self.playorder += 1 + self.tocid += 1 + return NavPoint('navPoint%d' % self.tocid, self.playorder, + node['text'], node['refuri'], []) + + def build_navpoints(self, nodes: List[Dict[str, Any]]) -> List[NavPoint]: + """Create the toc navigation structure. + + Subelements of a node are nested inside the navpoint. For nested nodes + the parent node is reinserted in the subnav. + """ + navstack = [] # type: List[NavPoint] + navstack.append(NavPoint('dummy', '', '', '', [])) + level = 0 + lastnode = None + for node in nodes: + if not node['text']: + continue + file = node['refuri'].split('#')[0] + if file in self.ignored_files: + continue + if node['level'] > self.config.epub_tocdepth: + continue + if node['level'] == level: + navpoint = self.new_navpoint(node, level) + navstack.pop() + navstack[-1].children.append(navpoint) + navstack.append(navpoint) + elif node['level'] == level + 1: + level += 1 + if lastnode and self.config.epub_tocdup: + # Insert starting point in subtoc with same playOrder + navstack[-1].children.append(self.new_navpoint(lastnode, level, False)) + navpoint = self.new_navpoint(node, level) + navstack[-1].children.append(navpoint) + navstack.append(navpoint) + elif node['level'] < level: + while node['level'] < len(navstack): + navstack.pop() + level = node['level'] + navpoint = self.new_navpoint(node, level) + navstack[-1].children.append(navpoint) + navstack.append(navpoint) + else: + raise + lastnode = node + + return navstack[0].children + + def toc_metadata(self, level: int, navpoints: List[NavPoint]) -> Dict[str, Any]: + """Create a dictionary with all metadata for the toc.ncx file + properly escaped. + """ + metadata = {} # type: Dict[str, Any] + metadata['uid'] = self.config.epub_uid + metadata['title'] = html.escape(self.config.epub_title) + metadata['level'] = level + metadata['navpoints'] = navpoints + return metadata + + def build_toc(self, outdir: str = None, outname: str = 'toc.ncx') -> None: + """Write the metainfo file toc.ncx.""" + if outdir: + warnings.warn('The arguments of EpubBuilder.build_toc() is deprecated.', + RemovedInSphinx40Warning, stacklevel=2) + else: + outdir = self.outdir + + logger.info(__('writing %s file...'), outname) + + if self.config.epub_tocscope == 'default': + doctree = self.env.get_and_resolve_doctree(self.config.master_doc, + self, prune_toctrees=False, + includehidden=False) + refnodes = self.get_refnodes(doctree, []) + self.toc_add_files(refnodes) + else: + # 'includehidden' + refnodes = self.refnodes + self.check_refnodes(refnodes) + navpoints = self.build_navpoints(refnodes) + level = max(item['level'] for item in self.refnodes) + level = min(level, self.config.epub_tocdepth) + copy_asset_file(path.join(self.template_dir, 'toc.ncx_t'), + path.join(outdir, outname), + self.toc_metadata(level, navpoints)) + + def build_epub(self, outdir: str = None, outname: str = None) -> None: + """Write the epub file. + + It is a zip file with the mimetype file stored uncompressed as the first + entry. + """ + if outdir: + warnings.warn('The arguments of EpubBuilder.build_epub() is deprecated.', + RemovedInSphinx40Warning, stacklevel=2) + else: + outdir = self.outdir + outname = self.config.epub_basename + '.epub' + + logger.info(__('writing %s file...'), outname) + epub_filename = path.join(outdir, outname) + with ZipFile(epub_filename, 'w', ZIP_DEFLATED) as epub: + epub.write(path.join(outdir, 'mimetype'), 'mimetype', ZIP_STORED) + for filename in ['META-INF/container.xml', 'content.opf', 'toc.ncx']: + epub.write(path.join(outdir, filename), filename, ZIP_DEFLATED) + for filename in self.files: + epub.write(path.join(outdir, filename), filename, ZIP_DEFLATED) diff --git a/sphinx/sphinx/builders/applehelp.py b/sphinx/sphinx/builders/applehelp.py new file mode 100644 index 0000000..f081f9f --- /dev/null +++ b/sphinx/sphinx/builders/applehelp.py @@ -0,0 +1,42 @@ +""" + sphinx.builders.applehelp + ~~~~~~~~~~~~~~~~~~~~~~~~~ + + Build Apple help books. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import warnings +from typing import Any, Dict + +from sphinxcontrib.applehelp import ( + AppleHelpCodeSigningFailed, + AppleHelpIndexerFailed, + AppleHelpBuilder, +) + +from sphinx.application import Sphinx +from sphinx.deprecation import RemovedInSphinx40Warning, deprecated_alias + + +deprecated_alias('sphinx.builders.applehelp', + { + 'AppleHelpCodeSigningFailed': AppleHelpCodeSigningFailed, + 'AppleHelpIndexerFailed': AppleHelpIndexerFailed, + 'AppleHelpBuilder': AppleHelpBuilder, + }, + RemovedInSphinx40Warning) + + +def setup(app: Sphinx) -> Dict[str, Any]: + warnings.warn('sphinx.builders.applehelp has been moved to sphinxcontrib-applehelp.', + RemovedInSphinx40Warning) + app.setup_extension('sphinxcontrib.applehelp') + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/builders/changes.py b/sphinx/sphinx/builders/changes.py new file mode 100644 index 0000000..7cf9d09 --- /dev/null +++ b/sphinx/sphinx/builders/changes.py @@ -0,0 +1,169 @@ +""" + sphinx.builders.changes + ~~~~~~~~~~~~~~~~~~~~~~~ + + Changelog builder. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import html +from os import path +from typing import Any, Dict, List, Tuple +from typing import cast + +from sphinx import package_dir +from sphinx.application import Sphinx +from sphinx.builders import Builder +from sphinx.domains.changeset import ChangeSetDomain +from sphinx.locale import _, __ +from sphinx.theming import HTMLThemeFactory +from sphinx.util import logging +from sphinx.util.console import bold # type: ignore +from sphinx.util.fileutil import copy_asset_file +from sphinx.util.osutil import ensuredir, os_path + + +logger = logging.getLogger(__name__) + + +class ChangesBuilder(Builder): + """ + Write a summary with all versionadded/changed directives. + """ + name = 'changes' + epilog = __('The overview file is in %(outdir)s.') + + def init(self) -> None: + self.create_template_bridge() + theme_factory = HTMLThemeFactory(self.app) + self.theme = theme_factory.create('default') + self.templates.init(self, self.theme) + + def get_outdated_docs(self) -> str: + return self.outdir + + typemap = { + 'versionadded': 'added', + 'versionchanged': 'changed', + 'deprecated': 'deprecated', + } + + def write(self, *ignored: Any) -> None: + version = self.config.version + domain = cast(ChangeSetDomain, self.env.get_domain('changeset')) + libchanges = {} # type: Dict[str, List[Tuple[str, str, int]]] + apichanges = [] # type: List[Tuple[str, str, int]] + otherchanges = {} # type: Dict[Tuple[str, str], List[Tuple[str, str, int]]] + + changesets = domain.get_changesets_for(version) + if not changesets: + logger.info(bold(__('no changes in version %s.') % version)) + return + logger.info(bold(__('writing summary file...'))) + for changeset in changesets: + if isinstance(changeset.descname, tuple): + descname = changeset.descname[0] + else: + descname = changeset.descname + ttext = self.typemap[changeset.type] + context = changeset.content.replace('\n', ' ') + if descname and changeset.docname.startswith('c-api'): + if context: + entry = '<b>%s</b>: <i>%s:</i> %s' % (descname, ttext, + context) + else: + entry = '<b>%s</b>: <i>%s</i>.' % (descname, ttext) + apichanges.append((entry, changeset.docname, changeset.lineno)) + elif descname or changeset.module: + module = changeset.module or _('Builtins') + if not descname: + descname = _('Module level') + if context: + entry = '<b>%s</b>: <i>%s:</i> %s' % (descname, ttext, + context) + else: + entry = '<b>%s</b>: <i>%s</i>.' % (descname, ttext) + libchanges.setdefault(module, []).append((entry, changeset.docname, + changeset.lineno)) + else: + if not context: + continue + entry = '<i>%s:</i> %s' % (ttext.capitalize(), context) + title = self.env.titles[changeset.docname].astext() + otherchanges.setdefault((changeset.docname, title), []).append( + (entry, changeset.docname, changeset.lineno)) + + ctx = { + 'project': self.config.project, + 'version': version, + 'docstitle': self.config.html_title, + 'shorttitle': self.config.html_short_title, + 'libchanges': sorted(libchanges.items()), + 'apichanges': sorted(apichanges), + 'otherchanges': sorted(otherchanges.items()), + 'show_copyright': self.config.html_show_copyright, + 'show_sphinx': self.config.html_show_sphinx, + } + with open(path.join(self.outdir, 'index.html'), 'w', encoding='utf8') as f: + f.write(self.templates.render('changes/frameset.html', ctx)) + with open(path.join(self.outdir, 'changes.html'), 'w', encoding='utf8') as f: + f.write(self.templates.render('changes/versionchanges.html', ctx)) + + hltext = ['.. versionadded:: %s' % version, + '.. versionchanged:: %s' % version, + '.. deprecated:: %s' % version] + + def hl(no: int, line: str) -> str: + line = '<a name="L%s"> </a>' % no + html.escape(line) + for x in hltext: + if x in line: + line = '<span class="hl">%s</span>' % line + break + return line + + logger.info(bold(__('copying source files...'))) + for docname in self.env.all_docs: + with open(self.env.doc2path(docname), + encoding=self.env.config.source_encoding) as f: + try: + lines = f.readlines() + except UnicodeDecodeError: + logger.warning(__('could not read %r for changelog creation'), docname) + continue + targetfn = path.join(self.outdir, 'rst', os_path(docname)) + '.html' + ensuredir(path.dirname(targetfn)) + with open(targetfn, 'w', encoding='utf-8') as f: + text = ''.join(hl(i + 1, line) for (i, line) in enumerate(lines)) + ctx = { + 'filename': self.env.doc2path(docname, None), + 'text': text + } + f.write(self.templates.render('changes/rstsource.html', ctx)) + themectx = {'theme_' + key: val for (key, val) in + self.theme.get_options({}).items()} + copy_asset_file(path.join(package_dir, 'themes', 'default', 'static', 'default.css_t'), + self.outdir, context=themectx, renderer=self.templates) + copy_asset_file(path.join(package_dir, 'themes', 'basic', 'static', 'basic.css'), + self.outdir) + + def hl(self, text: str, version: str) -> str: + text = html.escape(text) + for directive in ['versionchanged', 'versionadded', 'deprecated']: + text = text.replace('.. %s:: %s' % (directive, version), + '<b>.. %s:: %s</b>' % (directive, version)) + return text + + def finish(self) -> None: + pass + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_builder(ChangesBuilder) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/builders/devhelp.py b/sphinx/sphinx/builders/devhelp.py new file mode 100644 index 0000000..dda7c41 --- /dev/null +++ b/sphinx/sphinx/builders/devhelp.py @@ -0,0 +1,38 @@ +""" + sphinx.builders.devhelp + ~~~~~~~~~~~~~~~~~~~~~~~ + + Build HTML documentation and Devhelp_ support files. + + .. _Devhelp: https://wiki.gnome.org/Apps/Devhelp + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import warnings +from typing import Any, Dict + +from sphinxcontrib.devhelp import DevhelpBuilder + +from sphinx.application import Sphinx +from sphinx.deprecation import RemovedInSphinx40Warning, deprecated_alias + + +deprecated_alias('sphinx.builders.devhelp', + { + 'DevhelpBuilder': DevhelpBuilder, + }, + RemovedInSphinx40Warning) + + +def setup(app: Sphinx) -> Dict[str, Any]: + warnings.warn('sphinx.builders.devhelp has been moved to sphinxcontrib-devhelp.', + RemovedInSphinx40Warning) + app.setup_extension('sphinxcontrib.devhelp') + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/builders/dirhtml.py b/sphinx/sphinx/builders/dirhtml.py new file mode 100644 index 0000000..ba60c92 --- /dev/null +++ b/sphinx/sphinx/builders/dirhtml.py @@ -0,0 +1,66 @@ +""" + sphinx.builders.dirhtml + ~~~~~~~~~~~~~~~~~~~~~~~ + + Directory HTML builders. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from os import path +from typing import Any, Dict + +from sphinx.application import Sphinx +from sphinx.builders.html import StandaloneHTMLBuilder +from sphinx.deprecation import RemovedInSphinx40Warning, deprecated_alias +from sphinx.util import logging +from sphinx.util.osutil import SEP, os_path + +logger = logging.getLogger(__name__) + + +class DirectoryHTMLBuilder(StandaloneHTMLBuilder): + """ + A StandaloneHTMLBuilder that creates all HTML pages as "index.html" in + a directory given by their pagename, so that generated URLs don't have + ``.html`` in them. + """ + name = 'dirhtml' + + def get_target_uri(self, docname: str, typ: str = None) -> str: + if docname == 'index': + return '' + if docname.endswith(SEP + 'index'): + return docname[:-5] # up to sep + return docname + SEP + + def get_outfilename(self, pagename: str) -> str: + if pagename == 'index' or pagename.endswith(SEP + 'index'): + outfilename = path.join(self.outdir, os_path(pagename) + + self.out_suffix) + else: + outfilename = path.join(self.outdir, os_path(pagename), + 'index' + self.out_suffix) + + return outfilename + + +# for compatibility +deprecated_alias('sphinx.builders.html', + { + 'DirectoryHTMLBuilder': DirectoryHTMLBuilder, + }, + RemovedInSphinx40Warning) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.setup_extension('sphinx.builders.html') + + app.add_builder(DirectoryHTMLBuilder) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/builders/dummy.py b/sphinx/sphinx/builders/dummy.py new file mode 100644 index 0000000..33d2506 --- /dev/null +++ b/sphinx/sphinx/builders/dummy.py @@ -0,0 +1,52 @@ +""" + sphinx.builders.dummy + ~~~~~~~~~~~~~~~~~~~~~ + + Do syntax checks, but no writing. + + :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Any, Dict, Set + +from docutils.nodes import Node + +from sphinx.application import Sphinx +from sphinx.builders import Builder +from sphinx.locale import __ + + +class DummyBuilder(Builder): + name = 'dummy' + epilog = __('The dummy builder generates no files.') + + allow_parallel = True + + def init(self) -> None: + pass + + def get_outdated_docs(self) -> Set[str]: + return self.env.found_docs + + def get_target_uri(self, docname: str, typ: str = None) -> str: + return '' + + def prepare_writing(self, docnames: Set[str]) -> None: + pass + + def write_doc(self, docname: str, doctree: Node) -> None: + pass + + def finish(self) -> None: + pass + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_builder(DummyBuilder) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/builders/epub3.py b/sphinx/sphinx/builders/epub3.py new file mode 100644 index 0000000..cf795f3 --- /dev/null +++ b/sphinx/sphinx/builders/epub3.py @@ -0,0 +1,292 @@ +""" + sphinx.builders.epub3 + ~~~~~~~~~~~~~~~~~~~~~ + + Build epub3 files. + Originally derived from epub.py. + + :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import html +import warnings +from collections import namedtuple +from os import path +from typing import Any, Dict, List, Set, Tuple + +from sphinx import package_dir +from sphinx.application import Sphinx +from sphinx.builders import _epub_base +from sphinx.config import Config, ENUM +from sphinx.deprecation import RemovedInSphinx40Warning +from sphinx.locale import __ +from sphinx.util import logging, xmlname_checker +from sphinx.util.fileutil import copy_asset_file +from sphinx.util.i18n import format_date +from sphinx.util.osutil import make_filename + +logger = logging.getLogger(__name__) + + +NavPoint = namedtuple('NavPoint', ['text', 'refuri', 'children']) + +# writing modes +PAGE_PROGRESSION_DIRECTIONS = { + 'horizontal': 'ltr', + 'vertical': 'rtl', +} +IBOOK_SCROLL_AXIS = { + 'horizontal': 'vertical', + 'vertical': 'horizontal', +} +THEME_WRITING_MODES = { + 'vertical': 'vertical-rl', + 'horizontal': 'horizontal-tb', +} + +DOCTYPE = '''<!DOCTYPE html>''' + +HTML_TAG = ( + '<html xmlns="http://www.w3.org/1999/xhtml" ' + 'xmlns:epub="http://www.idpf.org/2007/ops">' +) + + +class Epub3Builder(_epub_base.EpubBuilder): + """ + Builder that outputs epub3 files. + + It creates the metainfo files content.opf, nav.xhtml, toc.ncx, mimetype, + and META-INF/container.xml. Afterwards, all necessary files are zipped to + an epub file. + """ + name = 'epub' + epilog = __('The ePub file is in %(outdir)s.') + + supported_remote_images = False + template_dir = path.join(package_dir, 'templates', 'epub3') + doctype = DOCTYPE + html_tag = HTML_TAG + use_meta_charset = True + + # Finish by building the epub file + def handle_finish(self) -> None: + """Create the metainfo files and finally the epub.""" + self.get_toc() + self.build_mimetype() + self.build_container() + self.build_content() + self.build_navigation_doc() + self.build_toc() + self.build_epub() + + def validate_config_value(self) -> None: + warnings.warn('Epub3Builder.validate_config_value() is deprecated.', + RemovedInSphinx40Warning, stacklevel=2) + + def content_metadata(self) -> Dict: + """Create a dictionary with all metadata for the content.opf + file properly escaped. + """ + writing_mode = self.config.epub_writing_mode + + metadata = super().content_metadata() + metadata['description'] = html.escape(self.config.epub_description) + metadata['contributor'] = html.escape(self.config.epub_contributor) + metadata['page_progression_direction'] = PAGE_PROGRESSION_DIRECTIONS.get(writing_mode) + metadata['ibook_scroll_axis'] = IBOOK_SCROLL_AXIS.get(writing_mode) + metadata['date'] = html.escape(format_date("%Y-%m-%dT%H:%M:%SZ")) + metadata['version'] = html.escape(self.config.version) + metadata['epub_version'] = self.config.epub_version + return metadata + + def prepare_writing(self, docnames: Set[str]) -> None: + super().prepare_writing(docnames) + + writing_mode = self.config.epub_writing_mode + self.globalcontext['theme_writing_mode'] = THEME_WRITING_MODES.get(writing_mode) + self.globalcontext['html_tag'] = self.html_tag + self.globalcontext['use_meta_charset'] = self.use_meta_charset + self.globalcontext['skip_ua_compatible'] = True + + def build_navlist(self, navnodes: List[Dict[str, Any]]) -> List[NavPoint]: + """Create the toc navigation structure. + + This method is almost same as build_navpoints method in epub.py. + This is because the logical navigation structure of epub3 is not + different from one of epub2. + + The difference from build_navpoints method is templates which are used + when generating navigation documents. + """ + navstack = [] # type: List[NavPoint] + navstack.append(NavPoint('', '', [])) + level = 0 + for node in navnodes: + if not node['text']: + continue + file = node['refuri'].split('#')[0] + if file in self.ignored_files: + continue + if node['level'] > self.config.epub_tocdepth: + continue + + navpoint = NavPoint(node['text'], node['refuri'], []) + if node['level'] == level: + navstack.pop() + navstack[-1].children.append(navpoint) + navstack.append(navpoint) + elif node['level'] == level + 1: + level += 1 + navstack[-1].children.append(navpoint) + navstack.append(navpoint) + elif node['level'] < level: + while node['level'] < len(navstack): + navstack.pop() + level = node['level'] + navstack[-1].children.append(navpoint) + navstack.append(navpoint) + else: + raise RuntimeError('Should never reach here. It might be a bug.') + + return navstack[0].children + + def navigation_doc_metadata(self, navlist: List[NavPoint]) -> Dict: + """Create a dictionary with all metadata for the nav.xhtml file + properly escaped. + """ + metadata = {} # type: Dict + metadata['lang'] = html.escape(self.config.epub_language) + metadata['toc_locale'] = html.escape(self.guide_titles['toc']) + metadata['navlist'] = navlist + return metadata + + def build_navigation_doc(self, outdir: str = None, outname: str = 'nav.xhtml') -> None: + """Write the metainfo file nav.xhtml.""" + if outdir: + warnings.warn('The arguments of Epub3Builder.build_navigation_doc() ' + 'is deprecated.', RemovedInSphinx40Warning, stacklevel=2) + else: + outdir = self.outdir + + logger.info(__('writing %s file...'), outname) + + if self.config.epub_tocscope == 'default': + doctree = self.env.get_and_resolve_doctree( + self.config.master_doc, self, + prune_toctrees=False, includehidden=False) + refnodes = self.get_refnodes(doctree, []) + self.toc_add_files(refnodes) + else: + # 'includehidden' + refnodes = self.refnodes + navlist = self.build_navlist(refnodes) + copy_asset_file(path.join(self.template_dir, 'nav.xhtml_t'), + path.join(outdir, outname), + self.navigation_doc_metadata(navlist)) + + # Add nav.xhtml to epub file + if outname not in self.files: + self.files.append(outname) + + +def validate_config_values(app: Sphinx) -> None: + if app.builder.name != 'epub': + return + + # <package> lang attribute, dc:language + if not app.config.epub_language: + logger.warning(__('conf value "epub_language" (or "language") ' + 'should not be empty for EPUB3')) + # <package> unique-identifier attribute + if not xmlname_checker().match(app.config.epub_uid): + logger.warning(__('conf value "epub_uid" should be XML NAME for EPUB3')) + # dc:title + if not app.config.epub_title: + logger.warning(__('conf value "epub_title" (or "html_title") ' + 'should not be empty for EPUB3')) + # dc:creator + if not app.config.epub_author: + logger.warning(__('conf value "epub_author" should not be empty for EPUB3')) + # dc:contributor + if not app.config.epub_contributor: + logger.warning(__('conf value "epub_contributor" should not be empty for EPUB3')) + # dc:description + if not app.config.epub_description: + logger.warning(__('conf value "epub_description" should not be empty for EPUB3')) + # dc:publisher + if not app.config.epub_publisher: + logger.warning(__('conf value "epub_publisher" should not be empty for EPUB3')) + # dc:rights + if not app.config.epub_copyright: + logger.warning(__('conf value "epub_copyright" (or "copyright")' + 'should not be empty for EPUB3')) + # dc:identifier + if not app.config.epub_identifier: + logger.warning(__('conf value "epub_identifier" should not be empty for EPUB3')) + # meta ibooks:version + if not app.config.version: + logger.warning(__('conf value "version" should not be empty for EPUB3')) + + +def convert_epub_css_files(app: Sphinx, config: Config) -> None: + """This converts string styled epub_css_files to tuple styled one.""" + epub_css_files = [] # type: List[Tuple[str, Dict]] + for entry in config.epub_css_files: + if isinstance(entry, str): + epub_css_files.append((entry, {})) + else: + try: + filename, attrs = entry + epub_css_files.append((filename, attrs)) + except Exception: + logger.warning(__('invalid css_file: %r, ignored'), entry) + continue + + config.epub_css_files = epub_css_files # type: ignore + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_builder(Epub3Builder) + + # config values + app.add_config_value('epub_basename', lambda self: make_filename(self.project), None) + app.add_config_value('epub_version', 3.0, 'epub') # experimental + app.add_config_value('epub_theme', 'epub', 'epub') + app.add_config_value('epub_theme_options', {}, 'epub') + app.add_config_value('epub_title', lambda self: self.project, 'epub') + app.add_config_value('epub_author', lambda self: self.author, 'epub') + app.add_config_value('epub_language', lambda self: self.language or 'en', 'epub') + app.add_config_value('epub_publisher', lambda self: self.author, 'epub') + app.add_config_value('epub_copyright', lambda self: self.copyright, 'epub') + app.add_config_value('epub_identifier', 'unknown', 'epub') + app.add_config_value('epub_scheme', 'unknown', 'epub') + app.add_config_value('epub_uid', 'unknown', 'env') + app.add_config_value('epub_cover', (), 'env') + app.add_config_value('epub_guide', (), 'env') + app.add_config_value('epub_pre_files', [], 'env') + app.add_config_value('epub_post_files', [], 'env') + app.add_config_value('epub_css_files', lambda config: config.html_css_files, 'epub') + app.add_config_value('epub_exclude_files', [], 'env') + app.add_config_value('epub_tocdepth', 3, 'env') + app.add_config_value('epub_tocdup', True, 'env') + app.add_config_value('epub_tocscope', 'default', 'env') + app.add_config_value('epub_fix_images', False, 'env') + app.add_config_value('epub_max_image_width', 0, 'env') + app.add_config_value('epub_show_urls', 'inline', 'epub') + app.add_config_value('epub_use_index', lambda self: self.html_use_index, 'epub') + app.add_config_value('epub_description', 'unknown', 'epub') + app.add_config_value('epub_contributor', 'unknown', 'epub') + app.add_config_value('epub_writing_mode', 'horizontal', 'epub', + ENUM('horizontal', 'vertical')) + + # event handlers + app.connect('config-inited', convert_epub_css_files, priority=800) + app.connect('builder-inited', validate_config_values) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/builders/gettext.py b/sphinx/sphinx/builders/gettext.py new file mode 100644 index 0000000..65f1125 --- /dev/null +++ b/sphinx/sphinx/builders/gettext.py @@ -0,0 +1,331 @@ +""" + sphinx.builders.gettext + ~~~~~~~~~~~~~~~~~~~~~~~ + + The MessageCatalogBuilder class. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from codecs import open +from collections import defaultdict, OrderedDict +from datetime import datetime, tzinfo, timedelta +from os import path, walk, getenv +from time import time +from typing import Any, Dict, Iterable, Generator, List, Set, Tuple, Union +from uuid import uuid4 + +from docutils import nodes +from docutils.nodes import Element + +from sphinx import addnodes +from sphinx import package_dir +from sphinx.application import Sphinx +from sphinx.builders import Builder +from sphinx.domains.python import pairindextypes +from sphinx.errors import ThemeError +from sphinx.locale import __ +from sphinx.util import split_index_msg, logging, status_iterator +from sphinx.util.console import bold # type: ignore +from sphinx.util.i18n import CatalogInfo, docname_to_domain +from sphinx.util.nodes import extract_messages, traverse_translatable_index +from sphinx.util.osutil import ensuredir, canon_path, relpath +from sphinx.util.tags import Tags +from sphinx.util.template import SphinxRenderer + +if False: + # For type annotation + from typing import DefaultDict # for python3.5.1 + +logger = logging.getLogger(__name__) + +POHEADER = r""" +# SOME DESCRIPTIVE TITLE. +# Copyright (C) %(copyright)s +# This file is distributed under the same license as the %(project)s package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: %(project)s %(version)s\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: %(ctime)s\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +"""[1:] # RemovedInSphinx40Warning + + +class Message: + """An entry of translatable message.""" + def __init__(self, text: str, locations: List[Tuple[str, int]], uuids: List[str]): + self.text = text + self.locations = locations + self.uuids = uuids + + +class Catalog: + """Catalog of translatable messages.""" + + def __init__(self) -> None: + self.messages = [] # type: List[str] + # retain insertion order, a la OrderedDict + self.metadata = OrderedDict() # type: Dict[str, List[Tuple[str, int, str]]] + # msgid -> file, line, uid + + def add(self, msg: str, origin: Union[Element, "MsgOrigin"]) -> None: + if not hasattr(origin, 'uid'): + # Nodes that are replicated like todo don't have a uid, + # however i18n is also unnecessary. + return + if msg not in self.metadata: # faster lookup in hash + self.messages.append(msg) + self.metadata[msg] = [] + self.metadata[msg].append((origin.source, origin.line, origin.uid)) # type: ignore + + def __iter__(self) -> Generator[Message, None, None]: + for message in self.messages: + positions = [(source, line) for source, line, uuid in self.metadata[message]] + uuids = [uuid for source, line, uuid in self.metadata[message]] + yield Message(message, positions, uuids) + + +class MsgOrigin: + """ + Origin holder for Catalog message origin. + """ + + def __init__(self, source: str, line: int) -> None: + self.source = source + self.line = line + self.uid = uuid4().hex + + +class GettextRenderer(SphinxRenderer): + def __init__(self, template_path: str = None, outdir: str = None) -> None: + self.outdir = outdir + if template_path is None: + template_path = path.join(package_dir, 'templates', 'gettext') + super().__init__(template_path) + + def escape(s: str) -> str: + s = s.replace('\\', r'\\') + s = s.replace('"', r'\"') + return s.replace('\n', '\\n"\n"') + + # use texescape as escape filter + self.env.filters['e'] = escape + self.env.filters['escape'] = escape + + def render(self, filename: str, context: Dict) -> str: + def _relpath(s: str) -> str: + return canon_path(relpath(s, self.outdir)) + + context['relpath'] = _relpath + return super().render(filename, context) + + +class I18nTags(Tags): + """Dummy tags module for I18nBuilder. + + To translate all text inside of only nodes, this class + always returns True value even if no tags are defined. + """ + def eval_condition(self, condition: Any) -> bool: + return True + + +class I18nBuilder(Builder): + """ + General i18n builder. + """ + name = 'i18n' + versioning_method = 'text' + versioning_compare = None # type: bool + # be set by `gettext_uuid` + use_message_catalog = False + + def init(self) -> None: + super().init() + self.env.set_versioning_method(self.versioning_method, + self.env.config.gettext_uuid) + self.tags = I18nTags() + self.catalogs = defaultdict(Catalog) # type: DefaultDict[str, Catalog] + + def get_target_uri(self, docname: str, typ: str = None) -> str: + return '' + + def get_outdated_docs(self) -> Set[str]: + return self.env.found_docs + + def prepare_writing(self, docnames: Set[str]) -> None: + return + + def compile_catalogs(self, catalogs: Set[CatalogInfo], message: str) -> None: + return + + def write_doc(self, docname: str, doctree: nodes.document) -> None: + catalog = self.catalogs[docname_to_domain(docname, self.config.gettext_compact)] + + for toctree in self.env.tocs[docname].traverse(addnodes.toctree): + for node, msg in extract_messages(toctree): + node.uid = '' # type: ignore # Hack UUID model + catalog.add(msg, node) + + for node, msg in extract_messages(doctree): + catalog.add(msg, node) + + if 'index' in self.env.config.gettext_additional_targets: + # Extract translatable messages from index entries. + for node, entries in traverse_translatable_index(doctree): + for typ, msg, tid, main, key_ in entries: + for m in split_index_msg(typ, msg): + if typ == 'pair' and m in pairindextypes.values(): + # avoid built-in translated message was incorporated + # in 'sphinx.util.nodes.process_index_entry' + continue + catalog.add(m, node) + + +# determine tzoffset once to remain unaffected by DST change during build +timestamp = time() +tzdelta = datetime.fromtimestamp(timestamp) - \ + datetime.utcfromtimestamp(timestamp) +# set timestamp from SOURCE_DATE_EPOCH if set +# see https://reproducible-builds.org/specs/source-date-epoch/ +source_date_epoch = getenv('SOURCE_DATE_EPOCH') +if source_date_epoch is not None: + timestamp = float(source_date_epoch) + tzdelta = timedelta(0) + + +class LocalTimeZone(tzinfo): + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) # type: ignore + self.tzdelta = tzdelta + + def utcoffset(self, dt: datetime) -> timedelta: + return self.tzdelta + + def dst(self, dt: datetime) -> timedelta: + return timedelta(0) + + +ltz = LocalTimeZone() + + +def should_write(filepath: str, new_content: str) -> bool: + if not path.exists(filepath): + return True + try: + with open(filepath, encoding='utf-8') as oldpot: + old_content = oldpot.read() + old_header_index = old_content.index('"POT-Creation-Date:') + new_header_index = new_content.index('"POT-Creation-Date:') + old_body_index = old_content.index('"PO-Revision-Date:') + new_body_index = new_content.index('"PO-Revision-Date:') + return ((old_content[:old_header_index] != new_content[:new_header_index]) or + (new_content[new_body_index:] != old_content[old_body_index:])) + except ValueError: + pass + + return True + + +class MessageCatalogBuilder(I18nBuilder): + """ + Builds gettext-style message catalogs (.pot files). + """ + name = 'gettext' + epilog = __('The message catalogs are in %(outdir)s.') + + def init(self) -> None: + super().init() + self.create_template_bridge() + self.templates.init(self) + + def _collect_templates(self) -> Set[str]: + template_files = set() + for template_path in self.config.templates_path: + tmpl_abs_path = path.join(self.app.srcdir, template_path) + for dirpath, dirs, files in walk(tmpl_abs_path): + for fn in files: + if fn.endswith('.html'): + filename = canon_path(path.join(dirpath, fn)) + template_files.add(filename) + return template_files + + def _extract_from_template(self) -> None: + files = list(self._collect_templates()) + files.sort() + logger.info(bold(__('building [%s]: ') % self.name), nonl=True) + logger.info(__('targets for %d template files'), len(files)) + + extract_translations = self.templates.environment.extract_translations + + for template in status_iterator(files, __('reading templates... '), "purple", + len(files), self.app.verbosity): + try: + with open(template, encoding='utf-8') as f: + context = f.read() + for line, meth, msg in extract_translations(context): + origin = MsgOrigin(template, line) + self.catalogs['sphinx'].add(msg, origin) + except Exception as exc: + raise ThemeError('%s: %r' % (template, exc)) + + def build(self, docnames: Iterable[str], summary: str = None, method: str = 'update') -> None: # NOQA + self._extract_from_template() + super().build(docnames, summary, method) + + def finish(self) -> None: + super().finish() + context = { + 'version': self.config.version, + 'copyright': self.config.copyright, + 'project': self.config.project, + 'last_translator': self.config.gettext_last_translator, + 'language_team': self.config.gettext_language_team, + 'ctime': datetime.fromtimestamp(timestamp, ltz).strftime('%Y-%m-%d %H:%M%z'), + 'display_location': self.config.gettext_location, + 'display_uuid': self.config.gettext_uuid, + } + for textdomain, catalog in status_iterator(self.catalogs.items(), + __("writing message catalogs... "), + "darkgreen", len(self.catalogs), + self.app.verbosity, + lambda textdomain__: textdomain__[0]): + # noop if config.gettext_compact is set + ensuredir(path.join(self.outdir, path.dirname(textdomain))) + + context['messages'] = list(catalog) + content = GettextRenderer(outdir=self.outdir).render('message.pot_t', context) + + pofn = path.join(self.outdir, textdomain + '.pot') + if should_write(pofn, content): + with open(pofn, 'w', encoding='utf-8') as pofile: + pofile.write(content) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_builder(MessageCatalogBuilder) + + app.add_config_value('gettext_compact', True, 'gettext') + app.add_config_value('gettext_location', True, 'gettext') + app.add_config_value('gettext_uuid', False, 'gettext') + app.add_config_value('gettext_auto_build', True, 'env') + app.add_config_value('gettext_additional_targets', [], 'env') + app.add_config_value('gettext_last_translator', 'FULL NAME <EMAIL@ADDRESS>', 'gettext') + app.add_config_value('gettext_language_team', 'LANGUAGE <LL@li.org>', 'gettext') + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/builders/html/__init__.py b/sphinx/sphinx/builders/html/__init__.py new file mode 100644 index 0000000..109b4d4 --- /dev/null +++ b/sphinx/sphinx/builders/html/__init__.py @@ -0,0 +1,1252 @@ +""" + sphinx.builders.html + ~~~~~~~~~~~~~~~~~~~~ + + Several HTML builders. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import html +import posixpath +import re +import sys +import warnings +from hashlib import md5 +from os import path +from typing import Any, Dict, IO, Iterable, Iterator, List, Set, Tuple + +from docutils import nodes +from docutils.core import publish_parts +from docutils.frontend import OptionParser +from docutils.io import DocTreeInput, StringOutput +from docutils.nodes import Node +from docutils.utils import relative_path + +from sphinx import package_dir, __display_version__ +from sphinx.application import Sphinx +from sphinx.builders import Builder +from sphinx.config import Config +from sphinx.deprecation import RemovedInSphinx40Warning +from sphinx.domains import Domain, Index, IndexEntry +from sphinx.environment.adapters.asset import ImageAdapter +from sphinx.environment.adapters.indexentries import IndexEntries +from sphinx.environment.adapters.toctree import TocTree +from sphinx.errors import ConfigError, ThemeError +from sphinx.highlighting import PygmentsBridge +from sphinx.locale import _, __ +from sphinx.search import js_index +from sphinx.theming import HTMLThemeFactory +from sphinx.util import logging, progress_message, status_iterator +from sphinx.util.docutils import is_html5_writer_available, new_document +from sphinx.util.fileutil import copy_asset +from sphinx.util.i18n import format_date +from sphinx.util.inventory import InventoryFile +from sphinx.util.matching import patmatch, Matcher, DOTFILES +from sphinx.util.osutil import os_path, relative_uri, ensuredir, movefile, copyfile +from sphinx.util.tags import Tags +from sphinx.writers.html import HTMLWriter, HTMLTranslator + +if False: + # For type annotation + from typing import Type # for python3.5.1 + + +# HTML5 Writer is available or not +if is_html5_writer_available(): + from sphinx.writers.html5 import HTML5Translator + html5_ready = True +else: + html5_ready = False + +#: the filename for the inventory of objects +INVENTORY_FILENAME = 'objects.inv' + +logger = logging.getLogger(__name__) +return_codes_re = re.compile('[\r\n]+') + + +def get_stable_hash(obj: Any) -> str: + """ + Return a stable hash for a Python data structure. We can't just use + the md5 of str(obj) since for example dictionary items are enumerated + in unpredictable order due to hash randomization in newer Pythons. + """ + if isinstance(obj, dict): + return get_stable_hash(list(obj.items())) + elif isinstance(obj, (list, tuple)): + obj = sorted(get_stable_hash(o) for o in obj) + return md5(str(obj).encode()).hexdigest() + + +class Stylesheet(str): + """A metadata of stylesheet. + + To keep compatibility with old themes, an instance of stylesheet behaves as + its filename (str). + """ + + attributes = None # type: Dict[str, str] + filename = None # type: str + + def __new__(cls, filename: str, *args: str, **attributes: str) -> "Stylesheet": + self = str.__new__(cls, filename) # type: ignore + self.filename = filename + self.attributes = attributes + self.attributes.setdefault('rel', 'stylesheet') + self.attributes.setdefault('type', 'text/css') + if args: # old style arguments (rel, title) + self.attributes['rel'] = args[0] + self.attributes['title'] = args[1] + + return self + + +class JavaScript(str): + """A metadata of javascript file. + + To keep compatibility with old themes, an instance of javascript behaves as + its filename (str). + """ + + attributes = None # type: Dict[str, str] + filename = None # type: str + + def __new__(cls, filename: str, **attributes: str) -> "JavaScript": + self = str.__new__(cls, filename) # type: ignore + self.filename = filename + self.attributes = attributes + + return self + + +class BuildInfo: + """buildinfo file manipulator. + + HTMLBuilder and its family are storing their own envdata to ``.buildinfo``. + This class is a manipulator for the file. + """ + + @classmethod + def load(cls, f: IO) -> "BuildInfo": + try: + lines = f.readlines() + assert lines[0].rstrip() == '# Sphinx build info version 1' + assert lines[2].startswith('config: ') + assert lines[3].startswith('tags: ') + + build_info = BuildInfo() + build_info.config_hash = lines[2].split()[1].strip() + build_info.tags_hash = lines[3].split()[1].strip() + return build_info + except Exception as exc: + raise ValueError(__('build info file is broken: %r') % exc) + + def __init__(self, config: Config = None, tags: Tags = None, config_categories: List[str] = []) -> None: # NOQA + self.config_hash = '' + self.tags_hash = '' + + if config: + values = {c.name: c.value for c in config.filter(config_categories)} + self.config_hash = get_stable_hash(values) + + if tags: + self.tags_hash = get_stable_hash(sorted(tags)) + + def __eq__(self, other: "BuildInfo") -> bool: # type: ignore + return (self.config_hash == other.config_hash and + self.tags_hash == other.tags_hash) + + def dump(self, f: IO) -> None: + f.write('# Sphinx build info version 1\n' + '# This file hashes the configuration used when building these files.' + ' When it is not found, a full rebuild will be done.\n' + 'config: %s\n' + 'tags: %s\n' % + (self.config_hash, self.tags_hash)) + + +class StandaloneHTMLBuilder(Builder): + """ + Builds standalone HTML docs. + """ + name = 'html' + format = 'html' + epilog = __('The HTML pages are in %(outdir)s.') + + copysource = True + allow_parallel = True + out_suffix = '.html' + link_suffix = '.html' # defaults to matching out_suffix + indexer_format = js_index # type: Any + indexer_dumps_unicode = True + # create links to original images from images [True/False] + html_scaled_image_link = True + supported_image_types = ['image/svg+xml', 'image/png', + 'image/gif', 'image/jpeg'] + supported_remote_images = True + supported_data_uri_images = True + searchindex_filename = 'searchindex.js' + add_permalinks = True + allow_sharp_as_current_path = True + embedded = False # for things like HTML help or Qt help: suppresses sidebar + search = True # for things like HTML help and Apple help: suppress search + use_index = False + download_support = True # enable download role + + imgpath = None # type: str + domain_indices = [] # type: List[Tuple[str, Type[Index], List[Tuple[str, List[IndexEntry]]], bool]] # NOQA + + def __init__(self, app: Sphinx) -> None: + super().__init__(app) + + # CSS files + self.css_files = [] # type: List[Dict[str, str]] + + # JS files + self.script_files = [] # type: List[JavaScript] + + def init(self) -> None: + self.build_info = self.create_build_info() + # basename of images directory + self.imagedir = '_images' + # section numbers for headings in the currently visited document + self.secnumbers = {} # type: Dict[str, Tuple[int, ...]] + # currently written docname + self.current_docname = None # type: str + + self.init_templates() + self.init_highlighter() + self.init_css_files() + self.init_js_files() + + html_file_suffix = self.get_builder_config('file_suffix', 'html') + if html_file_suffix is not None: + self.out_suffix = html_file_suffix + + html_link_suffix = self.get_builder_config('link_suffix', 'html') + if html_link_suffix is not None: + self.link_suffix = html_link_suffix + else: + self.link_suffix = self.out_suffix + + self.use_index = self.get_builder_config('use_index', 'html') + + def create_build_info(self) -> BuildInfo: + return BuildInfo(self.config, self.tags, ['html']) + + def _get_translations_js(self) -> str: + candidates = [path.join(dir, self.config.language, + 'LC_MESSAGES', 'sphinx.js') + for dir in self.config.locale_dirs] + \ + [path.join(package_dir, 'locale', self.config.language, + 'LC_MESSAGES', 'sphinx.js'), + path.join(sys.prefix, 'share/sphinx/locale', + self.config.language, 'sphinx.js')] + + for jsfile in candidates: + if path.isfile(jsfile): + return jsfile + return None + + def get_theme_config(self) -> Tuple[str, Dict]: + return self.config.html_theme, self.config.html_theme_options + + def init_templates(self) -> None: + theme_factory = HTMLThemeFactory(self.app) + themename, themeoptions = self.get_theme_config() + self.theme = theme_factory.create(themename) + self.theme_options = themeoptions.copy() + self.create_template_bridge() + self.templates.init(self, self.theme) + + def init_highlighter(self) -> None: + # determine Pygments style and create the highlighter + if self.config.pygments_style is not None: + style = self.config.pygments_style + elif self.theme: + style = self.theme.get_config('theme', 'pygments_style', 'none') + else: + style = 'sphinx' + self.highlighter = PygmentsBridge('html', style) + + if self.theme: + dark_style = self.theme.get_config('theme', 'pygments_dark_style', None) + else: + dark_style = None + + if dark_style is not None: + self.dark_highlighter = PygmentsBridge('html', dark_style) + self.add_css_file('pygments_dark.css', + media='(prefers-color-scheme: dark)', + id='pygments_dark_css') + else: + self.dark_highlighter = None + + def init_css_files(self) -> None: + for filename, attrs in self.app.registry.css_files: + self.add_css_file(filename, **attrs) + + for filename, attrs in self.get_builder_config('css_files', 'html'): + self.add_css_file(filename, **attrs) + + def add_css_file(self, filename: str, **kwargs: str) -> None: + if '://' not in filename: + filename = posixpath.join('_static', filename) + + self.css_files.append(Stylesheet(filename, **kwargs)) # type: ignore + + def init_js_files(self) -> None: + self.add_js_file('jquery.js') + self.add_js_file('underscore.js') + self.add_js_file('doctools.js') + self.add_js_file('language_data.js') + + for filename, attrs in self.app.registry.js_files: + self.add_js_file(filename, **attrs) + + for filename, attrs in self.get_builder_config('js_files', 'html'): + self.add_js_file(filename, **attrs) + + if self.config.language and self._get_translations_js(): + self.add_js_file('translations.js') + + def add_js_file(self, filename: str, **kwargs: str) -> None: + if filename and '://' not in filename: + filename = posixpath.join('_static', filename) + + self.script_files.append(JavaScript(filename, **kwargs)) + + @property + def default_translator_class(self) -> "Type[nodes.NodeVisitor]": # type: ignore + if not html5_ready or self.config.html4_writer: + return HTMLTranslator + else: + return HTML5Translator + + @property + def math_renderer_name(self) -> str: + name = self.get_builder_config('math_renderer', 'html') + if name is not None: + # use given name + return name + else: + # not given: choose a math_renderer from registered ones as possible + renderers = list(self.app.registry.html_inline_math_renderers) + if len(renderers) == 1: + # only default math_renderer (mathjax) is registered + return renderers[0] + elif len(renderers) == 2: + # default and another math_renderer are registered; prior the another + renderers.remove('mathjax') + return renderers[0] + else: + # many math_renderers are registered. can't choose automatically! + return None + + def get_outdated_docs(self) -> Iterator[str]: + try: + with open(path.join(self.outdir, '.buildinfo')) as fp: + buildinfo = BuildInfo.load(fp) + + if self.build_info != buildinfo: + yield from self.env.found_docs + return + except ValueError as exc: + logger.warning(__('Failed to read build info file: %r'), exc) + except OSError: + # ignore errors on reading + pass + + if self.templates: + template_mtime = self.templates.newest_template_mtime() + else: + template_mtime = 0 + for docname in self.env.found_docs: + if docname not in self.env.all_docs: + yield docname + continue + targetname = self.get_outfilename(docname) + try: + targetmtime = path.getmtime(targetname) + except Exception: + targetmtime = 0 + try: + srcmtime = max(path.getmtime(self.env.doc2path(docname)), + template_mtime) + if srcmtime > targetmtime: + yield docname + except OSError: + # source doesn't exist anymore + pass + + def get_asset_paths(self) -> List[str]: + return self.config.html_extra_path + self.config.html_static_path + + def render_partial(self, node: Node) -> Dict[str, str]: + """Utility: Render a lone doctree node.""" + if node is None: + return {'fragment': ''} + doc = new_document('<partial node>') + doc.append(node) + + writer = HTMLWriter(self) + return publish_parts(reader_name='doctree', + writer=writer, + source_class=DocTreeInput, + settings_overrides={'output_encoding': 'unicode'}, + source=doc) + + def prepare_writing(self, docnames: Set[str]) -> None: + # create the search indexer + self.indexer = None + if self.search: + from sphinx.search import IndexBuilder + lang = self.config.html_search_language or self.config.language + if not lang: + lang = 'en' + self.indexer = IndexBuilder(self.env, lang, + self.config.html_search_options, + self.config.html_search_scorer) + self.load_indexer(docnames) + + self.docwriter = HTMLWriter(self) + self.docsettings = OptionParser( + defaults=self.env.settings, + components=(self.docwriter,), + read_config_files=True).get_default_values() # type: Any + self.docsettings.compact_lists = bool(self.config.html_compact_lists) + + # determine the additional indices to include + self.domain_indices = [] + # html_domain_indices can be False/True or a list of index names + indices_config = self.config.html_domain_indices + if indices_config: + for domain_name in sorted(self.env.domains): + domain = None # type: Domain + domain = self.env.domains[domain_name] + for indexcls in domain.indices: + indexname = '%s-%s' % (domain.name, indexcls.name) + if isinstance(indices_config, list): + if indexname not in indices_config: + continue + content, collapse = indexcls(domain).generate() + if content: + self.domain_indices.append( + (indexname, indexcls, content, collapse)) + + # format the "last updated on" string, only once is enough since it + # typically doesn't include the time of day + lufmt = self.config.html_last_updated_fmt + if lufmt is not None: + self.last_updated = format_date(lufmt or _('%b %d, %Y'), + language=self.config.language) + else: + self.last_updated = None + + logo = path.basename(self.config.html_logo) if self.config.html_logo else '' + favicon = path.basename(self.config.html_favicon) if self.config.html_favicon else '' + + if not isinstance(self.config.html_use_opensearch, str): + logger.warning(__('html_use_opensearch config value must now be a string')) + + self.relations = self.env.collect_relations() + + rellinks = [] # type: List[Tuple[str, str, str, str]] + if self.use_index: + rellinks.append(('genindex', _('General Index'), 'I', _('index'))) + for indexname, indexcls, content, collapse in self.domain_indices: + # if it has a short name + if indexcls.shortname: + rellinks.append((indexname, indexcls.localname, + '', indexcls.shortname)) + + if self.config.html_style is not None: + stylename = self.config.html_style + elif self.theme: + stylename = self.theme.get_config('theme', 'stylesheet') + else: + stylename = 'default.css' + + self.globalcontext = { + 'embedded': self.embedded, + 'project': self.config.project, + 'release': return_codes_re.sub('', self.config.release), + 'version': self.config.version, + 'last_updated': self.last_updated, + 'copyright': self.config.copyright, + 'master_doc': self.config.master_doc, + 'use_opensearch': self.config.html_use_opensearch, + 'docstitle': self.config.html_title, + 'shorttitle': self.config.html_short_title, + 'show_copyright': self.config.html_show_copyright, + 'show_sphinx': self.config.html_show_sphinx, + 'has_source': self.config.html_copy_source, + 'show_source': self.config.html_show_sourcelink, + 'sourcelink_suffix': self.config.html_sourcelink_suffix, + 'file_suffix': self.out_suffix, + 'link_suffix': self.link_suffix, + 'script_files': self.script_files, + 'language': self.config.language, + 'css_files': self.css_files, + 'sphinx_version': __display_version__, + 'style': stylename, + 'rellinks': rellinks, + 'builder': self.name, + 'parents': [], + 'logo': logo, + 'favicon': favicon, + 'html5_doctype': html5_ready and not self.config.html4_writer, + } + if self.theme: + self.globalcontext.update( + ('theme_' + key, val) for (key, val) in + self.theme.get_options(self.theme_options).items()) + self.globalcontext.update(self.config.html_context) + + def get_doc_context(self, docname: str, body: str, metatags: str) -> Dict[str, Any]: + """Collect items for the template context of a page.""" + # find out relations + prev = next = None + parents = [] + rellinks = self.globalcontext['rellinks'][:] + related = self.relations.get(docname) + titles = self.env.titles + if related and related[2]: + try: + next = { + 'link': self.get_relative_uri(docname, related[2]), + 'title': self.render_partial(titles[related[2]])['title'] + } + rellinks.append((related[2], next['title'], 'N', _('next'))) + except KeyError: + next = None + if related and related[1]: + try: + prev = { + 'link': self.get_relative_uri(docname, related[1]), + 'title': self.render_partial(titles[related[1]])['title'] + } + rellinks.append((related[1], prev['title'], 'P', _('previous'))) + except KeyError: + # the relation is (somehow) not in the TOC tree, handle + # that gracefully + prev = None + while related and related[0]: + try: + parents.append( + {'link': self.get_relative_uri(docname, related[0]), + 'title': self.render_partial(titles[related[0]])['title']}) + except KeyError: + pass + related = self.relations.get(related[0]) + if parents: + # remove link to the master file; we have a generic + # "back to index" link already + parents.pop() + parents.reverse() + + # title rendered as HTML + title_node = self.env.longtitles.get(docname) + title = self.render_partial(title_node)['title'] if title_node else '' + if "no title" in title: + title = "Table of Contents" + title = title.split("</span>")[-1] + # Suffix for the document + source_suffix = self.env.doc2path(docname, False)[len(docname):] + + # the name for the copied source + if self.config.html_copy_source: + sourcename = docname + source_suffix + if source_suffix != self.config.html_sourcelink_suffix: + sourcename += self.config.html_sourcelink_suffix + else: + sourcename = '' + + # metadata for the document + meta = self.env.metadata.get(docname) + + # local TOC and global TOC tree + self_toc = TocTree(self.env).get_toc_for(docname, self) + toc = self.render_partial(self_toc)['fragment'] + + return { + 'parents': parents, + 'prev': prev, + 'next': next, + 'title': title, + 'meta': meta, + 'body': body, + 'metatags': metatags, + 'rellinks': rellinks, + 'sourcename': sourcename, + 'toc': toc, + # only display a TOC if there's more than one item to show + 'display_toc': (self.env.toc_num_entries[docname] > 1), + 'page_source_suffix': source_suffix, + } + + def write_doc(self, docname: str, doctree: nodes.document) -> None: + destination = StringOutput(encoding='utf-8') + doctree.settings = self.docsettings + + self.secnumbers = self.env.toc_secnumbers.get(docname, {}) + self.fignumbers = self.env.toc_fignumbers.get(docname, {}) + self.imgpath = relative_uri(self.get_target_uri(docname), '_images') + self.dlpath = relative_uri(self.get_target_uri(docname), '_downloads') + self.current_docname = docname + self.docwriter.write(doctree, destination) + self.docwriter.assemble_parts() + body = self.docwriter.parts['fragment'] + metatags = self.docwriter.clean_meta + + ctx = self.get_doc_context(docname, body, metatags) + self.handle_page(docname, ctx, event_arg=doctree) + + def write_doc_serialized(self, docname: str, doctree: nodes.document) -> None: + self.imgpath = relative_uri(self.get_target_uri(docname), self.imagedir) + self.post_process_images(doctree) + title_node = self.env.longtitles.get(docname) + title = self.render_partial(title_node)['title'] if title_node else '' + self.index_page(docname, doctree, title) + + def finish(self) -> None: + self.finish_tasks.add_task(self.gen_indices) + self.finish_tasks.add_task(self.gen_pages_from_extensions) + self.finish_tasks.add_task(self.gen_additional_pages) + self.finish_tasks.add_task(self.copy_image_files) + self.finish_tasks.add_task(self.copy_download_files) + self.finish_tasks.add_task(self.copy_static_files) + self.finish_tasks.add_task(self.copy_extra_files) + self.finish_tasks.add_task(self.write_buildinfo) + + # dump the search index + self.handle_finish() + + @progress_message(__('generating indices')) + def gen_indices(self) -> None: + # the global general index + if self.use_index: + self.write_genindex() + + # the global domain-specific indices + self.write_domain_indices() + + def gen_pages_from_extensions(self) -> None: + # pages from extensions + for pagelist in self.events.emit('html-collect-pages'): + for pagename, context, template in pagelist: + self.handle_page(pagename, context, template) + + @progress_message(__('writing additional pages')) + def gen_additional_pages(self) -> None: + # additional pages from conf.py + for pagename, template in self.config.html_additional_pages.items(): + logger.info(' ' + pagename, nonl=True) + self.handle_page(pagename, {}, template) + + # the search page + if self.search: + logger.info(' search', nonl=True) + self.handle_page('search', {}, 'search.html') + + # the opensearch xml file + if self.config.html_use_opensearch and self.search: + logger.info(' opensearch', nonl=True) + fn = path.join(self.outdir, '_static', 'opensearch.xml') + self.handle_page('opensearch', {}, 'opensearch.xml', outfilename=fn) + + def write_genindex(self) -> None: + # the total count of lines for each index letter, used to distribute + # the entries into two columns + genindex = IndexEntries(self.env).create_index(self) + indexcounts = [] + for _k, entries in genindex: + indexcounts.append(sum(1 + len(subitems) + for _, (_, subitems, _) in entries)) + + genindexcontext = { + 'genindexentries': genindex, + 'genindexcounts': indexcounts, + 'split_index': self.config.html_split_index, + } + logger.info(' genindex', nonl=True) + + if self.config.html_split_index: + self.handle_page('genindex', genindexcontext, + 'genindex-split.html') + self.handle_page('genindex-all', genindexcontext, + 'genindex.html') + for (key, entries), count in zip(genindex, indexcounts): + ctx = {'key': key, 'entries': entries, 'count': count, + 'genindexentries': genindex} + self.handle_page('genindex-' + key, ctx, + 'genindex-single.html') + else: + self.handle_page('genindex', genindexcontext, 'genindex.html') + + def write_domain_indices(self) -> None: + for indexname, indexcls, content, collapse in self.domain_indices: + indexcontext = { + 'indextitle': indexcls.localname, + 'content': content, + 'collapse_index': collapse, + } + logger.info(' ' + indexname, nonl=True) + self.handle_page(indexname, indexcontext, 'domainindex.html') + + def copy_image_files(self) -> None: + if self.images: + stringify_func = ImageAdapter(self.app.env).get_original_image_uri + ensuredir(path.join(self.outdir, self.imagedir)) + for src in status_iterator(self.images, __('copying images... '), "brown", + len(self.images), self.app.verbosity, + stringify_func=stringify_func): + dest = self.images[src] + try: + copyfile(path.join(self.srcdir, src), + path.join(self.outdir, self.imagedir, dest)) + except Exception as err: + logger.warning(__('cannot copy image file %r: %s'), + path.join(self.srcdir, src), err) + + def copy_download_files(self) -> None: + def to_relpath(f: str) -> str: + return relative_path(self.srcdir, f) + + # copy downloadable files + if self.env.dlfiles: + ensuredir(path.join(self.outdir, '_downloads')) + for src in status_iterator(self.env.dlfiles, __('copying downloadable files... '), + "brown", len(self.env.dlfiles), self.app.verbosity, + stringify_func=to_relpath): + try: + dest = path.join(self.outdir, '_downloads', self.env.dlfiles[src][1]) + ensuredir(path.dirname(dest)) + copyfile(path.join(self.srcdir, src), dest) + except OSError as err: + logger.warning(__('cannot copy downloadable file %r: %s'), + path.join(self.srcdir, src), err) + + def create_pygments_style_file(self) -> None: + """create a style file for pygments.""" + with open(path.join(self.outdir, '_static', 'pygments.css'), 'w') as f: + f.write(self.highlighter.get_stylesheet()) + + if self.dark_highlighter: + with open(path.join(self.outdir, '_static', 'pygments_dark.css'), 'w') as f: + f.write(self.dark_highlighter.get_stylesheet()) + + def copy_translation_js(self) -> None: + """Copy a JavaScript file for translations.""" + if self.config.language is not None: + jsfile = self._get_translations_js() + if jsfile: + copyfile(jsfile, path.join(self.outdir, '_static', 'translations.js')) + + def copy_stemmer_js(self) -> None: + """Copy a JavaScript file for stemmer.""" + if self.indexer is not None: + jsfile = self.indexer.get_js_stemmer_rawcode() + if jsfile: + copyfile(jsfile, path.join(self.outdir, '_static', '_stemmer.js')) + + def copy_theme_static_files(self, context: Dict) -> None: + if self.theme: + for entry in self.theme.get_theme_dirs()[::-1]: + copy_asset(path.join(entry, 'static'), + path.join(self.outdir, '_static'), + excluded=DOTFILES, context=context, renderer=self.templates) + + def copy_html_static_files(self, context: Dict) -> None: + excluded = Matcher(self.config.exclude_patterns + ["**/.*"]) + for entry in self.config.html_static_path: + copy_asset(path.join(self.confdir, entry), + path.join(self.outdir, '_static'), + excluded, context=context, renderer=self.templates) + + def copy_html_logo(self) -> None: + if self.config.html_logo: + copy_asset(path.join(self.confdir, self.config.html_logo), + path.join(self.outdir, '_static')) + + def copy_html_favicon(self) -> None: + if self.config.html_favicon: + copy_asset(path.join(self.confdir, self.config.html_favicon), + path.join(self.outdir, '_static')) + + def copy_static_files(self) -> None: + try: + with progress_message(__('copying static files... ')): + ensuredir(path.join(self.outdir, '_static')) + + # prepare context for templates + context = self.globalcontext.copy() + if self.indexer is not None: + context.update(self.indexer.context_for_searchtool()) + + self.create_pygments_style_file() + self.copy_translation_js() + self.copy_stemmer_js() + self.copy_theme_static_files(context) + self.copy_html_static_files(context) + self.copy_html_logo() + self.copy_html_favicon() + except OSError as err: + logger.warning(__('cannot copy static file %r'), err) + + def copy_extra_files(self) -> None: + """copy html_extra_path files.""" + try: + with progress_message(__('copying extra files')): + excluded = Matcher(self.config.exclude_patterns) + for extra_path in self.config.html_extra_path: + entry = path.join(self.confdir, extra_path) + copy_asset(entry, self.outdir, excluded) + except OSError as err: + logger.warning(__('cannot copy extra file %r'), err) + + def write_buildinfo(self) -> None: + try: + with open(path.join(self.outdir, '.buildinfo'), 'w') as fp: + self.build_info.dump(fp) + except OSError as exc: + logger.warning(__('Failed to write build info file: %r'), exc) + + def cleanup(self) -> None: + # clean up theme stuff + if self.theme: + self.theme.cleanup() + + def post_process_images(self, doctree: Node) -> None: + """Pick the best candidate for an image and link down-scaled images to + their high res version. + """ + Builder.post_process_images(self, doctree) + + if self.config.html_scaled_image_link and self.html_scaled_image_link: + for node in doctree.traverse(nodes.image): + if not any((key in node) for key in ['scale', 'width', 'height']): + # resizing options are not given. scaled image link is available + # only for resized images. + continue + elif isinstance(node.parent, nodes.reference): + # A image having hyperlink target + continue + elif 'no-scaled-link' in node['classes']: + # scaled image link is disabled for this node + continue + + uri = node['uri'] + reference = nodes.reference('', '', internal=True) + if uri in self.images: + reference['refuri'] = posixpath.join(self.imgpath, + self.images[uri]) + else: + reference['refuri'] = uri + node.replace_self(reference) + reference.append(node) + + def load_indexer(self, docnames: Iterable[str]) -> None: + keep = set(self.env.all_docs) - set(docnames) + try: + searchindexfn = path.join(self.outdir, self.searchindex_filename) + if self.indexer_dumps_unicode: + with open(searchindexfn, encoding='utf-8') as ft: + self.indexer.load(ft, self.indexer_format) + else: + with open(searchindexfn, 'rb') as fb: + self.indexer.load(fb, self.indexer_format) + except (OSError, ValueError): + if keep: + logger.warning(__('search index couldn\'t be loaded, but not all ' + 'documents will be built: the index will be ' + 'incomplete.')) + # delete all entries for files that will be rebuilt + self.indexer.prune(keep) + + def index_page(self, pagename: str, doctree: nodes.document, title: str) -> None: + # only index pages with title + if self.indexer is not None and title: + filename = self.env.doc2path(pagename, base=None) + try: + metadata = self.env.metadata.get(pagename, {}) + if 'nosearch' in metadata: + self.indexer.feed(pagename, filename, '', new_document('')) + else: + self.indexer.feed(pagename, filename, title, doctree) + except TypeError: + # fallback for old search-adapters + self.indexer.feed(pagename, title, doctree) # type: ignore + indexer_name = self.indexer.__class__.__name__ + warnings.warn( + 'The %s.feed() method signature is deprecated. Update to ' + '%s.feed(docname, filename, title, doctree).' % ( + indexer_name, indexer_name), + RemovedInSphinx40Warning) + + def _get_local_toctree(self, docname: str, collapse: bool = True, **kwargs: Any) -> str: + if 'includehidden' not in kwargs: + kwargs['includehidden'] = False + return self.render_partial(TocTree(self.env).get_toctree_for( + docname, self, collapse, **kwargs))['fragment'] + + def get_outfilename(self, pagename: str) -> str: + return path.join(self.outdir, os_path(pagename) + self.out_suffix) + + def add_sidebars(self, pagename: str, ctx: Dict) -> None: + def has_wildcard(pattern: str) -> bool: + return any(char in pattern for char in '*?[') + + sidebars = None + matched = None + customsidebar = None + + # default sidebars settings for selected theme + if self.theme.name == 'alabaster': + # provide default settings for alabaster (for compatibility) + # Note: this will be removed before Sphinx-2.0 + try: + # get default sidebars settings from alabaster (if defined) + theme_default_sidebars = self.theme.config.get('theme', 'sidebars') + if theme_default_sidebars: + sidebars = [name.strip() for name in theme_default_sidebars.split(',')] + except Exception: + # fallback to better default settings + sidebars = ['about.html', 'navigation.html', 'relations.html', + 'searchbox.html', 'donate.html'] + else: + theme_default_sidebars = self.theme.get_config('theme', 'sidebars', None) + if theme_default_sidebars: + sidebars = [name.strip() for name in theme_default_sidebars.split(',')] + + # user sidebar settings + html_sidebars = self.get_builder_config('sidebars', 'html') + for pattern, patsidebars in html_sidebars.items(): + if patmatch(pagename, pattern): + if matched: + if has_wildcard(pattern): + # warn if both patterns contain wildcards + if has_wildcard(matched): + logger.warning(__('page %s matches two patterns in ' + 'html_sidebars: %r and %r'), + pagename, matched, pattern) + # else the already matched pattern is more specific + # than the present one, because it contains no wildcard + continue + matched = pattern + sidebars = patsidebars + + if sidebars is None: + # keep defaults + pass + + ctx['sidebars'] = sidebars + ctx['customsidebar'] = customsidebar + + # --------- these are overwritten by the serialization builder + + def get_target_uri(self, docname: str, typ: str = None) -> str: + return docname + self.link_suffix + + def handle_page(self, pagename: str, addctx: Dict, templatename: str = 'page.html', + outfilename: str = None, event_arg: Any = None) -> None: + ctx = self.globalcontext.copy() + # current_page_name is backwards compatibility + ctx['pagename'] = ctx['current_page_name'] = pagename + ctx['encoding'] = self.config.html_output_encoding + default_baseuri = self.get_target_uri(pagename) + # in the singlehtml builder, default_baseuri still contains an #anchor + # part, which relative_uri doesn't really like... + default_baseuri = default_baseuri.rsplit('#', 1)[0] + + if self.config.html_baseurl: + ctx['pageurl'] = posixpath.join(self.config.html_baseurl, + pagename + self.out_suffix) + else: + ctx['pageurl'] = None + + def pathto(otheruri: str, resource: bool = False, baseuri: str = default_baseuri) -> str: # NOQA + if resource and '://' in otheruri: + # allow non-local resources given by scheme + return otheruri + elif not resource: + otheruri = self.get_target_uri(otheruri) + uri = relative_uri(baseuri, otheruri) or '#' + if uri == '#' and not self.allow_sharp_as_current_path: + uri = baseuri + return uri + ctx['pathto'] = pathto + + def css_tag(css: Stylesheet) -> str: + attrs = [] + for key in sorted(css.attributes): + value = css.attributes[key] + if value is not None: + attrs.append('%s="%s"' % (key, html.escape(value, True))) + attrs.append('href="%s"' % pathto(css.filename, resource=True)) + return '<link %s />' % ' '.join(attrs) + ctx['css_tag'] = css_tag + + def hasdoc(name: str) -> bool: + if name in self.env.all_docs: + return True + elif name == 'search' and self.search: + return True + elif name == 'genindex' and self.get_builder_config('use_index', 'html'): + return True + return False + ctx['hasdoc'] = hasdoc + + ctx['toctree'] = lambda **kwargs: self._get_local_toctree(pagename, **kwargs) + self.add_sidebars(pagename, ctx) + ctx.update(addctx) + + self.update_page_context(pagename, templatename, ctx, event_arg) + newtmpl = self.app.emit_firstresult('html-page-context', pagename, + templatename, ctx, event_arg) + if newtmpl: + templatename = newtmpl + + try: + output = self.templates.render(templatename, ctx) + except UnicodeError: + logger.warning(__("a Unicode error occurred when rendering the page %s. " + "Please make sure all config values that contain " + "non-ASCII content are Unicode strings."), pagename) + return + except Exception as exc: + raise ThemeError(__("An error happened in rendering the page %s.\nReason: %r") % + (pagename, exc)) + + if not outfilename: + outfilename = self.get_outfilename(pagename) + # outfilename's path is in general different from self.outdir + ensuredir(path.dirname(outfilename)) + try: + with open(outfilename, 'w', encoding=ctx['encoding'], + errors='xmlcharrefreplace') as f: + f.write(output) + except OSError as err: + logger.warning(__("error writing file %s: %s"), outfilename, err) + if self.copysource and ctx.get('sourcename'): + # copy the source file for the "show source" link + source_name = path.join(self.outdir, '_sources', + os_path(ctx['sourcename'])) + ensuredir(path.dirname(source_name)) + copyfile(self.env.doc2path(pagename), source_name) + + def update_page_context(self, pagename: str, templatename: str, + ctx: Dict, event_arg: Any) -> None: + pass + + def handle_finish(self) -> None: + if self.indexer: + self.finish_tasks.add_task(self.dump_search_index) + self.finish_tasks.add_task(self.dump_inventory) + + @progress_message(__('dumping object inventory')) + def dump_inventory(self) -> None: + InventoryFile.dump(path.join(self.outdir, INVENTORY_FILENAME), self.env, self) + + def dump_search_index(self) -> None: + with progress_message(__('dumping search index in %s') % self.indexer.label()): + self.indexer.prune(self.env.all_docs) + searchindexfn = path.join(self.outdir, self.searchindex_filename) + # first write to a temporary file, so that if dumping fails, + # the existing index won't be overwritten + if self.indexer_dumps_unicode: + with open(searchindexfn + '.tmp', 'w', encoding='utf-8') as ft: + self.indexer.dump(ft, self.indexer_format) + else: + with open(searchindexfn + '.tmp', 'wb') as fb: + self.indexer.dump(fb, self.indexer_format) + movefile(searchindexfn + '.tmp', searchindexfn) + + +def convert_html_css_files(app: Sphinx, config: Config) -> None: + """This converts string styled html_css_files to tuple styled one.""" + html_css_files = [] # type: List[Tuple[str, Dict]] + for entry in config.html_css_files: + if isinstance(entry, str): + html_css_files.append((entry, {})) + else: + try: + filename, attrs = entry + html_css_files.append((filename, attrs)) + except Exception: + logger.warning(__('invalid css_file: %r, ignored'), entry) + continue + + config.html_css_files = html_css_files # type: ignore + + +def convert_html_js_files(app: Sphinx, config: Config) -> None: + """This converts string styled html_js_files to tuple styled one.""" + html_js_files = [] # type: List[Tuple[str, Dict]] + for entry in config.html_js_files: + if isinstance(entry, str): + html_js_files.append((entry, {})) + else: + try: + filename, attrs = entry + html_js_files.append((filename, attrs)) + except Exception: + logger.warning(__('invalid js_file: %r, ignored'), entry) + continue + + config.html_js_files = html_js_files # type: ignore + + +def setup_js_tag_helper(app: Sphinx, pagename: str, templatexname: str, + context: Dict, doctree: Node) -> None: + """Set up js_tag() template helper. + + .. note:: This set up function is added to keep compatibility with webhelper. + """ + pathto = context.get('pathto') + + def js_tag(js: JavaScript) -> str: + attrs = [] + body = '' + if isinstance(js, JavaScript): + for key in sorted(js.attributes): + value = js.attributes[key] + if value is not None: + if key == 'body': + body = value + else: + attrs.append('%s="%s"' % (key, html.escape(value, True))) + if js.filename: + attrs.append('src="%s"' % pathto(js.filename, resource=True)) + else: + # str value (old styled) + attrs.append('src="%s"' % pathto(js, resource=True)) + return '<script %s>%s</script>' % (' '.join(attrs), body) + + context['js_tag'] = js_tag + + +def validate_math_renderer(app: Sphinx) -> None: + if app.builder.format != 'html': + return + + name = app.builder.math_renderer_name # type: ignore + if name is None: + raise ConfigError(__('Many math_renderers are registered. ' + 'But no math_renderer is selected.')) + elif name not in app.registry.html_inline_math_renderers: + raise ConfigError(__('Unknown math_renderer %r is given.') % name) + + +def validate_html_extra_path(app: Sphinx, config: Config) -> None: + """Check html_extra_paths setting.""" + for entry in config.html_extra_path[:]: + extra_path = path.normpath(path.join(app.confdir, entry)) + if not path.exists(extra_path): + logger.warning(__('html_extra_path entry %r does not exist'), entry) + config.html_extra_path.remove(entry) + elif (path.splitdrive(app.outdir)[0] == path.splitdrive(extra_path)[0] and + path.commonpath([app.outdir, extra_path]) == app.outdir): + logger.warning(__('html_extra_path entry %r is placed inside outdir'), entry) + config.html_extra_path.remove(entry) + + +def validate_html_static_path(app: Sphinx, config: Config) -> None: + """Check html_static_paths setting.""" + for entry in config.html_static_path[:]: + static_path = path.normpath(path.join(app.confdir, entry)) + if not path.exists(static_path): + logger.warning(__('html_static_path entry %r does not exist'), entry) + config.html_static_path.remove(entry) + elif (path.splitdrive(app.outdir)[0] == path.splitdrive(static_path)[0] and + path.commonpath([app.outdir, static_path]) == app.outdir): + logger.warning(__('html_static_path entry %r is placed inside outdir'), entry) + config.html_static_path.remove(entry) + + +def validate_html_logo(app: Sphinx, config: Config) -> None: + """Check html_logo setting.""" + if config.html_logo and not path.isfile(path.join(app.confdir, config.html_logo)): + logger.warning(__('logo file %r does not exist'), config.html_logo) + config.html_logo = None # type: ignore + + +def validate_html_favicon(app: Sphinx, config: Config) -> None: + """Check html_favicon setting.""" + if config.html_favicon and not path.isfile(path.join(app.confdir, config.html_favicon)): + logger.warning(__('favicon file %r does not exist'), config.html_favicon) + config.html_favicon = None # type: ignore + + +# for compatibility +import sphinx.builders.dirhtml # NOQA +import sphinx.builders.singlehtml # NOQA +import sphinxcontrib.serializinghtml # NOQA + + +def setup(app: Sphinx) -> Dict[str, Any]: + # builders + app.add_builder(StandaloneHTMLBuilder) + + # config values + app.add_config_value('html_theme', 'alabaster', 'html') + app.add_config_value('html_theme_path', [], 'html') + app.add_config_value('html_theme_options', {}, 'html') + app.add_config_value('html_title', + lambda self: _('%s %s documentation') % (self.project, self.release), + 'html', [str]) + app.add_config_value('html_short_title', lambda self: self.html_title, 'html') + app.add_config_value('html_style', None, 'html', [str]) + app.add_config_value('html_logo', None, 'html', [str]) + app.add_config_value('html_favicon', None, 'html', [str]) + app.add_config_value('html_css_files', [], 'html') + app.add_config_value('html_js_files', [], 'html') + app.add_config_value('html_static_path', [], 'html') + app.add_config_value('html_extra_path', [], 'html') + app.add_config_value('html_last_updated_fmt', None, 'html', [str]) + app.add_config_value('html_sidebars', {}, 'html') + app.add_config_value('html_additional_pages', {}, 'html') + app.add_config_value('html_domain_indices', True, 'html', [list]) + app.add_config_value('html_add_permalinks', '¶', 'html') + app.add_config_value('html_use_index', True, 'html') + app.add_config_value('html_split_index', False, 'html') + app.add_config_value('html_copy_source', True, 'html') + app.add_config_value('html_show_sourcelink', True, 'html') + app.add_config_value('html_sourcelink_suffix', '.txt', 'html') + app.add_config_value('html_use_opensearch', '', 'html') + app.add_config_value('html_file_suffix', None, 'html', [str]) + app.add_config_value('html_link_suffix', None, 'html', [str]) + app.add_config_value('html_show_copyright', True, 'html') + app.add_config_value('html_show_sphinx', True, 'html') + app.add_config_value('html_context', {}, 'html') + app.add_config_value('html_output_encoding', 'utf-8', 'html') + app.add_config_value('html_compact_lists', True, 'html') + app.add_config_value('html_secnumber_suffix', '. ', 'html') + app.add_config_value('html_search_language', None, 'html', [str]) + app.add_config_value('html_search_options', {}, 'html') + app.add_config_value('html_search_scorer', '', None) + app.add_config_value('html_scaled_image_link', True, 'html') + app.add_config_value('html_baseurl', '', 'html') + app.add_config_value('html_math_renderer', None, 'env') + app.add_config_value('html4_writer', False, 'html') + + # event handlers + app.connect('config-inited', convert_html_css_files, priority=800) + app.connect('config-inited', convert_html_js_files, priority=800) + app.connect('config-inited', validate_html_extra_path, priority=800) + app.connect('config-inited', validate_html_static_path, priority=800) + app.connect('config-inited', validate_html_logo, priority=800) + app.connect('config-inited', validate_html_favicon, priority=800) + app.connect('builder-inited', validate_math_renderer) + app.connect('html-page-context', setup_js_tag_helper) + + # load default math renderer + app.setup_extension('sphinx.ext.mathjax') + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/builders/htmlhelp.py b/sphinx/sphinx/builders/htmlhelp.py new file mode 100644 index 0000000..8732de7 --- /dev/null +++ b/sphinx/sphinx/builders/htmlhelp.py @@ -0,0 +1,42 @@ +""" + sphinx.builders.htmlhelp + ~~~~~~~~~~~~~~~~~~~~~~~~ + + Build HTML help support files. + Parts adapted from Python's Doc/tools/prechm.py. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import warnings +from typing import Any, Dict + +from sphinxcontrib.htmlhelp import ( + chm_locales, chm_htmlescape, HTMLHelpBuilder, default_htmlhelp_basename +) + +from sphinx.application import Sphinx +from sphinx.deprecation import RemovedInSphinx40Warning, deprecated_alias + + +deprecated_alias('sphinx.builders.htmlhelp', + { + 'chm_locales': chm_locales, + 'chm_htmlescape': chm_htmlescape, + 'HTMLHelpBuilder': HTMLHelpBuilder, + 'default_htmlhelp_basename': default_htmlhelp_basename, + }, + RemovedInSphinx40Warning) + + +def setup(app: Sphinx) -> Dict[str, Any]: + warnings.warn('sphinx.builders.htmlhelp has been moved to sphinxcontrib-htmlhelp.', + RemovedInSphinx40Warning) + app.setup_extension('sphinxcontrib.htmlhelp') + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/builders/latex/__init__.py b/sphinx/sphinx/builders/latex/__init__.py new file mode 100644 index 0000000..390a5d9 --- /dev/null +++ b/sphinx/sphinx/builders/latex/__init__.py @@ -0,0 +1,564 @@ +""" + sphinx.builders.latex + ~~~~~~~~~~~~~~~~~~~~~ + + LaTeX builder. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import os +import warnings +from os import path +from typing import Any, Dict, Iterable, List, Tuple, Union + +from docutils.frontend import OptionParser +from docutils.nodes import Node + +import sphinx.builders.latex.nodes # NOQA # Workaround: import this before writer to avoid ImportError +from sphinx import package_dir, addnodes, highlighting +from sphinx.application import Sphinx +from sphinx.builders import Builder +from sphinx.builders.latex.constants import ADDITIONAL_SETTINGS, DEFAULT_SETTINGS, SHORTHANDOFF +from sphinx.builders.latex.theming import Theme, ThemeFactory +from sphinx.builders.latex.util import ExtBabel +from sphinx.config import Config, ENUM +from sphinx.deprecation import RemovedInSphinx40Warning +from sphinx.environment.adapters.asset import ImageAdapter +from sphinx.errors import NoUri, SphinxError +from sphinx.locale import _, __ +from sphinx.util import texescape, logging, progress_message, status_iterator +from sphinx.util.console import bold, darkgreen # type: ignore +from sphinx.util.docutils import SphinxFileOutput, new_document +from sphinx.util.fileutil import copy_asset_file +from sphinx.util.i18n import format_date +from sphinx.util.nodes import inline_all_toctrees +from sphinx.util.osutil import SEP, make_filename_from_project +from sphinx.util.template import LaTeXRenderer +from sphinx.writers.latex import LaTeXWriter, LaTeXTranslator + +# load docutils.nodes after loading sphinx.builders.latex.nodes +from docutils import nodes # NOQA + + +XINDY_LANG_OPTIONS = { + # language codes from docutils.writers.latex2e.Babel + # ! xindy language names may differ from those in use by LaTeX/babel + # ! xindy does not support all Latin scripts as recognized by LaTeX/babel + # ! not all xindy-supported languages appear in Babel.language_codes + # cd /usr/local/texlive/2018/texmf-dist/xindy/modules/lang + # find . -name '*utf8.xdy' + # LATIN + 'sq': '-L albanian -C utf8 ', + 'hr': '-L croatian -C utf8 ', + 'cs': '-L czech -C utf8 ', + 'da': '-L danish -C utf8 ', + 'nl': '-L dutch -C ij-as-ij-utf8 ', + 'en': '-L english -C utf8 ', + 'eo': '-L esperanto -C utf8 ', + 'et': '-L estonian -C utf8 ', + 'fi': '-L finnish -C utf8 ', + 'fr': '-L french -C utf8 ', + 'de': '-L german -C din5007-utf8 ', + 'is': '-L icelandic -C utf8 ', + 'it': '-L italian -C utf8 ', + 'la': '-L latin -C utf8 ', + 'lv': '-L latvian -C utf8 ', + 'lt': '-L lithuanian -C utf8 ', + 'dsb': '-L lower-sorbian -C utf8 ', + 'ds': '-L lower-sorbian -C utf8 ', # trick, no conflict + 'nb': '-L norwegian -C utf8 ', + 'no': '-L norwegian -C utf8 ', # and what about nynorsk? + 'pl': '-L polish -C utf8 ', + 'pt': '-L portuguese -C utf8 ', + 'ro': '-L romanian -C utf8 ', + 'sk': '-L slovak -C small-utf8 ', # there is also slovak-large + 'sl': '-L slovenian -C utf8 ', + 'es': '-L spanish -C modern-utf8 ', # there is also spanish-traditional + 'sv': '-L swedish -C utf8 ', + 'tr': '-L turkish -C utf8 ', + 'hsb': '-L upper-sorbian -C utf8 ', + 'hs': '-L upper-sorbian -C utf8 ', # trick, no conflict + 'vi': '-L vietnamese -C utf8 ', + # CYRILLIC + # for usage with pdflatex, needs also cyrLICRutf8.xdy module + 'be': '-L belarusian -C utf8 ', + 'bg': '-L bulgarian -C utf8 ', + 'mk': '-L macedonian -C utf8 ', + 'mn': '-L mongolian -C cyrillic-utf8 ', + 'ru': '-L russian -C utf8 ', + 'sr': '-L serbian -C utf8 ', + 'sh-cyrl': '-L serbian -C utf8 ', + 'sh': '-L serbian -C utf8 ', # trick, no conflict + 'uk': '-L ukrainian -C utf8 ', + # GREEK + # can work only with xelatex/lualatex, not supported by texindy+pdflatex + 'el': '-L greek -C utf8 ', + # FIXME, not compatible with [:2] slice but does Sphinx support Greek ? + 'el-polyton': '-L greek -C polytonic-utf8 ', +} + +XINDY_CYRILLIC_SCRIPTS = [ + 'be', 'bg', 'mk', 'mn', 'ru', 'sr', 'sh', 'uk', +] + +logger = logging.getLogger(__name__) + + +class LaTeXBuilder(Builder): + """ + Builds LaTeX output to create PDF. + """ + name = 'latex' + format = 'latex' + epilog = __('The LaTeX files are in %(outdir)s.') + if os.name == 'posix': + epilog += __("\nRun 'make' in that directory to run these through " + "(pdf)latex\n" + "(use `make latexpdf' here to do that automatically).") + + supported_image_types = ['application/pdf', 'image/png', 'image/jpeg'] + supported_remote_images = False + default_translator_class = LaTeXTranslator + + def init(self) -> None: + self.babel = None # type: ExtBabel + self.context = {} # type: Dict[str, Any] + self.docnames = [] # type: Iterable[str] + self.document_data = [] # type: List[Tuple[str, str, str, str, str, bool]] + self.themes = ThemeFactory(self.app) + self.usepackages = self.app.registry.latex_packages + texescape.init() + + self.init_context() + self.init_babel() + self.init_multilingual() + + def get_outdated_docs(self) -> Union[str, List[str]]: + return 'all documents' # for now + + def get_target_uri(self, docname: str, typ: str = None) -> str: + if docname not in self.docnames: + raise NoUri(docname, typ) + else: + return '%' + docname + + def get_relative_uri(self, from_: str, to: str, typ: str = None) -> str: + # ignore source path + return self.get_target_uri(to, typ) + + def init_document_data(self) -> None: + preliminary_document_data = [list(x) for x in self.config.latex_documents] + if not preliminary_document_data: + logger.warning(__('no "latex_documents" config value found; no documents ' + 'will be written')) + return + # assign subdirs to titles + self.titles = [] # type: List[Tuple[str, str]] + for entry in preliminary_document_data: + docname = entry[0] + if docname not in self.env.all_docs: + logger.warning(__('"latex_documents" config value references unknown ' + 'document %s'), docname) + continue + self.document_data.append(entry) # type: ignore + if docname.endswith(SEP + 'index'): + docname = docname[:-5] + self.titles.append((docname, entry[2])) + + def init_context(self) -> None: + self.context = DEFAULT_SETTINGS.copy() + + # Add special settings for latex_engine + self.context.update(ADDITIONAL_SETTINGS.get(self.config.latex_engine, {})) + + # Add special settings for (latex_engine, language_code) + if self.config.language: + key = (self.config.latex_engine, self.config.language[:2]) + self.context.update(ADDITIONAL_SETTINGS.get(key, {})) + + # Apply extension settings to context + self.context['packages'] = self.usepackages + + # Apply user settings to context + self.context.update(self.config.latex_elements) + self.context['release'] = self.config.release + self.context['use_xindy'] = self.config.latex_use_xindy + + if self.config.today: + self.context['date'] = self.config.today + else: + self.context['date'] = format_date(self.config.today_fmt or _('%b %d, %Y'), + language=self.config.language) + + if self.config.latex_logo: + self.context['logofilename'] = path.basename(self.config.latex_logo) + + # for compatibilities + self.context['indexname'] = _('Index') + if self.config.release: + # Show the release label only if release value exists + self.context.setdefault('releasename', _('Release')) + + def init_babel(self) -> None: + self.babel = ExtBabel(self.config.language, not self.context['babel']) + if self.config.language and not self.babel.is_supported_language(): + # emit warning if specified language is invalid + # (only emitting, nothing changed to processing) + logger.warning(__('no Babel option known for language %r'), + self.config.language) + + def init_multilingual(self) -> None: + if self.context['latex_engine'] == 'pdflatex': + if not self.babel.uses_cyrillic(): + if 'X2' in self.context['fontenc']: + self.context['substitutefont'] = '\\usepackage{substitutefont}' + self.context['textcyrillic'] = '\\usepackage[Xtwo]{sphinxcyrillic}' + elif 'T2A' in self.context['fontenc']: + self.context['substitutefont'] = '\\usepackage{substitutefont}' + self.context['textcyrillic'] = '\\usepackage[TtwoA]{sphinxcyrillic}' + if 'LGR' in self.context['fontenc']: + self.context['substitutefont'] = '\\usepackage{substitutefont}' + else: + self.context['textgreek'] = '' + + # 'babel' key is public and user setting must be obeyed + if self.context['babel']: + self.context['classoptions'] += ',' + self.babel.get_language() + # this branch is not taken for xelatex/lualatex if default settings + self.context['multilingual'] = self.context['babel'] + if self.config.language: + self.context['shorthandoff'] = SHORTHANDOFF + + # Times fonts don't work with Cyrillic languages + if self.babel.uses_cyrillic() and 'fontpkg' not in self.config.latex_elements: + self.context['fontpkg'] = '' + elif self.context['polyglossia']: + self.context['classoptions'] += ',' + self.babel.get_language() + options = self.babel.get_mainlanguage_options() + if options: + language = r'\setmainlanguage[%s]{%s}' % (options, self.babel.get_language()) + else: + language = r'\setmainlanguage{%s}' % self.babel.get_language() + + self.context['multilingual'] = '%s\n%s' % (self.context['polyglossia'], language) + + def write_stylesheet(self) -> None: + highlighter = highlighting.PygmentsBridge('latex', self.config.pygments_style) + stylesheet = path.join(self.outdir, 'sphinxhighlight.sty') + with open(stylesheet, 'w') as f: + f.write('\\NeedsTeXFormat{LaTeX2e}[1995/12/01]\n') + f.write('\\ProvidesPackage{sphinxhighlight}' + '[2016/05/29 stylesheet for highlighting with pygments]\n\n') + f.write(highlighter.get_stylesheet()) + + def write(self, *ignored: Any) -> None: + docwriter = LaTeXWriter(self) + docsettings = OptionParser( + defaults=self.env.settings, + components=(docwriter,), + read_config_files=True).get_default_values() # type: Any + patch_settings(docsettings) + + self.init_document_data() + self.write_stylesheet() + + for entry in self.document_data: + docname, targetname, title, author, themename = entry[:5] + theme = self.themes.get(themename) + toctree_only = False + if len(entry) > 5: + toctree_only = entry[5] + destination = SphinxFileOutput(destination_path=path.join(self.outdir, targetname), + encoding='utf-8', overwrite_if_changed=True) + with progress_message(__("processing %s") % targetname): + doctree = self.env.get_doctree(docname) + toctree = next(iter(doctree.traverse(addnodes.toctree)), None) + if toctree and toctree.get('maxdepth') > 0: + tocdepth = toctree.get('maxdepth') + else: + tocdepth = None + + doctree = self.assemble_doctree( + docname, toctree_only, + appendices=(self.config.latex_appendices if theme.name != 'howto' else [])) + doctree['docclass'] = theme.docclass + doctree['contentsname'] = self.get_contentsname(docname) + doctree['tocdepth'] = tocdepth + self.post_process_images(doctree) + self.update_doc_context(title, author, theme) + + with progress_message(__("writing")): + docsettings._author = author + docsettings._title = title + docsettings._contentsname = doctree['contentsname'] + docsettings._docname = docname + docsettings._docclass = theme.name + + doctree.settings = docsettings + docwriter.theme = theme + docwriter.write(doctree, destination) + + def get_contentsname(self, indexfile: str) -> str: + tree = self.env.get_doctree(indexfile) + contentsname = None + for toctree in tree.traverse(addnodes.toctree): + if 'caption' in toctree: + contentsname = toctree['caption'] + break + + return contentsname + + def update_doc_context(self, title: str, author: str, theme: Theme) -> None: + self.context['title'] = title + self.context['author'] = author + self.context['docclass'] = theme.docclass + self.context['wrapperclass'] = theme.wrapperclass + + def assemble_doctree(self, indexfile: str, toctree_only: bool, appendices: List[str]) -> nodes.document: # NOQA + self.docnames = set([indexfile] + appendices) + logger.info(darkgreen(indexfile) + " ", nonl=True) + tree = self.env.get_doctree(indexfile) + tree['docname'] = indexfile + if toctree_only: + # extract toctree nodes from the tree and put them in a + # fresh document + new_tree = new_document('<latex output>') + new_sect = nodes.section() + new_sect += nodes.title('<Set title in conf.py>', + '<Set title in conf.py>') + new_tree += new_sect + for node in tree.traverse(addnodes.toctree): + new_sect += node + tree = new_tree + largetree = inline_all_toctrees(self, self.docnames, indexfile, tree, + darkgreen, [indexfile]) + largetree['docname'] = indexfile + for docname in appendices: + appendix = self.env.get_doctree(docname) + appendix['docname'] = docname + largetree.append(appendix) + logger.info('') + logger.info(__("resolving references...")) + self.env.resolve_references(largetree, indexfile, self) + # resolve :ref:s to distant tex files -- we can't add a cross-reference, + # but append the document name + for pendingnode in largetree.traverse(addnodes.pending_xref): + docname = pendingnode['refdocname'] + sectname = pendingnode['refsectname'] + newnodes = [nodes.emphasis(sectname, sectname)] # type: List[Node] + for subdir, title in self.titles: + if docname.startswith(subdir): + newnodes.append(nodes.Text(_(' (in '), _(' (in '))) + newnodes.append(nodes.emphasis(title, title)) + newnodes.append(nodes.Text(')', ')')) + break + else: + pass + pendingnode.replace_self(newnodes) + return largetree + + def apply_transforms(self, doctree: nodes.document) -> None: + warnings.warn('LaTeXBuilder.apply_transforms() is deprecated.', + RemovedInSphinx40Warning) + + def finish(self) -> None: + self.copy_image_files() + self.write_message_catalog() + self.copy_support_files() + + if self.config.latex_additional_files: + self.copy_latex_additional_files() + + @progress_message(__('copying TeX support files')) + def copy_support_files(self) -> None: + """copy TeX support files from texinputs.""" + # configure usage of xindy (impacts Makefile and latexmkrc) + # FIXME: convert this rather to a confval with suitable default + # according to language ? but would require extra documentation + if self.config.language: + xindy_lang_option = \ + XINDY_LANG_OPTIONS.get(self.config.language[:2], + '-L general -C utf8 ') + xindy_cyrillic = self.config.language[:2] in XINDY_CYRILLIC_SCRIPTS + else: + xindy_lang_option = '-L english -C utf8 ' + xindy_cyrillic = False + context = { + 'latex_engine': self.config.latex_engine, + 'xindy_use': self.config.latex_use_xindy, + 'xindy_lang_option': xindy_lang_option, + 'xindy_cyrillic': xindy_cyrillic, + } + logger.info(bold(__('copying TeX support files...'))) + staticdirname = path.join(package_dir, 'texinputs') + for filename in os.listdir(staticdirname): + if not filename.startswith('.'): + copy_asset_file(path.join(staticdirname, filename), + self.outdir, context=context) + + # use pre-1.6.x Makefile for make latexpdf on Windows + if os.name == 'nt': + staticdirname = path.join(package_dir, 'texinputs_win') + copy_asset_file(path.join(staticdirname, 'Makefile_t'), + self.outdir, context=context) + + @progress_message(__('copying additional files')) + def copy_latex_additional_files(self) -> None: + for filename in self.config.latex_additional_files: + logger.info(' ' + filename, nonl=True) + copy_asset_file(path.join(self.confdir, filename), self.outdir) + + def copy_image_files(self) -> None: + if self.images: + stringify_func = ImageAdapter(self.app.env).get_original_image_uri + for src in status_iterator(self.images, __('copying images... '), "brown", + len(self.images), self.app.verbosity, + stringify_func=stringify_func): + dest = self.images[src] + try: + copy_asset_file(path.join(self.srcdir, src), + path.join(self.outdir, dest)) + except Exception as err: + logger.warning(__('cannot copy image file %r: %s'), + path.join(self.srcdir, src), err) + if self.config.latex_logo: + if not path.isfile(path.join(self.confdir, self.config.latex_logo)): + raise SphinxError(__('logo file %r does not exist') % self.config.latex_logo) + else: + copy_asset_file(path.join(self.confdir, self.config.latex_logo), self.outdir) + + def write_message_catalog(self) -> None: + formats = self.config.numfig_format + context = { + 'addtocaptions': r'\@iden', + 'figurename': formats.get('figure', '').split('%s', 1), + 'tablename': formats.get('table', '').split('%s', 1), + 'literalblockname': formats.get('code-block', '').split('%s', 1) + } + + if self.context['babel'] or self.context['polyglossia']: + context['addtocaptions'] = r'\addto\captions%s' % self.babel.get_language() + + filename = path.join(package_dir, 'templates', 'latex', 'sphinxmessages.sty_t') + copy_asset_file(filename, self.outdir, context=context, renderer=LaTeXRenderer()) + + +def patch_settings(settings: Any) -> Any: + """Make settings object to show deprecation messages.""" + + class Values(type(settings)): # type: ignore + @property + def author(self) -> str: + warnings.warn('settings.author is deprecated', + RemovedInSphinx40Warning, stacklevel=2) + return self._author + + @property + def title(self) -> str: + warnings.warn('settings.title is deprecated', + RemovedInSphinx40Warning, stacklevel=2) + return self._title + + @property + def contentsname(self) -> str: + warnings.warn('settings.contentsname is deprecated', + RemovedInSphinx40Warning, stacklevel=2) + return self._contentsname + + @property + def docname(self) -> str: + warnings.warn('settings.docname is deprecated', + RemovedInSphinx40Warning, stacklevel=2) + return self._docname + + @property + def docclass(self) -> str: + warnings.warn('settings.docclass is deprecated', + RemovedInSphinx40Warning, stacklevel=2) + return self._docclass + + # dynamic subclassing + settings.__class__ = Values + + +def validate_config_values(app: Sphinx, config: Config) -> None: + for key in list(config.latex_elements): + if key not in DEFAULT_SETTINGS: + msg = __("Unknown configure key: latex_elements[%r], ignored.") + logger.warning(msg % (key,)) + config.latex_elements.pop(key) + + +def default_latex_engine(config: Config) -> str: + """ Better default latex_engine settings for specific languages. """ + if config.language == 'ja': + return 'platex' + elif (config.language or '').startswith('zh'): + return 'xelatex' + elif config.language == 'el': + return 'xelatex' + else: + return 'pdflatex' + + +def default_latex_docclass(config: Config) -> Dict[str, str]: + """ Better default latex_docclass settings for specific languages. """ + if config.language == 'ja': + if config.latex_engine == 'uplatex': + return {'manual': 'ujbook', + 'howto': 'ujreport'} + else: + return {'manual': 'jsbook', + 'howto': 'jreport'} + else: + return {} + + +def default_latex_use_xindy(config: Config) -> bool: + """ Better default latex_use_xindy settings for specific engines. """ + return config.latex_engine in {'xelatex', 'lualatex'} + + +def default_latex_documents(config: Config) -> List[Tuple[str, str, str, str, str]]: + """ Better default latex_documents settings. """ + project = texescape.escape(config.project, config.latex_engine) + author = texescape.escape(config.author, config.latex_engine) + return [(config.master_doc, + make_filename_from_project(config.project) + '.tex', + texescape.escape_abbr(project), + texescape.escape_abbr(author), + config.latex_theme)] + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.setup_extension('sphinx.builders.latex.transforms') + + app.add_builder(LaTeXBuilder) + app.connect('config-inited', validate_config_values, priority=800) + + app.add_config_value('latex_engine', default_latex_engine, None, + ENUM('pdflatex', 'xelatex', 'lualatex', 'platex', 'uplatex')) + app.add_config_value('latex_documents', default_latex_documents, None) + app.add_config_value('latex_logo', None, None, [str]) + app.add_config_value('latex_appendices', [], None) + app.add_config_value('latex_use_latex_multicolumn', False, None) + app.add_config_value('latex_use_xindy', default_latex_use_xindy, None, [bool]) + app.add_config_value('latex_toplevel_sectioning', None, None, + ENUM(None, 'part', 'chapter', 'section')) + app.add_config_value('latex_domain_indices', True, None, [list]) + app.add_config_value('latex_show_urls', 'no', None) + app.add_config_value('latex_show_pagerefs', False, None) + app.add_config_value('latex_elements', {}, None) + app.add_config_value('latex_additional_files', [], None) + app.add_config_value('latex_theme', 'manual', None, [str]) + app.add_config_value('latex_theme_path', [], None, [list]) + + app.add_config_value('latex_docclass', default_latex_docclass, None) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/builders/latex/constants.py b/sphinx/sphinx/builders/latex/constants.py new file mode 100644 index 0000000..9a89036 --- /dev/null +++ b/sphinx/sphinx/builders/latex/constants.py @@ -0,0 +1,202 @@ +""" + sphinx.builders.latex.constants + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + consntants for LaTeX builder. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Any, Dict + + +PDFLATEX_DEFAULT_FONTPKG = r''' +\usepackage{times} +\expandafter\ifx\csname T@LGR\endcsname\relax +\else +% LGR was declared as font encoding + \substitutefont{LGR}{\rmdefault}{cmr} + \substitutefont{LGR}{\sfdefault}{cmss} + \substitutefont{LGR}{\ttdefault}{cmtt} +\fi +\expandafter\ifx\csname T@X2\endcsname\relax + \expandafter\ifx\csname T@T2A\endcsname\relax + \else + % T2A was declared as font encoding + \substitutefont{T2A}{\rmdefault}{cmr} + \substitutefont{T2A}{\sfdefault}{cmss} + \substitutefont{T2A}{\ttdefault}{cmtt} + \fi +\else +% X2 was declared as font encoding + \substitutefont{X2}{\rmdefault}{cmr} + \substitutefont{X2}{\sfdefault}{cmss} + \substitutefont{X2}{\ttdefault}{cmtt} +\fi +''' + +XELATEX_DEFAULT_FONTPKG = r''' +\setmainfont{FreeSerif}[ + Extension = .otf, + UprightFont = *, + ItalicFont = *Italic, + BoldFont = *Bold, + BoldItalicFont = *BoldItalic +] +\setsansfont{FreeSans}[ + Extension = .otf, + UprightFont = *, + ItalicFont = *Oblique, + BoldFont = *Bold, + BoldItalicFont = *BoldOblique, +] +\setmonofont{FreeMono}[ + Extension = .otf, + UprightFont = *, + ItalicFont = *Oblique, + BoldFont = *Bold, + BoldItalicFont = *BoldOblique, +] +''' + +XELATEX_GREEK_DEFAULT_FONTPKG = (XELATEX_DEFAULT_FONTPKG + + '\n\\newfontfamily\\greekfont{FreeSerif}' + + '\n\\newfontfamily\\greekfontsf{FreeSans}' + + '\n\\newfontfamily\\greekfonttt{FreeMono}') + +LUALATEX_DEFAULT_FONTPKG = XELATEX_DEFAULT_FONTPKG + +DEFAULT_SETTINGS = { + 'latex_engine': 'pdflatex', + 'papersize': 'letterpaper', + 'pointsize': '10pt', + 'pxunit': '.75bp', + 'classoptions': '', + 'extraclassoptions': '', + 'maxlistdepth': '', + 'sphinxpkgoptions': '', + 'sphinxsetup': '', + 'fvset': '\\fvset{fontsize=\\small}', + 'passoptionstopackages': '', + 'geometry': '\\usepackage{geometry}', + 'inputenc': '', + 'utf8extra': '', + 'cmappkg': '\\usepackage{cmap}', + 'fontenc': '\\usepackage[T1]{fontenc}', + 'amsmath': '\\usepackage{amsmath,amssymb,amstext}', + 'multilingual': '', + 'babel': '\\usepackage{babel}', + 'polyglossia': '', + 'fontpkg': PDFLATEX_DEFAULT_FONTPKG, + 'substitutefont': '', + 'textcyrillic': '', + 'textgreek': '\\usepackage{textalpha}', + 'fncychap': '\\usepackage[Bjarne]{fncychap}', + 'hyperref': ('% Include hyperref last.\n' + '\\usepackage{hyperref}\n' + '% Fix anchor placement for figures with captions.\n' + '\\usepackage{hypcap}% it must be loaded after hyperref.\n' + '% Set up styles of URL: it should be placed after hyperref.\n' + '\\urlstyle{same}'), + 'contentsname': '', + 'extrapackages': '', + 'preamble': '', + 'title': '', + 'release': '', + 'author': '', + 'releasename': '', + 'makeindex': '\\makeindex', + 'shorthandoff': '', + 'maketitle': '\\sphinxmaketitle', + 'tableofcontents': '\\sphinxtableofcontents', + 'atendofbody': '', + 'printindex': '\\printindex', + 'transition': '\n\n\\bigskip\\hrule\\bigskip\n\n', + 'figure_align': 'htbp', + 'tocdepth': '', + 'secnumdepth': '', +} # type: Dict[str, Any] + +ADDITIONAL_SETTINGS = { + 'pdflatex': { + 'inputenc': '\\usepackage[utf8]{inputenc}', + 'utf8extra': ('\\ifdefined\\DeclareUnicodeCharacter\n' + '% support both utf8 and utf8x syntaxes\n' + ' \\ifdefined\\DeclareUnicodeCharacterAsOptional\n' + ' \\def\\sphinxDUC#1{\\DeclareUnicodeCharacter{"#1}}\n' + ' \\else\n' + ' \\let\\sphinxDUC\\DeclareUnicodeCharacter\n' + ' \\fi\n' + ' \\sphinxDUC{00A0}{\\nobreakspace}\n' + ' \\sphinxDUC{2500}{\\sphinxunichar{2500}}\n' + ' \\sphinxDUC{2502}{\\sphinxunichar{2502}}\n' + ' \\sphinxDUC{2514}{\\sphinxunichar{2514}}\n' + ' \\sphinxDUC{251C}{\\sphinxunichar{251C}}\n' + ' \\sphinxDUC{2572}{\\textbackslash}\n' + '\\fi'), + }, + 'xelatex': { + 'latex_engine': 'xelatex', + 'polyglossia': '\\usepackage{polyglossia}', + 'babel': '', + 'fontenc': ('\\usepackage{fontspec}\n' + '\\defaultfontfeatures[\\rmfamily,\\sffamily,\\ttfamily]{}'), + 'fontpkg': XELATEX_DEFAULT_FONTPKG, + 'textgreek': '', + 'utf8extra': ('\\catcode`^^^^00a0\\active\\protected\\def^^^^00a0' + '{\\leavevmode\\nobreak\\ }'), + }, + 'lualatex': { + 'latex_engine': 'lualatex', + 'polyglossia': '\\usepackage{polyglossia}', + 'babel': '', + 'fontenc': ('\\usepackage{fontspec}\n' + '\\defaultfontfeatures[\\rmfamily,\\sffamily,\\ttfamily]{}'), + 'fontpkg': LUALATEX_DEFAULT_FONTPKG, + 'textgreek': '', + 'utf8extra': ('\\catcode`^^^^00a0\\active\\protected\\def^^^^00a0' + '{\\leavevmode\\nobreak\\ }'), + }, + 'platex': { + 'latex_engine': 'platex', + 'babel': '', + 'classoptions': ',dvipdfmx', + 'fontpkg': '\\usepackage{times}', + 'textgreek': '', + 'fncychap': '', + 'geometry': '\\usepackage[dvipdfm]{geometry}', + }, + 'uplatex': { + 'latex_engine': 'uplatex', + 'babel': '', + 'classoptions': ',dvipdfmx', + 'fontpkg': '\\usepackage{times}', + 'textgreek': '', + 'fncychap': '', + 'geometry': '\\usepackage[dvipdfm]{geometry}', + }, + + # special settings for latex_engine + language_code + ('xelatex', 'fr'): { + # use babel instead of polyglossia by default + 'polyglossia': '', + 'babel': '\\usepackage{babel}', + }, + ('xelatex', 'zh'): { + 'polyglossia': '', + 'babel': '\\usepackage{babel}', + 'fontenc': '\\usepackage{xeCJK}', + }, + ('xelatex', 'el'): { + 'fontpkg': XELATEX_GREEK_DEFAULT_FONTPKG, + }, +} # type: Dict[Any, Dict[str, Any]] + + +SHORTHANDOFF = r''' +\ifdefined\shorthandoff + \ifnum\catcode`\=\string=\active\shorthandoff{=}\fi + \ifnum\catcode`\"=\active\shorthandoff{"}\fi +\fi +''' diff --git a/sphinx/sphinx/builders/latex/nodes.py b/sphinx/sphinx/builders/latex/nodes.py new file mode 100644 index 0000000..e6b1e5a --- /dev/null +++ b/sphinx/sphinx/builders/latex/nodes.py @@ -0,0 +1,45 @@ +""" + sphinx.builders.latex.nodes + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Additional nodes for LaTeX writer. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from docutils import nodes + + +class captioned_literal_block(nodes.container): + """A node for a container of literal_block having a caption.""" + pass + + +class footnotemark(nodes.Inline, nodes.Referential, nodes.TextElement): + """A node represents ``\footnotemark``.""" + pass + + +class footnotetext(nodes.General, nodes.BackLinkable, nodes.Element, + nodes.Labeled, nodes.Targetable): + """A node represents ``\footnotetext``.""" + + +class math_reference(nodes.Inline, nodes.Referential, nodes.TextElement): + """A node for a reference for equation.""" + pass + + +class thebibliography(nodes.container): + """A node for wrapping bibliographies.""" + pass + + +HYPERLINK_SUPPORT_NODES = ( + nodes.figure, + nodes.literal_block, + nodes.table, + nodes.section, + captioned_literal_block, +) diff --git a/sphinx/sphinx/builders/latex/theming.py b/sphinx/sphinx/builders/latex/theming.py new file mode 100644 index 0000000..d638639 --- /dev/null +++ b/sphinx/sphinx/builders/latex/theming.py @@ -0,0 +1,128 @@ +""" + sphinx.builders.latex.theming + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Theming support for LaTeX builder. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import configparser +from os import path +from typing import Dict + +from sphinx.application import Sphinx +from sphinx.config import Config +from sphinx.errors import ThemeError +from sphinx.locale import __ +from sphinx.util import logging + +logger = logging.getLogger(__name__) + + +class Theme: + """A set of LaTeX configurations.""" + + def __init__(self, name: str) -> None: + self.name = name + self.docclass = name + self.wrapperclass = name + self.toplevel_sectioning = 'chapter' + + +class BuiltInTheme(Theme): + """A built-in LaTeX theme.""" + + def __init__(self, name: str, config: Config) -> None: + # Note: Don't call supermethod here. + self.name = name + self.latex_docclass = config.latex_docclass # type: Dict[str, str] + + @property + def docclass(self) -> str: # type: ignore + if self.name == 'howto': + return self.latex_docclass.get('howto', 'article') + else: + return self.latex_docclass.get('manual', 'report') + + @property + def wrapperclass(self) -> str: # type: ignore + if self.name in ('manual', 'howto'): + return 'sphinx' + self.name + else: + return self.name + + @property + def toplevel_sectioning(self) -> str: # type: ignore + # we assume LaTeX class provides \chapter command except in case + # of non-Japanese 'howto' case + if self.name == 'howto' and not self.docclass.startswith('j'): + return 'section' + else: + return 'chapter' + + +class UserTheme(Theme): + """A user defined LaTeX theme.""" + + REQUIRED_CONFIG_KEYS = ['docclass', 'wrapperclass'] + OPTIONAL_CONFIG_KEYS = ['toplevel_sectioning'] + + def __init__(self, name: str, filename: str) -> None: + super().__init__(name) + self.config = configparser.RawConfigParser() + self.config.read(path.join(filename)) + + for key in self.REQUIRED_CONFIG_KEYS: + try: + value = self.config.get('theme', key) + setattr(self, key, value) + except configparser.NoSectionError: + raise ThemeError(__('%r doesn\'t have "theme" setting') % filename) + except configparser.NoOptionError as exc: + raise ThemeError(__('%r doesn\'t have "%s" setting') % (filename, exc.args[0])) + + for key in self.OPTIONAL_CONFIG_KEYS: + try: + value = self.config.get('theme', key) + setattr(self, key, value) + except configparser.NoOptionError: + pass + + +class ThemeFactory: + """A factory class for LaTeX Themes.""" + + def __init__(self, app: Sphinx) -> None: + self.themes = {} # type: Dict[str, Theme] + self.theme_paths = [path.join(app.srcdir, p) for p in app.config.latex_theme_path] + self.load_builtin_themes(app.config) + + def load_builtin_themes(self, config: Config) -> None: + """Load built-in themes.""" + self.themes['manual'] = BuiltInTheme('manual', config) + self.themes['howto'] = BuiltInTheme('howto', config) + + def get(self, name: str) -> Theme: + """Get a theme for given *name*.""" + if name in self.themes: + return self.themes[name] + else: + theme = self.find_user_theme(name) + if theme: + return theme + else: + return Theme(name) + + def find_user_theme(self, name: str) -> Theme: + """Find a theme named as *name* from latex_theme_path.""" + for theme_path in self.theme_paths: + config_path = path.join(theme_path, name, 'theme.conf') + if path.isfile(config_path): + try: + return UserTheme(name, config_path) + except ThemeError as exc: + logger.warning(exc) + + return None diff --git a/sphinx/sphinx/builders/latex/transforms.py b/sphinx/sphinx/builders/latex/transforms.py new file mode 100644 index 0000000..28841ad --- /dev/null +++ b/sphinx/sphinx/builders/latex/transforms.py @@ -0,0 +1,618 @@ +""" + sphinx.builders.latex.transforms + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Transforms for LaTeX builder. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Any, Dict, List, Set, Tuple +from typing import cast + +from docutils import nodes +from docutils.nodes import Element, Node + +from sphinx import addnodes +from sphinx.application import Sphinx +from sphinx.builders.latex.nodes import ( + captioned_literal_block, footnotemark, footnotetext, math_reference, thebibliography +) +from sphinx.domains.citation import CitationDomain +from sphinx.transforms import SphinxTransform +from sphinx.transforms.post_transforms import SphinxPostTransform +from sphinx.util.nodes import NodeMatcher + +URI_SCHEMES = ('mailto:', 'http:', 'https:', 'ftp:') + + +class FootnoteDocnameUpdater(SphinxTransform): + """Add docname to footnote and footnote_reference nodes.""" + default_priority = 700 + TARGET_NODES = (nodes.footnote, nodes.footnote_reference) + + def apply(self, **kwargs: Any) -> None: + matcher = NodeMatcher(*self.TARGET_NODES) + for node in self.document.traverse(matcher): # type: nodes.Element + node['docname'] = self.env.docname + + +class ShowUrlsTransform(SphinxPostTransform): + """Expand references to inline text or footnotes. + + For more information, see :confval:`latex_show_urls`. + + .. note:: This transform is used for integrated doctree + """ + default_priority = 400 + builders = ('latex',) + + # references are expanded to footnotes (or not) + expanded = False + + def run(self, **kwargs: Any) -> None: + try: + # replace id_prefix temporarily + settings = self.document.settings # type: Any + id_prefix = settings.id_prefix + settings.id_prefix = 'show_urls' + + self.expand_show_urls() + if self.expanded: + self.renumber_footnotes() + finally: + # restore id_prefix + settings.id_prefix = id_prefix + + def expand_show_urls(self) -> None: + show_urls = self.config.latex_show_urls + if show_urls is False or show_urls == 'no': + return + + for node in self.document.traverse(nodes.reference): + uri = node.get('refuri', '') + if uri.startswith(URI_SCHEMES): + if uri.startswith('mailto:'): + uri = uri[7:] + if node.astext() != uri: + index = node.parent.index(node) + docname = self.get_docname_for_node(node) + if show_urls == 'footnote': + fn, fnref = self.create_footnote(uri, docname) + node.parent.insert(index + 1, fn) + node.parent.insert(index + 2, fnref) + + self.expanded = True + else: # all other true values (b/w compat) + textnode = nodes.Text(" (%s)" % uri) + node.parent.insert(index + 1, textnode) + + def get_docname_for_node(self, node: Node) -> str: + while node: + if isinstance(node, nodes.document): + return self.env.path2doc(node['source']) + elif isinstance(node, addnodes.start_of_file): + return node['docname'] + else: + node = node.parent + + return None # never reached here. only for type hinting + + def create_footnote(self, uri: str, docname: str) -> Tuple[nodes.footnote, nodes.footnote_reference]: # NOQA + reference = nodes.reference('', nodes.Text(uri), refuri=uri, nolinkurl=True) + footnote = nodes.footnote(uri, auto=1, docname=docname) + footnote['names'].append('#') + footnote += nodes.label('', '#') + footnote += nodes.paragraph('', '', reference) + self.document.note_autofootnote(footnote) + + footnote_ref = nodes.footnote_reference('[#]_', auto=1, + refid=footnote['ids'][0], docname=docname) + footnote_ref += nodes.Text('#') + self.document.note_autofootnote_ref(footnote_ref) + footnote.add_backref(footnote_ref['ids'][0]) + + return footnote, footnote_ref + + def renumber_footnotes(self) -> None: + collector = FootnoteCollector(self.document) + self.document.walkabout(collector) + + num = 0 + for footnote in collector.auto_footnotes: + # search unused footnote number + while True: + num += 1 + if str(num) not in collector.used_footnote_numbers: + break + + # assign new footnote number + old_label = cast(nodes.label, footnote[0]) + old_label.replace_self(nodes.label('', str(num))) + if old_label in footnote['names']: + footnote['names'].remove(old_label.astext()) + footnote['names'].append(str(num)) + + # update footnote_references by new footnote number + docname = footnote['docname'] + for ref in collector.footnote_refs: + if docname == ref['docname'] and footnote['ids'][0] == ref['refid']: + ref.remove(ref[0]) + ref += nodes.Text(str(num)) + + +class FootnoteCollector(nodes.NodeVisitor): + """Collect footnotes and footnote references on the document""" + + def __init__(self, document: nodes.document) -> None: + self.auto_footnotes = [] # type: List[nodes.footnote] + self.used_footnote_numbers = set() # type: Set[str] + self.footnote_refs = [] # type: List[nodes.footnote_reference] + super().__init__(document) + + def unknown_visit(self, node: Node) -> None: + pass + + def unknown_departure(self, node: Node) -> None: + pass + + def visit_footnote(self, node: nodes.footnote) -> None: + if node.get('auto'): + self.auto_footnotes.append(node) + else: + for name in node['names']: + self.used_footnote_numbers.add(name) + + def visit_footnote_reference(self, node: nodes.footnote_reference) -> None: + self.footnote_refs.append(node) + + +class LaTeXFootnoteTransform(SphinxPostTransform): + """Convert footnote definitions and references to appropriate form to LaTeX. + + * Replace footnotes on restricted zone (e.g. headings) by footnotemark node. + In addition, append a footnotetext node after the zone. + + Before:: + + <section> + <title> + headings having footnotes + <footnote_reference> + 1 + <footnote ids="1"> + <label> + 1 + <paragraph> + footnote body + + After:: + + <section> + <title> + headings having footnotes + <footnotemark> + 1 + <footnotetext> + footnote body + <footnotetext> + <label> + 1 + <paragraph> + footnote body + + * Integrate footnote definitions and footnote references to single footnote node + + Before:: + + blah blah blah + <footnote_reference refid="id1"> + 1 + blah blah blah ... + + <footnote ids="1"> + <label> + 1 + <paragraph> + footnote body + + After:: + + blah blah blah + <footnote ids="1"> + <label> + 1 + <paragraph> + footnote body + blah blah blah ... + + * Replace second and subsequent footnote references which refers same footnote definition + by footnotemark node. + + Before:: + + blah blah blah + <footnote_reference refid="id1"> + 1 + blah blah blah + <footnote_reference refid="id1"> + 1 + blah blah blah ... + + <footnote ids="1"> + <label> + 1 + <paragraph> + footnote body + + After:: + + blah blah blah + <footnote ids="1"> + <label> + 1 + <paragraph> + footnote body + blah blah blah + <footnotemark> + 1 + blah blah blah ... + + * Remove unreferenced footnotes + + Before:: + + <footnote ids="1"> + <label> + 1 + <paragraph> + Unreferenced footnote! + + After:: + + <!-- nothing! --> + + * Move footnotes in a title of table or thead to head of tbody + + Before:: + + <table> + <title> + title having footnote_reference + <footnote_reference refid="1"> + 1 + <tgroup> + <thead> + <row> + <entry> + header having footnote_reference + <footnote_reference refid="2"> + 2 + <tbody> + <row> + ... + + <footnote ids="1"> + <label> + 1 + <paragraph> + footnote body + + <footnote ids="2"> + <label> + 2 + <paragraph> + footnote body + + After:: + + <table> + <title> + title having footnote_reference + <footnotemark> + 1 + <tgroup> + <thead> + <row> + <entry> + header having footnote_reference + <footnotemark> + 2 + <tbody> + <footnotetext> + <label> + 1 + <paragraph> + footnote body + + <footnotetext> + <label> + 2 + <paragraph> + footnote body + <row> + ... + """ + + default_priority = 600 + builders = ('latex',) + + def run(self, **kwargs: Any) -> None: + footnotes = list(self.document.traverse(nodes.footnote)) + for node in footnotes: + node.parent.remove(node) + + visitor = LaTeXFootnoteVisitor(self.document, footnotes) + self.document.walkabout(visitor) + + +class LaTeXFootnoteVisitor(nodes.NodeVisitor): + def __init__(self, document: nodes.document, footnotes: List[nodes.footnote]) -> None: + self.appeared = set() # type: Set[Tuple[str, str]] + self.footnotes = footnotes # type: List[nodes.footnote] + self.pendings = [] # type: List[nodes.footnote] + self.table_footnotes = [] # type: List[nodes.footnote] + self.restricted = None # type: nodes.Element + super().__init__(document) + + def unknown_visit(self, node: Node) -> None: + pass + + def unknown_departure(self, node: Node) -> None: + pass + + def restrict(self, node: Element) -> None: + if self.restricted is None: + self.restricted = node + + def unrestrict(self, node: Element) -> None: + if self.restricted == node: + self.restricted = None + pos = node.parent.index(node) + for i, footnote, in enumerate(self.pendings): + fntext = footnotetext('', *footnote.children) + node.parent.insert(pos + i + 1, fntext) + self.pendings = [] + + def visit_figure(self, node: nodes.figure) -> None: + self.restrict(node) + + def depart_figure(self, node: nodes.figure) -> None: + self.unrestrict(node) + + def visit_term(self, node: nodes.term) -> None: + self.restrict(node) + + def depart_term(self, node: nodes.term) -> None: + self.unrestrict(node) + + def visit_caption(self, node: nodes.caption) -> None: + self.restrict(node) + + def depart_caption(self, node: nodes.caption) -> None: + self.unrestrict(node) + + def visit_title(self, node: nodes.title) -> None: + if isinstance(node.parent, (nodes.section, nodes.table)): + self.restrict(node) + + def depart_title(self, node: nodes.title) -> None: + if isinstance(node.parent, nodes.section): + self.unrestrict(node) + elif isinstance(node.parent, nodes.table): + self.table_footnotes += self.pendings + self.pendings = [] + self.unrestrict(node) + + def visit_thead(self, node: nodes.thead) -> None: + self.restrict(node) + + def depart_thead(self, node: nodes.thead) -> None: + self.table_footnotes += self.pendings + self.pendings = [] + self.unrestrict(node) + + def depart_table(self, node: nodes.table) -> None: + tbody = list(node.traverse(nodes.tbody))[0] + for footnote in reversed(self.table_footnotes): + fntext = footnotetext('', *footnote.children) + tbody.insert(0, fntext) + + self.table_footnotes = [] + + def visit_footnote(self, node: nodes.footnote) -> None: + self.restrict(node) + + def depart_footnote(self, node: nodes.footnote) -> None: + self.unrestrict(node) + + def visit_footnote_reference(self, node: nodes.footnote_reference) -> None: + number = node.astext().strip() + docname = node['docname'] + if self.restricted: + mark = footnotemark('', number) + node.replace_self(mark) + if (docname, number) not in self.appeared: + footnote = self.get_footnote_by_reference(node) + self.pendings.append(footnote) + elif (docname, number) in self.appeared: + mark = footnotemark('', number) + node.replace_self(mark) + else: + footnote = self.get_footnote_by_reference(node) + self.footnotes.remove(footnote) + node.replace_self(footnote) + footnote.walkabout(self) + + self.appeared.add((docname, number)) + raise nodes.SkipNode + + def get_footnote_by_reference(self, node: nodes.footnote_reference) -> nodes.footnote: + docname = node['docname'] + for footnote in self.footnotes: + if docname == footnote['docname'] and footnote['ids'][0] == node['refid']: + return footnote + + return None + + +class BibliographyTransform(SphinxPostTransform): + """Gather bibliography entries to tail of document. + + Before:: + + <document> + <paragraph> + blah blah blah + <citation> + ... + <paragraph> + blah blah blah + <citation> + ... + ... + + After:: + + <document> + <paragraph> + blah blah blah + <paragraph> + blah blah blah + ... + <thebibliography> + <citation> + ... + <citation> + ... + """ + default_priority = 750 + builders = ('latex',) + + def run(self, **kwargs: Any) -> None: + citations = thebibliography() + for node in self.document.traverse(nodes.citation): + node.parent.remove(node) + citations += node + + if len(citations) > 0: + self.document += citations + + +class CitationReferenceTransform(SphinxPostTransform): + """Replace pending_xref nodes for citation by citation_reference. + + To handle citation reference easily on LaTeX writer, this converts + pending_xref nodes to citation_reference. + """ + default_priority = 5 # before ReferencesResolver + builders = ('latex',) + + def run(self, **kwargs: Any) -> None: + domain = cast(CitationDomain, self.env.get_domain('citation')) + matcher = NodeMatcher(addnodes.pending_xref, refdomain='citation', reftype='ref') + for node in self.document.traverse(matcher): # type: addnodes.pending_xref + docname, labelid, _ = domain.citations.get(node['reftarget'], ('', '', 0)) + if docname: + citation_ref = nodes.citation_reference('', '', *node.children, + docname=docname, refname=labelid) + node.replace_self(citation_ref) + + +class MathReferenceTransform(SphinxPostTransform): + """Replace pending_xref nodes for math by math_reference. + + To handle math reference easily on LaTeX writer, this converts pending_xref + nodes to math_reference. + """ + default_priority = 5 # before ReferencesResolver + builders = ('latex',) + + def run(self, **kwargs: Any) -> None: + equations = self.env.get_domain('math').data['objects'] + for node in self.document.traverse(addnodes.pending_xref): + if node['refdomain'] == 'math' and node['reftype'] in ('eq', 'numref'): + docname, _ = equations.get(node['reftarget'], (None, None)) + if docname: + refnode = math_reference('', docname=docname, target=node['reftarget']) + node.replace_self(refnode) + + +class LiteralBlockTransform(SphinxPostTransform): + """Replace container nodes for literal_block by captioned_literal_block.""" + default_priority = 400 + builders = ('latex',) + + def run(self, **kwargs: Any) -> None: + matcher = NodeMatcher(nodes.container, literal_block=True) + for node in self.document.traverse(matcher): # type: nodes.container + newnode = captioned_literal_block('', *node.children, **node.attributes) + node.replace_self(newnode) + + +class DocumentTargetTransform(SphinxPostTransform): + """Add :doc label to the first section of each document.""" + default_priority = 400 + builders = ('latex',) + + def run(self, **kwargs: Any) -> None: + for node in self.document.traverse(addnodes.start_of_file): + section = node.next_node(nodes.section) + if section: + section['ids'].append(':doc') # special label for :doc: + + +class IndexInSectionTitleTransform(SphinxTransform): + """Move index nodes in section title to outside of the title. + + LaTeX index macro is not compatible with some handling of section titles + such as uppercasing done on LaTeX side (cf. fncychap handling of ``\\chapter``). + Moving the index node to after the title node fixes that. + + Before:: + + <section> + <title> + blah blah <index entries=[...]/>blah + <paragraph> + blah blah blah + ... + + After:: + + <section> + <title> + blah blah blah + <index entries=[...]/> + <paragraph> + blah blah blah + ... + """ + default_priority = 400 + + def apply(self, **kwargs: Any) -> None: + for node in self.document.traverse(nodes.title): + if isinstance(node.parent, nodes.section): + for i, index in enumerate(node.traverse(addnodes.index)): + # move the index node next to the section title + node.remove(index) + node.parent.insert(i + 1, index) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_transform(FootnoteDocnameUpdater) + app.add_post_transform(BibliographyTransform) + app.add_post_transform(CitationReferenceTransform) + app.add_post_transform(DocumentTargetTransform) + app.add_post_transform(IndexInSectionTitleTransform) + app.add_post_transform(LaTeXFootnoteTransform) + app.add_post_transform(LiteralBlockTransform) + app.add_post_transform(MathReferenceTransform) + app.add_post_transform(ShowUrlsTransform) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/builders/latex/util.py b/sphinx/sphinx/builders/latex/util.py new file mode 100644 index 0000000..b7d7912 --- /dev/null +++ b/sphinx/sphinx/builders/latex/util.py @@ -0,0 +1,54 @@ +""" + sphinx.builders.latex.util + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Utilities for LaTeX builder. + + :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from docutils.writers.latex2e import Babel + + +class ExtBabel(Babel): + cyrillic_languages = ('bulgarian', 'kazakh', 'mongolian', 'russian', 'ukrainian') + + def __init__(self, language_code: str, use_polyglossia: bool = False) -> None: + self.language_code = language_code + self.use_polyglossia = use_polyglossia + self.supported = True + super().__init__(language_code or '') + + def uses_cyrillic(self) -> bool: + return self.language in self.cyrillic_languages + + def is_supported_language(self) -> bool: + return self.supported + + def language_name(self, language_code: str) -> str: + language = super().language_name(language_code) + if language == 'ngerman' and self.use_polyglossia: + # polyglossia calls new orthography (Neue Rechtschreibung) as + # german (with new spelling option). + return 'german' + elif language: + return language + elif language_code.startswith('zh'): + return 'english' # fallback to english (behaves like supported) + else: + self.supported = False + return 'english' # fallback to english + + def get_mainlanguage_options(self) -> str: + """Return options for polyglossia's ``\\setmainlanguage``.""" + if self.use_polyglossia is False: + return None + elif self.language == 'german': + language = super().language_name(self.language_code) + if language == 'ngerman': + return 'spelling=new' + else: + return 'spelling=old' + else: + return None diff --git a/sphinx/sphinx/builders/linkcheck.py b/sphinx/sphinx/builders/linkcheck.py new file mode 100644 index 0000000..9fe689e --- /dev/null +++ b/sphinx/sphinx/builders/linkcheck.py @@ -0,0 +1,352 @@ +""" + sphinx.builders.linkcheck + ~~~~~~~~~~~~~~~~~~~~~~~~~ + + The CheckExternalLinksBuilder class. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import json +import queue +import re +import socket +import threading +from html.parser import HTMLParser +from os import path +from typing import Any, Dict, List, Set, Tuple +from urllib.parse import unquote + +from docutils import nodes +from docutils.nodes import Node +from requests.exceptions import HTTPError + +from sphinx.application import Sphinx +from sphinx.builders import Builder +from sphinx.locale import __ +from sphinx.util import encode_uri, requests, logging +from sphinx.util.console import ( # type: ignore + purple, red, darkgreen, darkgray, turquoise +) +from sphinx.util.nodes import get_node_line +from sphinx.util.requests import is_ssl_error + + +logger = logging.getLogger(__name__) + + +class AnchorCheckParser(HTMLParser): + """Specialized HTML parser that looks for a specific anchor.""" + + def __init__(self, search_anchor: str) -> None: + super().__init__() + + self.search_anchor = search_anchor + self.found = False + + def handle_starttag(self, tag: Any, attrs: Any) -> None: + for key, value in attrs: + if key in ('id', 'name') and value == self.search_anchor: + self.found = True + break + + +def check_anchor(response: requests.requests.Response, anchor: str) -> bool: + """Reads HTML data from a response object `response` searching for `anchor`. + Returns True if anchor was found, False otherwise. + """ + parser = AnchorCheckParser(anchor) + # Read file in chunks. If we find a matching anchor, we break + # the loop early in hopes not to have to download the whole thing. + for chunk in response.iter_content(chunk_size=4096, decode_unicode=True): + if isinstance(chunk, bytes): # requests failed to decode + chunk = chunk.decode() # manually try to decode it + + parser.feed(chunk) + if parser.found: + break + parser.close() + return parser.found + + +class CheckExternalLinksBuilder(Builder): + """ + Checks for broken external links. + """ + name = 'linkcheck' + epilog = __('Look for any errors in the above output or in ' + '%(outdir)s/output.txt') + + def init(self) -> None: + self.to_ignore = [re.compile(x) for x in self.app.config.linkcheck_ignore] + self.anchors_ignore = [re.compile(x) + for x in self.app.config.linkcheck_anchors_ignore] + self.auth = [(re.compile(pattern), auth_info) for pattern, auth_info + in self.app.config.linkcheck_auth] + self.good = set() # type: Set[str] + self.broken = {} # type: Dict[str, str] + self.redirected = {} # type: Dict[str, Tuple[str, int]] + # set a timeout for non-responding servers + socket.setdefaulttimeout(5.0) + # create output file + open(path.join(self.outdir, 'output.txt'), 'w').close() + # create JSON output file + open(path.join(self.outdir, 'output.json'), 'w').close() + + # create queues and worker threads + self.wqueue = queue.Queue() # type: queue.Queue + self.rqueue = queue.Queue() # type: queue.Queue + self.workers = [] # type: List[threading.Thread] + for i in range(self.app.config.linkcheck_workers): + thread = threading.Thread(target=self.check_thread) + thread.setDaemon(True) + thread.start() + self.workers.append(thread) + + def check_thread(self) -> None: + kwargs = { + 'allow_redirects': True, + 'headers': { + 'Accept': 'text/html,application/xhtml+xml;q=0.9,*/*;q=0.8', + }, + } + if self.app.config.linkcheck_timeout: + kwargs['timeout'] = self.app.config.linkcheck_timeout + + def check_uri() -> Tuple[str, str, int]: + # split off anchor + if '#' in uri: + req_url, anchor = uri.split('#', 1) + for rex in self.anchors_ignore: + if rex.match(anchor): + anchor = None + break + else: + req_url = uri + anchor = None + + # handle non-ASCII URIs + try: + req_url.encode('ascii') + except UnicodeError: + req_url = encode_uri(req_url) + + # Get auth info, if any + for pattern, auth_info in self.auth: + if pattern.match(uri): + break + else: + auth_info = None + + try: + if anchor and self.app.config.linkcheck_anchors: + # Read the whole document and see if #anchor exists + response = requests.get(req_url, stream=True, config=self.app.config, + auth=auth_info, **kwargs) + found = check_anchor(response, unquote(anchor)) + + if not found: + raise Exception(__("Anchor '%s' not found") % anchor) + else: + try: + # try a HEAD request first, which should be easier on + # the server and the network + response = requests.head(req_url, config=self.app.config, + auth=auth_info, **kwargs) + response.raise_for_status() + except HTTPError: + # retry with GET request if that fails, some servers + # don't like HEAD requests. + response = requests.get(req_url, stream=True, config=self.app.config, + auth=auth_info, **kwargs) + response.raise_for_status() + except HTTPError as err: + if err.response.status_code == 401: + # We'll take "Unauthorized" as working. + return 'working', ' - unauthorized', 0 + elif err.response.status_code == 503: + # We'll take "Service Unavailable" as ignored. + return 'ignored', str(err), 0 + else: + return 'broken', str(err), 0 + except Exception as err: + if is_ssl_error(err): + return 'ignored', str(err), 0 + else: + return 'broken', str(err), 0 + if response.url.rstrip('/') == req_url.rstrip('/'): + return 'working', '', 0 + else: + new_url = response.url + if anchor: + new_url += '#' + anchor + # history contains any redirects, get last + if response.history: + code = response.history[-1].status_code + return 'redirected', new_url, code + else: + return 'redirected', new_url, 0 + + def check() -> Tuple[str, str, int]: + # check for various conditions without bothering the network + if len(uri) == 0 or uri.startswith(('#', 'mailto:', 'ftp:')): + return 'unchecked', '', 0 + elif not uri.startswith(('http:', 'https:')): + return 'local', '', 0 + elif uri in self.good: + return 'working', 'old', 0 + elif uri in self.broken: + return 'broken', self.broken[uri], 0 + elif uri in self.redirected: + return 'redirected', self.redirected[uri][0], self.redirected[uri][1] + for rex in self.to_ignore: + if rex.match(uri): + return 'ignored', '', 0 + + # need to actually check the URI + for _ in range(self.app.config.linkcheck_retries): + status, info, code = check_uri() + if status != "broken": + break + + if status == "working": + self.good.add(uri) + elif status == "broken": + self.broken[uri] = info + elif status == "redirected": + self.redirected[uri] = (info, code) + + return (status, info, code) + + while True: + uri, docname, lineno = self.wqueue.get() + if uri is None: + break + status, info, code = check() + self.rqueue.put((uri, docname, lineno, status, info, code)) + + def process_result(self, result: Tuple[str, str, int, str, str, int]) -> None: + uri, docname, lineno, status, info, code = result + + filename = self.env.doc2path(docname, None) + linkstat = dict(filename=filename, lineno=lineno, + status=status, code=code, uri=uri, + info=info) + if status == 'unchecked': + self.write_linkstat(linkstat) + return + if status == 'working' and info == 'old': + self.write_linkstat(linkstat) + return + if lineno: + logger.info('(line %4d) ', lineno, nonl=True) + if status == 'ignored': + if info: + logger.info(darkgray('-ignored- ') + uri + ': ' + info) + else: + logger.info(darkgray('-ignored- ') + uri) + self.write_linkstat(linkstat) + elif status == 'local': + logger.info(darkgray('-local- ') + uri) + self.write_entry('local', docname, filename, lineno, uri) + self.write_linkstat(linkstat) + elif status == 'working': + logger.info(darkgreen('ok ') + uri + info) + self.write_linkstat(linkstat) + elif status == 'broken': + if self.app.quiet or self.app.warningiserror: + logger.warning(__('broken link: %s (%s)'), uri, info, + location=(filename, lineno)) + else: + logger.info(red('broken ') + uri + red(' - ' + info)) + self.write_entry('broken', docname, filename, lineno, uri + ': ' + info) + self.write_linkstat(linkstat) + elif status == 'redirected': + try: + text, color = { + 301: ('permanently', purple), + 302: ('with Found', purple), + 303: ('with See Other', purple), + 307: ('temporarily', turquoise), + 308: ('permanently', purple), + }[code] + except KeyError: + text, color = ('with unknown code', purple) + linkstat['text'] = text + logger.info(color('redirect ') + uri + color(' - ' + text + ' to ' + info)) + self.write_entry('redirected ' + text, docname, filename, + lineno, uri + ' to ' + info) + self.write_linkstat(linkstat) + + def get_target_uri(self, docname: str, typ: str = None) -> str: + return '' + + def get_outdated_docs(self) -> Set[str]: + return self.env.found_docs + + def prepare_writing(self, docnames: Set[str]) -> None: + return + + def write_doc(self, docname: str, doctree: Node) -> None: + logger.info('') + n = 0 + + # reference nodes + for refnode in doctree.traverse(nodes.reference): + if 'refuri' not in refnode: + continue + uri = refnode['refuri'] + lineno = get_node_line(refnode) + self.wqueue.put((uri, docname, lineno), False) + n += 1 + + # image nodes + for imgnode in doctree.traverse(nodes.image): + uri = imgnode['candidates'].get('?') + if uri and '://' in uri: + lineno = get_node_line(imgnode) + self.wqueue.put((uri, docname, lineno), False) + n += 1 + + done = 0 + while done < n: + self.process_result(self.rqueue.get()) + done += 1 + + if self.broken: + self.app.statuscode = 1 + + def write_entry(self, what: str, docname: str, filename: str, line: int, + uri: str) -> None: + with open(path.join(self.outdir, 'output.txt'), 'a') as output: + output.write("%s:%s: [%s] %s\n" % (filename, line, what, uri)) + + def write_linkstat(self, data: dict) -> None: + with open(path.join(self.outdir, 'output.json'), 'a') as output: + output.write(json.dumps(data)) + output.write('\n') + + def finish(self) -> None: + for worker in self.workers: + self.wqueue.put((None, None, None), False) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_builder(CheckExternalLinksBuilder) + + app.add_config_value('linkcheck_ignore', [], None) + app.add_config_value('linkcheck_auth', [], None) + app.add_config_value('linkcheck_retries', 1, None) + app.add_config_value('linkcheck_timeout', None, None, [int]) + app.add_config_value('linkcheck_workers', 5, None) + app.add_config_value('linkcheck_anchors', True, None) + # Anchors starting with ! are ignored since they are + # commonly used for dynamic pages + app.add_config_value('linkcheck_anchors_ignore', ["^!"], None) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/builders/manpage.py b/sphinx/sphinx/builders/manpage.py new file mode 100644 index 0000000..4166dec --- /dev/null +++ b/sphinx/sphinx/builders/manpage.py @@ -0,0 +1,123 @@ +""" + sphinx.builders.manpage + ~~~~~~~~~~~~~~~~~~~~~~~ + + Manual pages builder. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from os import path +from typing import Any, Dict, List, Set, Tuple, Union + +from docutils.frontend import OptionParser +from docutils.io import FileOutput + +from sphinx import addnodes +from sphinx.application import Sphinx +from sphinx.builders import Builder +from sphinx.config import Config +from sphinx.errors import NoUri +from sphinx.locale import __ +from sphinx.util import logging +from sphinx.util import progress_message +from sphinx.util.console import darkgreen # type: ignore +from sphinx.util.nodes import inline_all_toctrees +from sphinx.util.osutil import make_filename_from_project +from sphinx.writers.manpage import ManualPageWriter, ManualPageTranslator + + +logger = logging.getLogger(__name__) + + +class ManualPageBuilder(Builder): + """ + Builds groff output in manual page format. + """ + name = 'man' + format = 'man' + epilog = __('The manual pages are in %(outdir)s.') + + default_translator_class = ManualPageTranslator + supported_image_types = [] # type: List[str] + + def init(self) -> None: + if not self.config.man_pages: + logger.warning(__('no "man_pages" config value found; no manual pages ' + 'will be written')) + + def get_outdated_docs(self) -> Union[str, List[str]]: + return 'all manpages' # for now + + def get_target_uri(self, docname: str, typ: str = None) -> str: + if typ == 'token': + return '' + raise NoUri(docname, typ) + + @progress_message(__('writing')) + def write(self, *ignored: Any) -> None: + docwriter = ManualPageWriter(self) + docsettings = OptionParser( + defaults=self.env.settings, + components=(docwriter,), + read_config_files=True).get_default_values() # type: Any + + for info in self.config.man_pages: + docname, name, description, authors, section = info + if docname not in self.env.all_docs: + logger.warning(__('"man_pages" config value references unknown ' + 'document %s'), docname) + continue + if isinstance(authors, str): + if authors: + authors = [authors] + else: + authors = [] + + docsettings.title = name + docsettings.subtitle = description + docsettings.authors = authors + docsettings.section = section + + targetname = '%s.%s' % (name, section) + logger.info(darkgreen(targetname) + ' { ', nonl=True) + destination = FileOutput( + destination_path=path.join(self.outdir, targetname), + encoding='utf-8') + + tree = self.env.get_doctree(docname) + docnames = set() # type: Set[str] + largetree = inline_all_toctrees(self, docnames, docname, tree, + darkgreen, [docname]) + largetree.settings = docsettings + logger.info('} ', nonl=True) + self.env.resolve_references(largetree, docname, self) + # remove pending_xref nodes + for pendingnode in largetree.traverse(addnodes.pending_xref): + pendingnode.replace_self(pendingnode.children) + + docwriter.write(largetree, destination) + + def finish(self) -> None: + pass + + +def default_man_pages(config: Config) -> List[Tuple[str, str, str, List[str], int]]: + """ Better default man_pages settings. """ + filename = make_filename_from_project(config.project) + return [(config.master_doc, filename, '%s %s' % (config.project, config.release), + [config.author], 1)] + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_builder(ManualPageBuilder) + + app.add_config_value('man_pages', default_man_pages, None) + app.add_config_value('man_show_urls', False, None) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/builders/qthelp.py b/sphinx/sphinx/builders/qthelp.py new file mode 100644 index 0000000..a4e73de --- /dev/null +++ b/sphinx/sphinx/builders/qthelp.py @@ -0,0 +1,39 @@ +""" + sphinx.builders.qthelp + ~~~~~~~~~~~~~~~~~~~~~~ + + Build input files for the Qt collection generator. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import warnings +from typing import Any, Dict + +from sphinxcontrib.qthelp import QtHelpBuilder, render_file + +import sphinx +from sphinx.application import Sphinx +from sphinx.deprecation import RemovedInSphinx40Warning, deprecated_alias + + +deprecated_alias('sphinx.builders.qthelp', + { + 'render_file': render_file, + 'QtHelpBuilder': QtHelpBuilder, + }, + RemovedInSphinx40Warning) + + +def setup(app: Sphinx) -> Dict[str, Any]: + warnings.warn('sphinx.builders.qthelp has been moved to sphinxcontrib-qthelp.', + RemovedInSphinx40Warning) + + app.setup_extension('sphinxcontrib.qthelp') + + return { + 'version': sphinx.__display_version__, + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/builders/singlehtml.py b/sphinx/sphinx/builders/singlehtml.py new file mode 100644 index 0000000..b145109 --- /dev/null +++ b/sphinx/sphinx/builders/singlehtml.py @@ -0,0 +1,209 @@ +""" + sphinx.builders.singlehtml + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Single HTML builders. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from os import path +from typing import Any, Dict, List, Tuple, Union + +from docutils import nodes +from docutils.nodes import Node + +from sphinx.application import Sphinx +from sphinx.builders.html import StandaloneHTMLBuilder +from sphinx.deprecation import RemovedInSphinx40Warning, deprecated_alias +from sphinx.environment.adapters.toctree import TocTree +from sphinx.locale import __ +from sphinx.util import logging +from sphinx.util import progress_message +from sphinx.util.console import darkgreen # type: ignore +from sphinx.util.nodes import inline_all_toctrees + +logger = logging.getLogger(__name__) + + +class SingleFileHTMLBuilder(StandaloneHTMLBuilder): + """ + A StandaloneHTMLBuilder subclass that puts the whole document tree on one + HTML page. + """ + name = 'singlehtml' + epilog = __('The HTML page is in %(outdir)s.') + + copysource = False + + def get_outdated_docs(self) -> Union[str, List[str]]: # type: ignore + return 'all documents' + + def get_target_uri(self, docname: str, typ: str = None) -> str: + if docname in self.env.all_docs: + # all references are on the same page... + return self.config.master_doc + self.out_suffix + \ + '#document-' + docname + else: + # chances are this is a html_additional_page + return docname + self.out_suffix + + def get_relative_uri(self, from_: str, to: str, typ: str = None) -> str: + # ignore source + return self.get_target_uri(to, typ) + + def fix_refuris(self, tree: Node) -> None: + # fix refuris with double anchor + fname = self.config.master_doc + self.out_suffix + for refnode in tree.traverse(nodes.reference): + if 'refuri' not in refnode: + continue + refuri = refnode['refuri'] + hashindex = refuri.find('#') + if hashindex < 0: + continue + hashindex = refuri.find('#', hashindex + 1) + if hashindex >= 0: + refnode['refuri'] = fname + refuri[hashindex:] + + def _get_local_toctree(self, docname: str, collapse: bool = True, **kwargs: Any) -> str: + if 'includehidden' not in kwargs: + kwargs['includehidden'] = False + toctree = TocTree(self.env).get_toctree_for(docname, self, collapse, **kwargs) + if toctree is not None: + self.fix_refuris(toctree) + return self.render_partial(toctree)['fragment'] + + def assemble_doctree(self) -> nodes.document: + master = self.config.master_doc + tree = self.env.get_doctree(master) + tree = inline_all_toctrees(self, set(), master, tree, darkgreen, [master]) + tree['docname'] = master + self.env.resolve_references(tree, master, self) + self.fix_refuris(tree) + return tree + + def assemble_toc_secnumbers(self) -> Dict[str, Dict[str, Tuple[int, ...]]]: + # Assemble toc_secnumbers to resolve section numbers on SingleHTML. + # Merge all secnumbers to single secnumber. + # + # Note: current Sphinx has refid confliction in singlehtml mode. + # To avoid the problem, it replaces key of secnumbers to + # tuple of docname and refid. + # + # There are related codes in inline_all_toctres() and + # HTMLTranslter#add_secnumber(). + new_secnumbers = {} # type: Dict[str, Tuple[int, ...]] + for docname, secnums in self.env.toc_secnumbers.items(): + for id, secnum in secnums.items(): + alias = "%s/%s" % (docname, id) + new_secnumbers[alias] = secnum + + return {self.config.master_doc: new_secnumbers} + + def assemble_toc_fignumbers(self) -> Dict[str, Dict[str, Dict[str, Tuple[int, ...]]]]: + # Assemble toc_fignumbers to resolve figure numbers on SingleHTML. + # Merge all fignumbers to single fignumber. + # + # Note: current Sphinx has refid confliction in singlehtml mode. + # To avoid the problem, it replaces key of secnumbers to + # tuple of docname and refid. + # + # There are related codes in inline_all_toctres() and + # HTMLTranslter#add_fignumber(). + new_fignumbers = {} # type: Dict[str, Dict[str, Tuple[int, ...]]] + # {'foo': {'figure': {'id2': (2,), 'id1': (1,)}}, 'bar': {'figure': {'id1': (3,)}}} + for docname, fignumlist in self.env.toc_fignumbers.items(): + for figtype, fignums in fignumlist.items(): + alias = "%s/%s" % (docname, figtype) + new_fignumbers.setdefault(alias, {}) + for id, fignum in fignums.items(): + new_fignumbers[alias][id] = fignum + + return {self.config.master_doc: new_fignumbers} + + def get_doc_context(self, docname: str, body: str, metatags: str) -> Dict: + # no relation links... + toctree = TocTree(self.env).get_toctree_for(self.config.master_doc, self, False) + # if there is no toctree, toc is None + if toctree: + self.fix_refuris(toctree) + toc = self.render_partial(toctree)['fragment'] + display_toc = True + else: + toc = '' + display_toc = False + return { + 'parents': [], + 'prev': None, + 'next': None, + 'docstitle': None, + 'title': self.config.html_title, + 'meta': None, + 'body': body, + 'metatags': metatags, + 'rellinks': [], + 'sourcename': '', + 'toc': toc, + 'display_toc': display_toc, + } + + def write(self, *ignored: Any) -> None: + docnames = self.env.all_docs + + with progress_message(__('preparing documents')): + self.prepare_writing(docnames) # type: ignore + + with progress_message(__('assembling single document')): + doctree = self.assemble_doctree() + self.env.toc_secnumbers = self.assemble_toc_secnumbers() + self.env.toc_fignumbers = self.assemble_toc_fignumbers() + + with progress_message(__('writing')): + self.write_doc_serialized(self.config.master_doc, doctree) + self.write_doc(self.config.master_doc, doctree) + + def finish(self) -> None: + self.write_additional_files() + self.copy_image_files() + self.copy_download_files() + self.copy_static_files() + self.copy_extra_files() + self.write_buildinfo() + self.dump_inventory() + + @progress_message(__('writing additional files')) + def write_additional_files(self) -> None: + # no indices or search pages are supported + + # additional pages from conf.py + for pagename, template in self.config.html_additional_pages.items(): + logger.info(' ' + pagename, nonl=True) + self.handle_page(pagename, {}, template) + + if self.config.html_use_opensearch: + logger.info(' opensearch', nonl=True) + fn = path.join(self.outdir, '_static', 'opensearch.xml') + self.handle_page('opensearch', {}, 'opensearch.xml', outfilename=fn) + + +# for compatibility +deprecated_alias('sphinx.builders.html', + { + 'SingleFileHTMLBuilder': SingleFileHTMLBuilder, + }, + RemovedInSphinx40Warning) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.setup_extension('sphinx.builders.html') + + app.add_builder(SingleFileHTMLBuilder) + app.add_config_value('singlehtml_sidebars', lambda self: self.html_sidebars, 'html') + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/builders/texinfo.py b/sphinx/sphinx/builders/texinfo.py new file mode 100644 index 0000000..5e2e6e2 --- /dev/null +++ b/sphinx/sphinx/builders/texinfo.py @@ -0,0 +1,220 @@ +""" + sphinx.builders.texinfo + ~~~~~~~~~~~~~~~~~~~~~~~ + + Texinfo builder. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import os +from os import path +from typing import Any, Dict, Iterable, List, Tuple, Union + +from docutils import nodes +from docutils.frontend import OptionParser +from docutils.io import FileOutput + +from sphinx import addnodes +from sphinx import package_dir +from sphinx.application import Sphinx +from sphinx.builders import Builder +from sphinx.config import Config +from sphinx.environment.adapters.asset import ImageAdapter +from sphinx.errors import NoUri +from sphinx.locale import _, __ +from sphinx.util import logging +from sphinx.util import progress_message, status_iterator +from sphinx.util.console import darkgreen # type: ignore +from sphinx.util.docutils import new_document +from sphinx.util.fileutil import copy_asset_file +from sphinx.util.nodes import inline_all_toctrees +from sphinx.util.osutil import SEP, ensuredir, make_filename_from_project +from sphinx.writers.texinfo import TexinfoWriter, TexinfoTranslator + + +logger = logging.getLogger(__name__) +template_dir = os.path.join(package_dir, 'templates', 'texinfo') + + +class TexinfoBuilder(Builder): + """ + Builds Texinfo output to create Info documentation. + """ + name = 'texinfo' + format = 'texinfo' + epilog = __('The Texinfo files are in %(outdir)s.') + if os.name == 'posix': + epilog += __("\nRun 'make' in that directory to run these through " + "makeinfo\n" + "(use 'make info' here to do that automatically).") + + supported_image_types = ['image/png', 'image/jpeg', + 'image/gif'] + default_translator_class = TexinfoTranslator + + def init(self) -> None: + self.docnames = [] # type: Iterable[str] + self.document_data = [] # type: List[Tuple[str, str, str, str, str, str, str, bool]] + + def get_outdated_docs(self) -> Union[str, List[str]]: + return 'all documents' # for now + + def get_target_uri(self, docname: str, typ: str = None) -> str: + if docname not in self.docnames: + raise NoUri(docname, typ) + else: + return '%' + docname + + def get_relative_uri(self, from_: str, to: str, typ: str = None) -> str: + # ignore source path + return self.get_target_uri(to, typ) + + def init_document_data(self) -> None: + preliminary_document_data = [list(x) for x in self.config.texinfo_documents] + if not preliminary_document_data: + logger.warning(__('no "texinfo_documents" config value found; no documents ' + 'will be written')) + return + # assign subdirs to titles + self.titles = [] # type: List[Tuple[str, str]] + for entry in preliminary_document_data: + docname = entry[0] + if docname not in self.env.all_docs: + logger.warning(__('"texinfo_documents" config value references unknown ' + 'document %s'), docname) + continue + self.document_data.append(entry) # type: ignore + if docname.endswith(SEP + 'index'): + docname = docname[:-5] + self.titles.append((docname, entry[2])) + + def write(self, *ignored: Any) -> None: + self.init_document_data() + for entry in self.document_data: + docname, targetname, title, author = entry[:4] + targetname += '.texi' + direntry = description = category = '' + if len(entry) > 6: + direntry, description, category = entry[4:7] + toctree_only = False + if len(entry) > 7: + toctree_only = entry[7] + destination = FileOutput( + destination_path=path.join(self.outdir, targetname), + encoding='utf-8') + with progress_message(__("processing %s") % targetname): + appendices = self.config.texinfo_appendices or [] + doctree = self.assemble_doctree(docname, toctree_only, appendices=appendices) + + with progress_message(__("writing")): + self.post_process_images(doctree) + docwriter = TexinfoWriter(self) + settings = OptionParser( + defaults=self.env.settings, + components=(docwriter,), + read_config_files=True).get_default_values() # type: Any + settings.author = author + settings.title = title + settings.texinfo_filename = targetname[:-5] + '.info' + settings.texinfo_elements = self.config.texinfo_elements + settings.texinfo_dir_entry = direntry or '' + settings.texinfo_dir_category = category or '' + settings.texinfo_dir_description = description or '' + settings.docname = docname + doctree.settings = settings + docwriter.write(doctree, destination) + self.copy_image_files(targetname[:-5]) + + def assemble_doctree(self, indexfile: str, toctree_only: bool, appendices: List[str]) -> nodes.document: # NOQA + self.docnames = set([indexfile] + appendices) + logger.info(darkgreen(indexfile) + " ", nonl=True) + tree = self.env.get_doctree(indexfile) + tree['docname'] = indexfile + if toctree_only: + # extract toctree nodes from the tree and put them in a + # fresh document + new_tree = new_document('<texinfo output>') + new_sect = nodes.section() + new_sect += nodes.title('<Set title in conf.py>', + '<Set title in conf.py>') + new_tree += new_sect + for node in tree.traverse(addnodes.toctree): + new_sect += node + tree = new_tree + largetree = inline_all_toctrees(self, self.docnames, indexfile, tree, + darkgreen, [indexfile]) + largetree['docname'] = indexfile + for docname in appendices: + appendix = self.env.get_doctree(docname) + appendix['docname'] = docname + largetree.append(appendix) + logger.info('') + logger.info(__("resolving references...")) + self.env.resolve_references(largetree, indexfile, self) + # TODO: add support for external :ref:s + for pendingnode in largetree.traverse(addnodes.pending_xref): + docname = pendingnode['refdocname'] + sectname = pendingnode['refsectname'] + newnodes = [nodes.emphasis(sectname, sectname)] # type: List[nodes.Node] + for subdir, title in self.titles: + if docname.startswith(subdir): + newnodes.append(nodes.Text(_(' (in '), _(' (in '))) + newnodes.append(nodes.emphasis(title, title)) + newnodes.append(nodes.Text(')', ')')) + break + else: + pass + pendingnode.replace_self(newnodes) + return largetree + + def finish(self) -> None: + self.copy_support_files() + + def copy_image_files(self, targetname: str) -> None: + if self.images: + stringify_func = ImageAdapter(self.app.env).get_original_image_uri + for src in status_iterator(self.images, __('copying images... '), "brown", + len(self.images), self.app.verbosity, + stringify_func=stringify_func): + dest = self.images[src] + try: + imagedir = path.join(self.outdir, targetname + '-figures') + ensuredir(imagedir) + copy_asset_file(path.join(self.srcdir, dest), imagedir) + except Exception as err: + logger.warning(__('cannot copy image file %r: %s'), + path.join(self.srcdir, src), err) + + def copy_support_files(self) -> None: + try: + with progress_message(__('copying Texinfo support files')): + logger.info('Makefile ', nonl=True) + copy_asset_file(os.path.join(template_dir, 'Makefile'), self.outdir) + except OSError as err: + logger.warning(__("error writing file Makefile: %s"), err) + + +def default_texinfo_documents(config: Config) -> List[Tuple[str, str, str, str, str, str, str]]: # NOQA + """ Better default texinfo_documents settings. """ + filename = make_filename_from_project(config.project) + return [(config.master_doc, filename, config.project, config.author, filename, + 'One line description of project', 'Miscellaneous')] + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_builder(TexinfoBuilder) + + app.add_config_value('texinfo_documents', default_texinfo_documents, None) + app.add_config_value('texinfo_appendices', [], None) + app.add_config_value('texinfo_elements', {}, None) + app.add_config_value('texinfo_domain_indices', True, None, [list]) + app.add_config_value('texinfo_show_urls', 'footnote', None) + app.add_config_value('texinfo_no_detailmenu', False, None) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/builders/text.py b/sphinx/sphinx/builders/text.py new file mode 100644 index 0000000..89b041a --- /dev/null +++ b/sphinx/sphinx/builders/text.py @@ -0,0 +1,95 @@ +""" + sphinx.builders.text + ~~~~~~~~~~~~~~~~~~~~ + + Plain-text Sphinx builder. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from os import path +from typing import Any, Dict, Iterator, Set, Tuple + +from docutils.io import StringOutput +from docutils.nodes import Node + +from sphinx.application import Sphinx +from sphinx.builders import Builder +from sphinx.locale import __ +from sphinx.util import logging +from sphinx.util.osutil import ensuredir, os_path +from sphinx.writers.text import TextWriter, TextTranslator + +logger = logging.getLogger(__name__) + + +class TextBuilder(Builder): + name = 'text' + format = 'text' + epilog = __('The text files are in %(outdir)s.') + + out_suffix = '.txt' + allow_parallel = True + default_translator_class = TextTranslator + + current_docname = None # type: str + + def init(self) -> None: + # section numbers for headings in the currently visited document + self.secnumbers = {} # type: Dict[str, Tuple[int, ...]] + + def get_outdated_docs(self) -> Iterator[str]: + for docname in self.env.found_docs: + if docname not in self.env.all_docs: + yield docname + continue + targetname = path.join(self.outdir, docname + self.out_suffix) + try: + targetmtime = path.getmtime(targetname) + except Exception: + targetmtime = 0 + try: + srcmtime = path.getmtime(self.env.doc2path(docname)) + if srcmtime > targetmtime: + yield docname + except OSError: + # source doesn't exist anymore + pass + + def get_target_uri(self, docname: str, typ: str = None) -> str: + return '' + + def prepare_writing(self, docnames: Set[str]) -> None: + self.writer = TextWriter(self) + + def write_doc(self, docname: str, doctree: Node) -> None: + self.current_docname = docname + self.secnumbers = self.env.toc_secnumbers.get(docname, {}) + destination = StringOutput(encoding='utf-8') + self.writer.write(doctree, destination) + outfilename = path.join(self.outdir, os_path(docname) + self.out_suffix) + ensuredir(path.dirname(outfilename)) + try: + with open(outfilename, 'w', encoding='utf-8') as f: + f.write(self.writer.output) + except OSError as err: + logger.warning(__("error writing file %s: %s"), outfilename, err) + + def finish(self) -> None: + pass + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_builder(TextBuilder) + + app.add_config_value('text_sectionchars', '*=-~"+`', 'env') + app.add_config_value('text_newlines', 'unix', 'env') + app.add_config_value('text_add_secnumbers', True, 'env') + app.add_config_value('text_secnumber_suffix', '. ', 'env') + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/builders/xml.py b/sphinx/sphinx/builders/xml.py new file mode 100644 index 0000000..81d729d --- /dev/null +++ b/sphinx/sphinx/builders/xml.py @@ -0,0 +1,125 @@ +""" + sphinx.builders.xml + ~~~~~~~~~~~~~~~~~~~ + + Docutils-native XML and pseudo-XML builders. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from os import path +from typing import Any, Dict, Iterator, Set, Union + +from docutils import nodes +from docutils.io import StringOutput +from docutils.nodes import Node +from docutils.writers.docutils_xml import XMLTranslator + +from sphinx.application import Sphinx +from sphinx.builders import Builder +from sphinx.locale import __ +from sphinx.util import logging +from sphinx.util.osutil import ensuredir, os_path +from sphinx.writers.xml import XMLWriter, PseudoXMLWriter + +if False: + # For type annotation + from typing import Type # for python3.5.1 + + +logger = logging.getLogger(__name__) + + +class XMLBuilder(Builder): + """ + Builds Docutils-native XML. + """ + name = 'xml' + format = 'xml' + epilog = __('The XML files are in %(outdir)s.') + + out_suffix = '.xml' + allow_parallel = True + + _writer_class = XMLWriter # type: Union[Type[XMLWriter], Type[PseudoXMLWriter]] + default_translator_class = XMLTranslator + + def init(self) -> None: + pass + + def get_outdated_docs(self) -> Iterator[str]: + for docname in self.env.found_docs: + if docname not in self.env.all_docs: + yield docname + continue + targetname = path.join(self.outdir, docname + self.out_suffix) + try: + targetmtime = path.getmtime(targetname) + except Exception: + targetmtime = 0 + try: + srcmtime = path.getmtime(self.env.doc2path(docname)) + if srcmtime > targetmtime: + yield docname + except OSError: + # source doesn't exist anymore + pass + + def get_target_uri(self, docname: str, typ: str = None) -> str: + return docname + + def prepare_writing(self, docnames: Set[str]) -> None: + self.writer = self._writer_class(self) + + def write_doc(self, docname: str, doctree: Node) -> None: + # work around multiple string % tuple issues in docutils; + # replace tuples in attribute values with lists + doctree = doctree.deepcopy() + for node in doctree.traverse(nodes.Element): + for att, value in node.attributes.items(): + if isinstance(value, tuple): + node.attributes[att] = list(value) + value = node.attributes[att] + if isinstance(value, list): + for i, val in enumerate(value): + if isinstance(val, tuple): + value[i] = list(val) + destination = StringOutput(encoding='utf-8') + self.writer.write(doctree, destination) + outfilename = path.join(self.outdir, os_path(docname) + self.out_suffix) + ensuredir(path.dirname(outfilename)) + try: + with open(outfilename, 'w', encoding='utf-8') as f: + f.write(self.writer.output) + except OSError as err: + logger.warning(__("error writing file %s: %s"), outfilename, err) + + def finish(self) -> None: + pass + + +class PseudoXMLBuilder(XMLBuilder): + """ + Builds pseudo-XML for display purposes. + """ + name = 'pseudoxml' + format = 'pseudoxml' + epilog = __('The pseudo-XML files are in %(outdir)s.') + + out_suffix = '.pseudoxml' + + _writer_class = PseudoXMLWriter + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_builder(XMLBuilder) + app.add_builder(PseudoXMLBuilder) + + app.add_config_value('xml_pretty', True, 'env') + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/cmd/__init__.py b/sphinx/sphinx/cmd/__init__.py new file mode 100644 index 0000000..33fbf74 --- /dev/null +++ b/sphinx/sphinx/cmd/__init__.py @@ -0,0 +1,9 @@ +""" + sphinx.cmd + ~~~~~~~~~~ + + Modules for command line executables. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" diff --git a/sphinx/sphinx/cmd/build.py b/sphinx/sphinx/cmd/build.py new file mode 100644 index 0000000..cf50f17 --- /dev/null +++ b/sphinx/sphinx/cmd/build.py @@ -0,0 +1,298 @@ +""" + sphinx.cmd.build + ~~~~~~~~~~~~~~~~ + + Build documentation from a provided source. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import argparse +import bdb +import locale +import multiprocessing +import os +import pdb +import sys +import traceback +from typing import Any, IO, List + +from docutils.utils import SystemMessage + +import sphinx.locale +from sphinx import __display_version__, package_dir +from sphinx.application import Sphinx +from sphinx.errors import SphinxError +from sphinx.locale import __ +from sphinx.util import Tee, format_exception_cut_frames, save_traceback +from sphinx.util.console import red, nocolor, color_terminal, terminal_safe # type: ignore +from sphinx.util.docutils import docutils_namespace, patch_docutils + + +def handle_exception(app: Sphinx, args: Any, exception: BaseException, stderr: IO = sys.stderr) -> None: # NOQA + if isinstance(exception, bdb.BdbQuit): + return + + if args.pdb: + print(red(__('Exception occurred while building, starting debugger:')), + file=stderr) + traceback.print_exc() + pdb.post_mortem(sys.exc_info()[2]) + else: + print(file=stderr) + if args.verbosity or args.traceback: + traceback.print_exc(None, stderr) + print(file=stderr) + if isinstance(exception, KeyboardInterrupt): + print(__('Interrupted!'), file=stderr) + elif isinstance(exception, SystemMessage): + print(red(__('reST markup error:')), file=stderr) + print(terminal_safe(exception.args[0]), file=stderr) + elif isinstance(exception, SphinxError): + print(red('%s:' % exception.category), file=stderr) + print(str(exception), file=stderr) + elif isinstance(exception, UnicodeError): + print(red(__('Encoding error:')), file=stderr) + print(terminal_safe(str(exception)), file=stderr) + tbpath = save_traceback(app) + print(red(__('The full traceback has been saved in %s, if you want ' + 'to report the issue to the developers.') % tbpath), + file=stderr) + elif isinstance(exception, RuntimeError) and 'recursion depth' in str(exception): + print(red(__('Recursion error:')), file=stderr) + print(terminal_safe(str(exception)), file=stderr) + print(file=stderr) + print(__('This can happen with very large or deeply nested source ' + 'files. You can carefully increase the default Python ' + 'recursion limit of 1000 in conf.py with e.g.:'), file=stderr) + print(' import sys; sys.setrecursionlimit(1500)', file=stderr) + else: + print(red(__('Exception occurred:')), file=stderr) + print(format_exception_cut_frames().rstrip(), file=stderr) + tbpath = save_traceback(app) + print(red(__('The full traceback has been saved in %s, if you ' + 'want to report the issue to the developers.') % tbpath), + file=stderr) + print(__('Please also report this if it was a user error, so ' + 'that a better error message can be provided next time.'), + file=stderr) + print(__('A bug report can be filed in the tracker at ' + '<https://github.com/sphinx-doc/sphinx/issues>. Thanks!'), + file=stderr) + + +def jobs_argument(value: str) -> int: + """ + Special type to handle 'auto' flags passed to 'sphinx-build' via -j flag. Can + be expanded to handle other special scaling requests, such as setting job count + to cpu_count. + """ + if value == 'auto': + return multiprocessing.cpu_count() + else: + jobs = int(value) + if jobs <= 0: + raise argparse.ArgumentTypeError(__('job number should be a positive number')) + else: + return jobs + + +def get_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + usage='%(prog)s [OPTIONS] SOURCEDIR OUTPUTDIR [FILENAMES...]', + epilog=__('For more information, visit <http://sphinx-doc.org/>.'), + description=__(""" +Generate documentation from source files. + +sphinx-build generates documentation from the files in SOURCEDIR and places it +in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration +settings. The 'sphinx-quickstart' tool may be used to generate template files, +including 'conf.py' + +sphinx-build can create documentation in different formats. A format is +selected by specifying the builder name on the command line; it defaults to +HTML. Builders can also perform other tasks related to documentation +processing. + +By default, everything that is outdated is built. Output only for selected +files can be built by specifying individual filenames. +""")) + + parser.add_argument('--version', action='version', dest='show_version', + version='%%(prog)s %s' % __display_version__) + + parser.add_argument('sourcedir', + help=__('path to documentation source files')) + parser.add_argument('outputdir', + help=__('path to output directory')) + parser.add_argument('filenames', nargs='*', + help=__('a list of specific files to rebuild. Ignored ' + 'if -a is specified')) + + group = parser.add_argument_group(__('general options')) + group.add_argument('-b', metavar='BUILDER', dest='builder', + default='html', + help=__('builder to use (default: html)')) + group.add_argument('-a', action='store_true', dest='force_all', + help=__('write all files (default: only write new and ' + 'changed files)')) + group.add_argument('-E', action='store_true', dest='freshenv', + help=__('don\'t use a saved environment, always read ' + 'all files')) + group.add_argument('-d', metavar='PATH', dest='doctreedir', + help=__('path for the cached environment and doctree ' + 'files (default: OUTPUTDIR/.doctrees)')) + group.add_argument('-j', metavar='N', default=1, type=jobs_argument, dest='jobs', + help=__('build in parallel with N processes where ' + 'possible (special value "auto" will set N to cpu-count)')) + group = parser.add_argument_group('build configuration options') + group.add_argument('-c', metavar='PATH', dest='confdir', + help=__('path where configuration file (conf.py) is ' + 'located (default: same as SOURCEDIR)')) + group.add_argument('-C', action='store_true', dest='noconfig', + help=__('use no config file at all, only -D options')) + group.add_argument('-D', metavar='setting=value', action='append', + dest='define', default=[], + help=__('override a setting in configuration file')) + group.add_argument('-A', metavar='name=value', action='append', + dest='htmldefine', default=[], + help=__('pass a value into HTML templates')) + group.add_argument('-t', metavar='TAG', action='append', + dest='tags', default=[], + help=__('define tag: include "only" blocks with TAG')) + group.add_argument('-n', action='store_true', dest='nitpicky', + help=__('nit-picky mode, warn about all missing ' + 'references')) + + group = parser.add_argument_group(__('console output options')) + group.add_argument('-v', action='count', dest='verbosity', default=0, + help=__('increase verbosity (can be repeated)')) + group.add_argument('-q', action='store_true', dest='quiet', + help=__('no output on stdout, just warnings on stderr')) + group.add_argument('-Q', action='store_true', dest='really_quiet', + help=__('no output at all, not even warnings')) + group.add_argument('--color', action='store_const', const='yes', + default='auto', + help=__('do emit colored output (default: auto-detect)')) + group.add_argument('-N', '--no-color', dest='color', action='store_const', + const='no', + help=__('do not emit colored output (default: ' + 'auto-detect)')) + group.add_argument('-w', metavar='FILE', dest='warnfile', + help=__('write warnings (and errors) to given file')) + group.add_argument('-W', action='store_true', dest='warningiserror', + help=__('turn warnings into errors')) + group.add_argument('--keep-going', action='store_true', dest='keep_going', + help=__("with -W, keep going when getting warnings")) + group.add_argument('-T', action='store_true', dest='traceback', + help=__('show full traceback on exception')) + group.add_argument('-P', action='store_true', dest='pdb', + help=__('run Pdb on exception')) + + return parser + + +def make_main(argv: List[str] = sys.argv[1:]) -> int: + """Sphinx build "make mode" entry.""" + from sphinx.cmd import make_mode + return make_mode.run_make_mode(argv[1:]) + + +def build_main(argv: List[str] = sys.argv[1:]) -> int: + """Sphinx build "main" command-line entry.""" + + parser = get_parser() + args = parser.parse_args(argv) + + if args.noconfig: + args.confdir = None + elif not args.confdir: + args.confdir = args.sourcedir + + if not args.doctreedir: + args.doctreedir = os.path.join(args.outputdir, '.doctrees') + + # handle remaining filename arguments + filenames = args.filenames + missing_files = [] + for filename in filenames: + if not os.path.isfile(filename): + missing_files.append(filename) + if missing_files: + parser.error(__('cannot find files %r') % missing_files) + + if args.force_all and filenames: + parser.error(__('cannot combine -a option and filenames')) + + if args.color == 'no' or (args.color == 'auto' and not color_terminal()): + nocolor() + + status = sys.stdout + warning = sys.stderr + error = sys.stderr + + if args.quiet: + status = None + + if args.really_quiet: + status = warning = None + + if warning and args.warnfile: + try: + warnfp = open(args.warnfile, 'w') + except Exception as exc: + parser.error(__('cannot open warning file %r: %s') % ( + args.warnfile, exc)) + warning = Tee(warning, warnfp) # type: ignore + error = warning + + confoverrides = {} + for val in args.define: + try: + key, val = val.split('=', 1) + except ValueError: + parser.error(__('-D option argument must be in the form name=value')) + confoverrides[key] = val + + for val in args.htmldefine: + try: + key, val = val.split('=') + except ValueError: + parser.error(__('-A option argument must be in the form name=value')) + try: + val = int(val) + except ValueError: + pass + confoverrides['html_context.%s' % key] = val + + if args.nitpicky: + confoverrides['nitpicky'] = True + + app = None + try: + confdir = args.confdir or args.sourcedir + with patch_docutils(confdir), docutils_namespace(): + app = Sphinx(args.sourcedir, args.confdir, args.outputdir, + args.doctreedir, args.builder, confoverrides, status, + warning, args.freshenv, args.warningiserror, + args.tags, args.verbosity, args.jobs, args.keep_going) + app.build(args.force_all, filenames) + return app.statuscode + except (Exception, KeyboardInterrupt) as exc: + handle_exception(app, args, exc, error) + return 2 + + +def main(argv: List[str] = sys.argv[1:]) -> int: + sphinx.locale.setlocale(locale.LC_ALL, '') + sphinx.locale.init_console(os.path.join(package_dir, 'locale'), 'sphinx') + + if argv[:1] == ['-M']: + return make_main(argv) + else: + return build_main(argv) + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/sphinx/sphinx/cmd/make_mode.py b/sphinx/sphinx/cmd/make_mode.py new file mode 100644 index 0000000..aff2ea7 --- /dev/null +++ b/sphinx/sphinx/cmd/make_mode.py @@ -0,0 +1,167 @@ +""" + sphinx.cmd.make_mode + ~~~~~~~~~~~~~~~~~~~~ + + sphinx-build -M command-line handling. + + This replaces the old, platform-dependent and once-generated content + of Makefile / make.bat. + + This is in its own module so that importing it is fast. It should not + import the main Sphinx modules (like sphinx.applications, sphinx.builders). + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import os +import subprocess +import sys +from os import path +from typing import List + +import sphinx +from sphinx.cmd.build import build_main +from sphinx.util.console import color_terminal, nocolor, bold, blue # type: ignore +from sphinx.util.osutil import cd, rmtree + + +BUILDERS = [ + ("", "html", "to make standalone HTML files"), + ("", "dirhtml", "to make HTML files named index.html in directories"), + ("", "singlehtml", "to make a single large HTML file"), + ("", "pickle", "to make pickle files"), + ("", "json", "to make JSON files"), + ("", "htmlhelp", "to make HTML files and an HTML help project"), + ("", "qthelp", "to make HTML files and a qthelp project"), + ("", "devhelp", "to make HTML files and a Devhelp project"), + ("", "epub", "to make an epub"), + ("", "latex", "to make LaTeX files, you can set PAPER=a4 or PAPER=letter"), + ("posix", "latexpdf", "to make LaTeX and PDF files (default pdflatex)"), + ("posix", "latexpdfja", "to make LaTeX files and run them through platex/dvipdfmx"), + ("", "text", "to make text files"), + ("", "man", "to make manual pages"), + ("", "texinfo", "to make Texinfo files"), + ("posix", "info", "to make Texinfo files and run them through makeinfo"), + ("", "gettext", "to make PO message catalogs"), + ("", "changes", "to make an overview of all changed/added/deprecated items"), + ("", "xml", "to make Docutils-native XML files"), + ("", "pseudoxml", "to make pseudoxml-XML files for display purposes"), + ("", "linkcheck", "to check all external links for integrity"), + ("", "doctest", "to run all doctests embedded in the documentation " + "(if enabled)"), + ("", "coverage", "to run coverage check of the documentation (if enabled)"), +] + + +class Make: + def __init__(self, srcdir: str, builddir: str, opts: List[str]) -> None: + self.srcdir = srcdir + self.builddir = builddir + self.opts = opts + self.makecmd = os.environ.get('MAKE', 'make') # refer $MAKE to determine make command + + def builddir_join(self, *comps: str) -> str: + return path.join(self.builddir, *comps) + + def build_clean(self) -> int: + srcdir = path.abspath(self.srcdir) + builddir = path.abspath(self.builddir) + if not path.exists(self.builddir): + return 0 + elif not path.isdir(self.builddir): + print("Error: %r is not a directory!" % self.builddir) + return 1 + elif srcdir == builddir: + print("Error: %r is same as source directory!" % self.builddir) + return 1 + elif path.commonpath([srcdir, builddir]) == builddir: + print("Error: %r directory contains source directory!" % self.builddir) + return 1 + print("Removing everything under %r..." % self.builddir) + for item in os.listdir(self.builddir): + rmtree(self.builddir_join(item)) + return 0 + + def build_help(self) -> None: + if not color_terminal(): + nocolor() + + print(bold("Sphinx v%s" % sphinx.__display_version__)) + print("Please use `make %s' where %s is one of" % ((blue('target'),) * 2)) + for osname, bname, description in BUILDERS: + if not osname or os.name == osname: + print(' %s %s' % (blue(bname.ljust(10)), description)) + + def build_latexpdf(self) -> int: + if self.run_generic_build('latex') > 0: + return 1 + + if sys.platform == 'win32': + makecmd = os.environ.get('MAKE', 'make.bat') + else: + makecmd = self.makecmd + try: + with cd(self.builddir_join('latex')): + return subprocess.call([makecmd, 'all-pdf']) + except OSError: + print('Error: Failed to run: %s' % makecmd) + return 1 + + def build_latexpdfja(self) -> int: + if self.run_generic_build('latex') > 0: + return 1 + + if sys.platform == 'win32': + makecmd = os.environ.get('MAKE', 'make.bat') + else: + makecmd = self.makecmd + try: + with cd(self.builddir_join('latex')): + return subprocess.call([makecmd, 'all-pdf']) + except OSError: + print('Error: Failed to run: %s' % makecmd) + return 1 + + def build_info(self) -> int: + if self.run_generic_build('texinfo') > 0: + return 1 + try: + with cd(self.builddir_join('texinfo')): + return subprocess.call([self.makecmd, 'info']) + except OSError: + print('Error: Failed to run: %s' % self.makecmd) + return 1 + + def build_gettext(self) -> int: + dtdir = self.builddir_join('gettext', '.doctrees') + if self.run_generic_build('gettext', doctreedir=dtdir) > 0: + return 1 + return 0 + + def run_generic_build(self, builder: str, doctreedir: str = None) -> int: + # compatibility with old Makefile + papersize = os.getenv('PAPER', '') + opts = self.opts + if papersize in ('a4', 'letter'): + opts.extend(['-D', 'latex_elements.papersize=' + papersize + 'paper']) + if doctreedir is None: + doctreedir = self.builddir_join('doctrees') + + args = ['-b', builder, + '-d', doctreedir, + self.srcdir, + self.builddir_join(builder)] + return build_main(args + opts) + + +def run_make_mode(args: List[str]) -> int: + if len(args) < 3: + print('Error: at least 3 arguments (builder, source ' + 'dir, build dir) are required.', file=sys.stderr) + return 1 + make = Make(args[1], args[2], args[3:]) + run_method = 'build_' + args[0] + if hasattr(make, run_method): + return getattr(make, run_method)() + return make.run_generic_build(args[0]) diff --git a/sphinx/sphinx/cmd/quickstart.py b/sphinx/sphinx/cmd/quickstart.py new file mode 100644 index 0000000..8f8ae58 --- /dev/null +++ b/sphinx/sphinx/cmd/quickstart.py @@ -0,0 +1,616 @@ +""" + sphinx.cmd.quickstart + ~~~~~~~~~~~~~~~~~~~~~ + + Quickly setup documentation source to work with Sphinx. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import argparse +import locale +import os +import re +import sys +import time +import warnings +from collections import OrderedDict +from os import path +from typing import Any, Callable, Dict, List, Pattern, Union + +# try to import readline, unix specific enhancement +try: + import readline + if readline.__doc__ and 'libedit' in readline.__doc__: + readline.parse_and_bind("bind ^I rl_complete") + USE_LIBEDIT = True + else: + readline.parse_and_bind("tab: complete") + USE_LIBEDIT = False +except ImportError: + USE_LIBEDIT = False + +from docutils.utils import column_width + +import sphinx.locale +from sphinx import __display_version__, package_dir +from sphinx.deprecation import RemovedInSphinx40Warning +from sphinx.locale import __ +from sphinx.util.console import ( # type: ignore + colorize, bold, red, turquoise, nocolor, color_terminal +) +from sphinx.util.osutil import ensuredir +from sphinx.util.template import SphinxRenderer + +TERM_ENCODING = getattr(sys.stdin, 'encoding', None) # RemovedInSphinx40Warning + +EXTENSIONS = OrderedDict([ + ('autodoc', __('automatically insert docstrings from modules')), + ('doctest', __('automatically test code snippets in doctest blocks')), + ('intersphinx', __('link between Sphinx documentation of different projects')), + ('todo', __('write "todo" entries that can be shown or hidden on build')), + ('coverage', __('checks for documentation coverage')), + ('imgmath', __('include math, rendered as PNG or SVG images')), + ('mathjax', __('include math, rendered in the browser by MathJax')), + ('ifconfig', __('conditional inclusion of content based on config values')), + ('viewcode', __('include links to the source code of documented Python objects')), + ('githubpages', __('create .nojekyll file to publish the document on GitHub pages')), +]) + +DEFAULTS = { + 'path': '.', + 'sep': False, + 'dot': '_', + 'language': None, + 'suffix': '.rst', + 'master': 'index', + 'makefile': True, + 'batchfile': True, +} + +PROMPT_PREFIX = '> ' + +if sys.platform == 'win32': + # On Windows, show questions as bold because of color scheme of PowerShell (refs: #5294). + COLOR_QUESTION = 'bold' +else: + COLOR_QUESTION = 'purple' + + +# function to get input from terminal -- overridden by the test suite +def term_input(prompt: str) -> str: + if sys.platform == 'win32': + # Important: On windows, readline is not enabled by default. In these + # environment, escape sequences have been broken. To avoid the + # problem, quickstart uses ``print()`` to show prompt. + print(prompt, end='') + return input('') + else: + return input(prompt) + + +class ValidationError(Exception): + """Raised for validation errors.""" + + +def is_path(x: str) -> str: + x = path.expanduser(x) + if not path.isdir(x): + raise ValidationError(__("Please enter a valid path name.")) + return x + + +def allow_empty(x: str) -> str: + return x + + +def nonempty(x: str) -> str: + if not x: + raise ValidationError(__("Please enter some text.")) + return x + + +def choice(*l: str) -> Callable[[str], str]: + def val(x: str) -> str: + if x not in l: + raise ValidationError(__('Please enter one of %s.') % ', '.join(l)) + return x + return val + + +def boolean(x: str) -> bool: + if x.upper() not in ('Y', 'YES', 'N', 'NO'): + raise ValidationError(__("Please enter either 'y' or 'n'.")) + return x.upper() in ('Y', 'YES') + + +def suffix(x: str) -> str: + if not (x[0:1] == '.' and len(x) > 1): + raise ValidationError(__("Please enter a file suffix, e.g. '.rst' or '.txt'.")) + return x + + +def ok(x: str) -> str: + return x + + +def term_decode(text: Union[bytes, str]) -> str: + warnings.warn('term_decode() is deprecated.', + RemovedInSphinx40Warning, stacklevel=2) + + if isinstance(text, str): + return text + + # Use the known encoding, if possible + if TERM_ENCODING: + return text.decode(TERM_ENCODING) + + # If ascii is safe, use it with no warning + if text.decode('ascii', 'replace').encode('ascii', 'replace') == text: + return text.decode('ascii') + + print(turquoise(__('* Note: non-ASCII characters entered ' + 'and terminal encoding unknown -- assuming ' + 'UTF-8 or Latin-1.'))) + try: + return text.decode() + except UnicodeDecodeError: + return text.decode('latin1') + + +def do_prompt(text: str, default: str = None, validator: Callable[[str], Any] = nonempty) -> Union[str, bool]: # NOQA + while True: + if default is not None: + prompt = PROMPT_PREFIX + '%s [%s]: ' % (text, default) + else: + prompt = PROMPT_PREFIX + text + ': ' + if USE_LIBEDIT: + # Note: libedit has a problem for combination of ``input()`` and escape + # sequence (see #5335). To avoid the problem, all prompts are not colored + # on libedit. + pass + else: + prompt = colorize(COLOR_QUESTION, prompt, input_mode=True) + x = term_input(prompt).strip() + if default and not x: + x = default + try: + x = validator(x) + except ValidationError as err: + print(red('* ' + str(err))) + continue + break + return x + + +def convert_python_source(source: str, rex: Pattern = re.compile(r"[uU]('.*?')")) -> str: + # remove Unicode literal prefixes + warnings.warn('convert_python_source() is deprecated.', + RemovedInSphinx40Warning) + return rex.sub('\\1', source) + + +class QuickstartRenderer(SphinxRenderer): + def __init__(self, templatedir: str) -> None: + self.templatedir = templatedir or '' + super().__init__() + + def render(self, template_name: str, context: Dict) -> str: + user_template = path.join(self.templatedir, path.basename(template_name)) + if self.templatedir and path.exists(user_template): + return self.render_from_file(user_template, context) + else: + return super().render(template_name, context) + + +def ask_user(d: Dict) -> None: + """Ask the user for quickstart values missing from *d*. + + Values are: + + * path: root path + * sep: separate source and build dirs (bool) + * dot: replacement for dot in _templates etc. + * project: project name + * author: author names + * version: version of project + * release: release of project + * language: document language + * suffix: source file suffix + * master: master document name + * extensions: extensions to use (list) + * makefile: make Makefile + * batchfile: make command file + """ + + print(bold(__('Welcome to the Sphinx %s quickstart utility.')) % __display_version__) + print() + print(__('Please enter values for the following settings (just press Enter to\n' + 'accept a default value, if one is given in brackets).')) + + if 'path' in d: + print() + print(bold(__('Selected root path: %s')) % d['path']) + else: + print() + print(__('Enter the root path for documentation.')) + d['path'] = do_prompt(__('Root path for the documentation'), '.', is_path) + + while path.isfile(path.join(d['path'], 'conf.py')) or \ + path.isfile(path.join(d['path'], 'source', 'conf.py')): + print() + print(bold(__('Error: an existing conf.py has been found in the ' + 'selected root path.'))) + print(__('sphinx-quickstart will not overwrite existing Sphinx projects.')) + print() + d['path'] = do_prompt(__('Please enter a new root path (or just Enter to exit)'), + '', is_path) + if not d['path']: + sys.exit(1) + + if 'sep' not in d: + print() + print(__('You have two options for placing the build directory for Sphinx output.\n' + 'Either, you use a directory "_build" within the root path, or you separate\n' + '"source" and "build" directories within the root path.')) + d['sep'] = do_prompt(__('Separate source and build directories (y/n)'), 'n', boolean) + + if 'dot' not in d: + print() + print(__('Inside the root directory, two more directories will be created; "_templates"\n' # NOQA + 'for custom HTML templates and "_static" for custom stylesheets and other static\n' # NOQA + 'files. You can enter another prefix (such as ".") to replace the underscore.')) # NOQA + d['dot'] = do_prompt(__('Name prefix for templates and static dir'), '_', ok) + + if 'project' not in d: + print() + print(__('The project name will occur in several places in the built documentation.')) + d['project'] = do_prompt(__('Project name')) + if 'author' not in d: + d['author'] = do_prompt(__('Author name(s)')) + + if 'version' not in d: + print() + print(__('Sphinx has the notion of a "version" and a "release" for the\n' + 'software. Each version can have multiple releases. For example, for\n' + 'Python the version is something like 2.5 or 3.0, while the release is\n' + 'something like 2.5.1 or 3.0a1. If you don\'t need this dual structure,\n' + 'just set both to the same value.')) + d['version'] = do_prompt(__('Project version'), '', allow_empty) + if 'release' not in d: + d['release'] = do_prompt(__('Project release'), d['version'], allow_empty) + + if 'language' not in d: + print() + print(__('If the documents are to be written in a language other than English,\n' + 'you can select a language here by its language code. Sphinx will then\n' + 'translate text that it generates into that language.\n' + '\n' + 'For a list of supported codes, see\n' + 'https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language.')) # NOQA + d['language'] = do_prompt(__('Project language'), 'en') + if d['language'] == 'en': + d['language'] = None + + if 'suffix' not in d: + print() + print(__('The file name suffix for source files. Commonly, this is either ".txt"\n' + 'or ".rst". Only files with this suffix are considered documents.')) + d['suffix'] = do_prompt(__('Source file suffix'), '.rst', suffix) + + if 'master' not in d: + print() + print(__('One document is special in that it is considered the top node of the\n' + '"contents tree", that is, it is the root of the hierarchical structure\n' + 'of the documents. Normally, this is "index", but if your "index"\n' + 'document is a custom template, you can also set this to another filename.')) + d['master'] = do_prompt(__('Name of your master document (without suffix)'), 'index') + + while path.isfile(path.join(d['path'], d['master'] + d['suffix'])) or \ + path.isfile(path.join(d['path'], 'source', d['master'] + d['suffix'])): + print() + print(bold(__('Error: the master file %s has already been found in the ' + 'selected root path.') % (d['master'] + d['suffix']))) + print(__('sphinx-quickstart will not overwrite the existing file.')) + print() + d['master'] = do_prompt(__('Please enter a new file name, or rename the ' + 'existing file and press Enter'), d['master']) + + if 'extensions' not in d: + print(__('Indicate which of the following Sphinx extensions should be enabled:')) + d['extensions'] = [] + for name, description in EXTENSIONS.items(): + if do_prompt('%s: %s (y/n)' % (name, description), 'n', boolean): + d['extensions'].append('sphinx.ext.%s' % name) + + # Handle conflicting options + if {'sphinx.ext.imgmath', 'sphinx.ext.mathjax'}.issubset(d['extensions']): + print(__('Note: imgmath and mathjax cannot be enabled at the same time. ' + 'imgmath has been deselected.')) + d['extensions'].remove('sphinx.ext.imgmath') + + if 'makefile' not in d: + print() + print(__('A Makefile and a Windows command file can be generated for you so that you\n' + 'only have to run e.g. `make html\' instead of invoking sphinx-build\n' + 'directly.')) + d['makefile'] = do_prompt(__('Create Makefile? (y/n)'), 'y', boolean) + + if 'batchfile' not in d: + d['batchfile'] = do_prompt(__('Create Windows command file? (y/n)'), 'y', boolean) + print() + + +def generate(d: Dict, overwrite: bool = True, silent: bool = False, templatedir: str = None + ) -> None: + """Generate project based on values in *d*.""" + template = QuickstartRenderer(templatedir=templatedir) + + if 'mastertoctree' not in d: + d['mastertoctree'] = '' + if 'mastertocmaxdepth' not in d: + d['mastertocmaxdepth'] = 2 + + d['now'] = time.asctime() + d['project_underline'] = column_width(d['project']) * '=' + d.setdefault('extensions', []) + d['copyright'] = time.strftime('%Y') + ', ' + d['author'] + + ensuredir(d['path']) + + srcdir = path.join(d['path'], 'source') if d['sep'] else d['path'] + + ensuredir(srcdir) + if d['sep']: + builddir = path.join(d['path'], 'build') + d['exclude_patterns'] = '' + else: + builddir = path.join(srcdir, d['dot'] + 'build') + exclude_patterns = map(repr, [ + d['dot'] + 'build', + 'Thumbs.db', '.DS_Store', + ]) + d['exclude_patterns'] = ', '.join(exclude_patterns) + ensuredir(builddir) + ensuredir(path.join(srcdir, d['dot'] + 'templates')) + ensuredir(path.join(srcdir, d['dot'] + 'static')) + + def write_file(fpath: str, content: str, newline: str = None) -> None: + if overwrite or not path.isfile(fpath): + if 'quiet' not in d: + print(__('Creating file %s.') % fpath) + with open(fpath, 'wt', encoding='utf-8', newline=newline) as f: + f.write(content) + else: + if 'quiet' not in d: + print(__('File %s already exists, skipping.') % fpath) + + conf_path = os.path.join(templatedir, 'conf.py_t') if templatedir else None + if not conf_path or not path.isfile(conf_path): + conf_path = os.path.join(package_dir, 'templates', 'quickstart', 'conf.py_t') + with open(conf_path) as f: + conf_text = f.read() + + write_file(path.join(srcdir, 'conf.py'), template.render_string(conf_text, d)) + + masterfile = path.join(srcdir, d['master'] + d['suffix']) + write_file(masterfile, template.render('quickstart/master_doc.rst_t', d)) + + if d.get('make_mode') is True: + makefile_template = 'quickstart/Makefile.new_t' + batchfile_template = 'quickstart/make.bat.new_t' + else: + makefile_template = 'quickstart/Makefile_t' + batchfile_template = 'quickstart/make.bat_t' + + if d['makefile'] is True: + d['rsrcdir'] = 'source' if d['sep'] else '.' + d['rbuilddir'] = 'build' if d['sep'] else d['dot'] + 'build' + # use binary mode, to avoid writing \r\n on Windows + write_file(path.join(d['path'], 'Makefile'), + template.render(makefile_template, d), '\n') + + if d['batchfile'] is True: + d['rsrcdir'] = 'source' if d['sep'] else '.' + d['rbuilddir'] = 'build' if d['sep'] else d['dot'] + 'build' + write_file(path.join(d['path'], 'make.bat'), + template.render(batchfile_template, d), '\r\n') + + if silent: + return + print() + print(bold(__('Finished: An initial directory structure has been created.'))) + print() + print(__('You should now populate your master file %s and create other documentation\n' + 'source files. ') % masterfile, end='') + if d['makefile'] or d['batchfile']: + print(__('Use the Makefile to build the docs, like so:\n' + ' make builder')) + else: + print(__('Use the sphinx-build command to build the docs, like so:\n' + ' sphinx-build -b builder %s %s') % (srcdir, builddir)) + print(__('where "builder" is one of the supported builders, ' + 'e.g. html, latex or linkcheck.')) + print() + + +def valid_dir(d: Dict) -> bool: + dir = d['path'] + if not path.exists(dir): + return True + if not path.isdir(dir): + return False + + if {'Makefile', 'make.bat'} & set(os.listdir(dir)): + return False + + if d['sep']: + dir = os.path.join('source', dir) + if not path.exists(dir): + return True + if not path.isdir(dir): + return False + + reserved_names = [ + 'conf.py', + d['dot'] + 'static', + d['dot'] + 'templates', + d['master'] + d['suffix'], + ] + if set(reserved_names) & set(os.listdir(dir)): + return False + + return True + + +def get_parser() -> argparse.ArgumentParser: + description = __( + "\n" + "Generate required files for a Sphinx project.\n" + "\n" + "sphinx-quickstart is an interactive tool that asks some questions about your\n" + "project and then generates a complete documentation directory and sample\n" + "Makefile to be used with sphinx-build.\n" + ) + parser = argparse.ArgumentParser( + usage='%(prog)s [OPTIONS] <PROJECT_DIR>', + epilog=__("For more information, visit <http://sphinx-doc.org/>."), + description=description) + + parser.add_argument('-q', '--quiet', action='store_true', dest='quiet', + default=None, + help=__('quiet mode')) + parser.add_argument('--version', action='version', dest='show_version', + version='%%(prog)s %s' % __display_version__) + + parser.add_argument('path', metavar='PROJECT_DIR', default='.', nargs='?', + help=__('project root')) + + group = parser.add_argument_group(__('Structure options')) + group.add_argument('--sep', action='store_true', default=None, + help=__('if specified, separate source and build dirs')) + group.add_argument('--dot', metavar='DOT', default='_', + help=__('replacement for dot in _templates etc.')) + + group = parser.add_argument_group(__('Project basic options')) + group.add_argument('-p', '--project', metavar='PROJECT', dest='project', + help=__('project name')) + group.add_argument('-a', '--author', metavar='AUTHOR', dest='author', + help=__('author names')) + group.add_argument('-v', metavar='VERSION', dest='version', default='', + help=__('version of project')) + group.add_argument('-r', '--release', metavar='RELEASE', dest='release', + help=__('release of project')) + group.add_argument('-l', '--language', metavar='LANGUAGE', dest='language', + help=__('document language')) + group.add_argument('--suffix', metavar='SUFFIX', default='.rst', + help=__('source file suffix')) + group.add_argument('--master', metavar='MASTER', default='index', + help=__('master document name')) + group.add_argument('--epub', action='store_true', default=False, + help=__('use epub')) + + group = parser.add_argument_group(__('Extension options')) + for ext in EXTENSIONS: + group.add_argument('--ext-%s' % ext, action='append_const', + const='sphinx.ext.%s' % ext, dest='extensions', + help=__('enable %s extension') % ext) + group.add_argument('--extensions', metavar='EXTENSIONS', dest='extensions', + action='append', help=__('enable arbitrary extensions')) + + group = parser.add_argument_group(__('Makefile and Batchfile creation')) + group.add_argument('--makefile', action='store_true', dest='makefile', default=True, + help=__('create makefile')) + group.add_argument('--no-makefile', action='store_false', dest='makefile', + help=__('do not create makefile')) + group.add_argument('--batchfile', action='store_true', dest='batchfile', default=True, + help=__('create batchfile')) + group.add_argument('--no-batchfile', action='store_false', + dest='batchfile', + help=__('do not create batchfile')) + group.add_argument('-m', '--use-make-mode', action='store_true', + dest='make_mode', default=True, + help=__('use make-mode for Makefile/make.bat')) + group.add_argument('-M', '--no-use-make-mode', action='store_false', + dest='make_mode', + help=__('do not use make-mode for Makefile/make.bat')) + + group = parser.add_argument_group(__('Project templating')) + group.add_argument('-t', '--templatedir', metavar='TEMPLATEDIR', + dest='templatedir', + help=__('template directory for template files')) + group.add_argument('-d', metavar='NAME=VALUE', action='append', + dest='variables', + help=__('define a template variable')) + + return parser + + +def main(argv: List[str] = sys.argv[1:]) -> int: + sphinx.locale.setlocale(locale.LC_ALL, '') + sphinx.locale.init_console(os.path.join(package_dir, 'locale'), 'sphinx') + + if not color_terminal(): + nocolor() + + # parse options + parser = get_parser() + try: + args = parser.parse_args(argv) + except SystemExit as err: + return err.code + + d = vars(args) + # delete None or False value + d = {k: v for k, v in d.items() if v is not None} + + # handle use of CSV-style extension values + d.setdefault('extensions', []) + for ext in d['extensions'][:]: + if ',' in ext: + d['extensions'].remove(ext) + d['extensions'].extend(ext.split(',')) + + try: + if 'quiet' in d: + if not {'project', 'author'}.issubset(d): + print(__('"quiet" is specified, but any of "project" or ' + '"author" is not specified.')) + return 1 + + if {'quiet', 'project', 'author'}.issubset(d): + # quiet mode with all required params satisfied, use default + d.setdefault('version', '') + d.setdefault('release', d['version']) + d2 = DEFAULTS.copy() + d2.update(d) + d = d2 + + if not valid_dir(d): + print() + print(bold(__('Error: specified path is not a directory, or sphinx' + ' files already exist.'))) + print(__('sphinx-quickstart only generate into a empty directory.' + ' Please specify a new root path.')) + return 1 + else: + ask_user(d) + except (KeyboardInterrupt, EOFError): + print() + print('[Interrupted.]') + return 130 # 128 + SIGINT + + for variable in d.get('variables', []): + try: + name, value = variable.split('=') + d[name] = value + except ValueError: + print(__('Invalid template variable: %s') % variable) + + generate(d, overwrite=False, templatedir=args.templatedir) + return 0 + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/sphinx/sphinx/config.py b/sphinx/sphinx/config.py new file mode 100644 index 0000000..19a8f6c --- /dev/null +++ b/sphinx/sphinx/config.py @@ -0,0 +1,492 @@ +""" + sphinx.config + ~~~~~~~~~~~~~ + + Build configuration file handling. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re +import traceback +import types +import warnings +from collections import OrderedDict +from os import path, getenv +from typing import ( + Any, Callable, Dict, Generator, Iterator, List, NamedTuple, Set, Tuple, Union +) + +from sphinx.deprecation import RemovedInSphinx40Warning +from sphinx.errors import ConfigError, ExtensionError +from sphinx.locale import _, __ +from sphinx.util import logging +from sphinx.util.i18n import format_date +from sphinx.util.osutil import cd +from sphinx.util.pycompat import execfile_ +from sphinx.util.tags import Tags +from sphinx.util.typing import NoneType + +if False: + # For type annotation + from sphinx.application import Sphinx + from sphinx.environment import BuildEnvironment + +logger = logging.getLogger(__name__) + +CONFIG_FILENAME = 'conf.py' +UNSERIALIZABLE_TYPES = (type, types.ModuleType, types.FunctionType) +copyright_year_re = re.compile(r'^((\d{4}-)?)(\d{4})(?=[ ,])') + +ConfigValue = NamedTuple('ConfigValue', [('name', str), + ('value', Any), + ('rebuild', Union[bool, str])]) + + +def is_serializable(obj: Any) -> bool: + """Check if object is serializable or not.""" + if isinstance(obj, UNSERIALIZABLE_TYPES): + return False + elif isinstance(obj, dict): + for key, value in obj.items(): + if not is_serializable(key) or not is_serializable(value): + return False + elif isinstance(obj, (list, tuple, set)): + return all(is_serializable(i) for i in obj) + + return True + + +class ENUM: + """represents the config value should be a one of candidates. + + Example: + app.add_config_value('latex_show_urls', 'no', None, ENUM('no', 'footnote', 'inline')) + """ + def __init__(self, *candidates: str) -> None: + self.candidates = candidates + + def match(self, value: Union[str, List, Tuple]) -> bool: + if isinstance(value, (list, tuple)): + return all(item in self.candidates for item in value) + else: + return value in self.candidates + + +# RemovedInSphinx40Warning +string_classes = [str] # type: List + + +class Config: + """Configuration file abstraction. + + The config object makes the values of all config values available as + attributes. + + It is exposed via the :py:attr:`sphinx.application.Application.config` and + :py:attr:`sphinx.environment.Environment.config` attributes. For example, + to get the value of :confval:`language`, use either ``app.config.language`` + or ``env.config.language``. + """ + + # the values are: (default, what needs to be rebuilt if changed) + + # If you add a value here, don't forget to include it in the + # quickstart.py file template as well as in the docs! + + config_values = { + # general options + 'project': ('Python', 'env', []), + 'author': ('unknown', 'env', []), + 'copyright': ('', 'html', []), + 'version': ('', 'env', []), + 'release': ('', 'env', []), + 'today': ('', 'env', []), + # the real default is locale-dependent + 'today_fmt': (None, 'env', [str]), + + 'language': (None, 'env', [str]), + 'locale_dirs': (['locales'], 'env', []), + 'figure_language_filename': ('{root}.{language}{ext}', 'env', [str]), + + 'master_doc': ('index', 'env', []), + 'source_suffix': ({'.rst': 'restructuredtext'}, 'env', Any), + 'source_encoding': ('utf-8-sig', 'env', []), + 'source_parsers': ({}, 'env', []), + 'exclude_patterns': ([], 'env', []), + 'default_role': (None, 'env', [str]), + 'add_function_parentheses': (True, 'env', []), + 'add_module_names': (True, 'env', []), + 'trim_footnote_reference_space': (False, 'env', []), + 'show_authors': (False, 'env', []), + 'pygments_style': (None, 'html', [str]), + 'highlight_language': ('default', 'env', []), + 'highlight_options': ({}, 'env', []), + 'templates_path': ([], 'html', []), + 'template_bridge': (None, 'html', [str]), + 'keep_warnings': (False, 'env', []), + 'suppress_warnings': ([], 'env', []), + 'modindex_common_prefix': ([], 'html', []), + 'rst_epilog': (None, 'env', [str]), + 'rst_prolog': (None, 'env', [str]), + 'trim_doctest_flags': (True, 'env', []), + 'primary_domain': ('py', 'env', [NoneType]), # type: ignore + 'needs_sphinx': (None, None, [str]), + 'needs_extensions': ({}, None, []), + 'manpages_url': (None, 'env', []), + 'nitpicky': (False, None, []), + 'nitpick_ignore': ([], None, []), + 'numfig': (False, 'env', []), + 'numfig_secnum_depth': (1, 'env', []), + 'numfig_format': ({}, 'env', []), # will be initialized in init_numfig_format() + + 'math_number_all': (False, 'env', []), + 'math_eqref_format': (None, 'env', [str]), + 'math_numfig': (True, 'env', []), + 'tls_verify': (True, 'env', []), + 'tls_cacerts': (None, 'env', []), + 'user_agent': (None, 'env', [str]), + 'smartquotes': (True, 'env', []), + 'smartquotes_action': ('qDe', 'env', []), + 'smartquotes_excludes': ({'languages': ['ja'], + 'builders': ['man', 'text']}, + 'env', []), + } # type: Dict[str, Tuple] + + def __init__(self, config: Dict[str, Any] = {}, overrides: Dict[str, Any] = {}) -> None: + self.overrides = dict(overrides) + self.values = Config.config_values.copy() + self._raw_config = config + self.setup = config.get('setup', None) # type: Callable + + if 'extensions' in self.overrides: + if isinstance(self.overrides['extensions'], str): + config['extensions'] = self.overrides.pop('extensions').split(',') + else: + config['extensions'] = self.overrides.pop('extensions') + self.extensions = config.get('extensions', []) # type: List[str] + + @classmethod + def read(cls, confdir: str, overrides: Dict = None, tags: Tags = None) -> "Config": + """Create a Config object from configuration file.""" + filename = path.join(confdir, CONFIG_FILENAME) + namespace = eval_config_file(filename, tags) + return cls(namespace, overrides or {}) + + def convert_overrides(self, name: str, value: Any) -> Any: + if not isinstance(value, str): + return value + else: + defvalue = self.values[name][0] + if self.values[name][2] == Any: + return value + elif type(defvalue) is bool or self.values[name][2] == [bool]: + if value == '0': + # given falsy string from command line option + return False + else: + return bool(value) + elif isinstance(defvalue, dict): + raise ValueError(__('cannot override dictionary config setting %r, ' + 'ignoring (use %r to set individual elements)') % + (name, name + '.key=value')) + elif isinstance(defvalue, list): + return value.split(',') + elif isinstance(defvalue, int): + try: + return int(value) + except ValueError: + raise ValueError(__('invalid number %r for config value %r, ignoring') % + (value, name)) + elif hasattr(defvalue, '__call__'): + return value + elif defvalue is not None and not isinstance(defvalue, str): + raise ValueError(__('cannot override config setting %r with unsupported ' + 'type, ignoring') % name) + else: + return value + + def pre_init_values(self) -> None: + """ + Initialize some limited config variables before initialize i18n and loading extensions + """ + variables = ['needs_sphinx', 'suppress_warnings', 'language', 'locale_dirs'] + for name in variables: + try: + if name in self.overrides: + self.__dict__[name] = self.convert_overrides(name, self.overrides[name]) + elif name in self._raw_config: + self.__dict__[name] = self._raw_config[name] + except ValueError as exc: + logger.warning("%s", exc) + + def init_values(self) -> None: + config = self._raw_config + for valname, value in self.overrides.items(): + try: + if '.' in valname: + realvalname, key = valname.split('.', 1) + config.setdefault(realvalname, {})[key] = value + continue + elif valname not in self.values: + logger.warning(__('unknown config value %r in override, ignoring'), + valname) + continue + if isinstance(value, str): + config[valname] = self.convert_overrides(valname, value) + else: + config[valname] = value + except ValueError as exc: + logger.warning("%s", exc) + for name in config: + if name in self.values: + self.__dict__[name] = config[name] + + def __getattr__(self, name: str) -> Any: + if name.startswith('_'): + raise AttributeError(name) + if name not in self.values: + raise AttributeError(__('No such config value: %s') % name) + default = self.values[name][0] + if hasattr(default, '__call__'): + return default(self) + return default + + def __getitem__(self, name: str) -> str: + return getattr(self, name) + + def __setitem__(self, name: str, value: Any) -> None: + setattr(self, name, value) + + def __delitem__(self, name: str) -> None: + delattr(self, name) + + def __contains__(self, name: str) -> bool: + return name in self.values + + def __iter__(self) -> Generator[ConfigValue, None, None]: + for name, value in self.values.items(): + yield ConfigValue(name, getattr(self, name), value[1]) + + def add(self, name: str, default: Any, rebuild: Union[bool, str], types: Any) -> None: + if name in self.values: + raise ExtensionError(__('Config value %r already present') % name) + else: + self.values[name] = (default, rebuild, types) + + def filter(self, rebuild: Union[str, List[str]]) -> Iterator[ConfigValue]: + if isinstance(rebuild, str): + rebuild = [rebuild] + return (value for value in self if value.rebuild in rebuild) + + def __getstate__(self) -> Dict: + """Obtains serializable data for pickling.""" + # remove potentially pickling-problematic values from config + __dict__ = {} + for key, value in self.__dict__.items(): + if key.startswith('_') or not is_serializable(value): + pass + else: + __dict__[key] = value + + # create a picklable copy of values list + __dict__['values'] = {} + for key, value in self.values.items(): + real_value = getattr(self, key) + if not is_serializable(real_value): + # omit unserializable value + real_value = None + + # types column is also omitted + __dict__['values'][key] = (real_value, value[1], None) + + return __dict__ + + def __setstate__(self, state: Dict) -> None: + self.__dict__.update(state) + + +def eval_config_file(filename: str, tags: Tags) -> Dict[str, Any]: + """Evaluate a config file.""" + namespace = {} # type: Dict[str, Any] + namespace['__file__'] = filename + namespace['tags'] = tags + + with cd(path.dirname(filename)): + # during executing config file, current dir is changed to ``confdir``. + try: + execfile_(filename, namespace) + except SyntaxError as err: + msg = __("There is a syntax error in your configuration file: %s\n") + raise ConfigError(msg % err) + except SystemExit: + msg = __("The configuration file (or one of the modules it imports) " + "called sys.exit()") + raise ConfigError(msg) + except ConfigError: + # pass through ConfigError from conf.py as is. It will be shown in console. + raise + except Exception: + msg = __("There is a programmable error in your configuration file:\n\n%s") + raise ConfigError(msg % traceback.format_exc()) + + return namespace + + +def convert_source_suffix(app: "Sphinx", config: Config) -> None: + """This converts old styled source_suffix to new styled one. + + * old style: str or list + * new style: a dict which maps from fileext to filetype + """ + source_suffix = config.source_suffix + if isinstance(source_suffix, str): + # if str, considers as default filetype (None) + # + # The default filetype is determined on later step. + # By default, it is considered as restructuredtext. + config.source_suffix = OrderedDict({source_suffix: None}) # type: ignore + elif isinstance(source_suffix, (list, tuple)): + # if list, considers as all of them are default filetype + config.source_suffix = OrderedDict([(s, None) for s in source_suffix]) # type: ignore # NOQA + elif isinstance(source_suffix, dict): + # if dict, convert it to OrderedDict + config.source_suffix = OrderedDict(config.source_suffix) # type: ignore + else: + logger.warning(__("The config value `source_suffix' expects " + "a string, list of strings, or dictionary. " + "But `%r' is given." % source_suffix)) + + +def init_numfig_format(app: "Sphinx", config: Config) -> None: + """Initialize :confval:`numfig_format`.""" + numfig_format = {'section': _('Section %s'), + 'figure': _('Fig. %s'), + 'table': _('Table %s'), + 'code-block': _('Listing %s')} + + # override default labels by configuration + numfig_format.update(config.numfig_format) + config.numfig_format = numfig_format # type: ignore + + +def correct_copyright_year(app: "Sphinx", config: Config) -> None: + """correct values of copyright year that are not coherent with + the SOURCE_DATE_EPOCH environment variable (if set) + + See https://reproducible-builds.org/specs/source-date-epoch/ + """ + if getenv('SOURCE_DATE_EPOCH') is not None: + for k in ('copyright', 'epub_copyright'): + if k in config: + replace = r'\g<1>%s' % format_date('%Y') + config[k] = copyright_year_re.sub(replace, config[k]) + + +def check_confval_types(app: "Sphinx", config: Config) -> None: + """check all values for deviation from the default value's type, since + that can result in TypeErrors all over the place NB. + """ + for confval in config: + default, rebuild, annotations = config.values[confval.name] + + if hasattr(default, '__call__'): + default = default(config) # evaluate default value + if default is None and not annotations: + continue # neither inferrable nor expliclitly annotated types + + if annotations is Any: + # any type of value is accepted + pass + elif isinstance(annotations, ENUM): + if not annotations.match(confval.value): + msg = __("The config value `{name}` has to be a one of {candidates}, " + "but `{current}` is given.") + logger.warning(msg.format(name=confval.name, + current=confval.value, + candidates=annotations.candidates)) + else: + if type(confval.value) is type(default): + continue + if type(confval.value) in annotations: + continue + + common_bases = (set(type(confval.value).__bases__ + (type(confval.value),)) & + set(type(default).__bases__)) + common_bases.discard(object) + if common_bases: + continue # at least we share a non-trivial base class + + if annotations: + msg = __("The config value `{name}' has type `{current.__name__}'; " + "expected {permitted}.") + wrapped_annotations = ["`{}'".format(c.__name__) for c in annotations] + if len(wrapped_annotations) > 2: + permitted = "{}, or {}".format( + ", ".join(wrapped_annotations[:-1]), + wrapped_annotations[-1]) + else: + permitted = " or ".join(wrapped_annotations) + logger.warning(msg.format(name=confval.name, + current=type(confval.value), + permitted=permitted)) + else: + msg = __("The config value `{name}' has type `{current.__name__}', " + "defaults to `{default.__name__}'.") + logger.warning(msg.format(name=confval.name, + current=type(confval.value), + default=type(default))) + + +def check_unicode(config: Config) -> None: + """check all string values for non-ASCII characters in bytestrings, + since that can result in UnicodeErrors all over the place + """ + warnings.warn('sphinx.config.check_unicode() is deprecated.', + RemovedInSphinx40Warning) + + nonascii_re = re.compile(br'[\x80-\xff]') + + for name, value in config._raw_config.items(): + if isinstance(value, bytes) and nonascii_re.search(value): + logger.warning(__('the config value %r is set to a string with non-ASCII ' + 'characters; this can lead to Unicode errors occurring. ' + 'Please use Unicode strings, e.g. %r.'), name, 'Content') + + +def check_primary_domain(app: "Sphinx", config: Config) -> None: + primary_domain = config.primary_domain + if primary_domain and not app.registry.has_domain(primary_domain): + logger.warning(__('primary_domain %r not found, ignored.'), primary_domain) + config.primary_domain = None # type: ignore + + +def check_master_doc(app: "Sphinx", env: "BuildEnvironment", added: Set[str], + changed: Set[str], removed: Set[str]) -> Set[str]: + """Adjust master_doc to 'contents' to support an old project which does not have + no master_doc setting. + """ + if (app.config.master_doc == 'index' and + 'index' not in app.project.docnames and + 'contents' in app.project.docnames): + logger.warning(__('Since v2.0, Sphinx uses "index" as master_doc by default. ' + 'Please add "master_doc = \'contents\'" to your conf.py.')) + app.config.master_doc = "contents" # type: ignore + + return changed + + +def setup(app: "Sphinx") -> Dict[str, Any]: + app.connect('config-inited', convert_source_suffix, priority=800) + app.connect('config-inited', init_numfig_format, priority=800) + app.connect('config-inited', correct_copyright_year, priority=800) + app.connect('config-inited', check_confval_types, priority=800) + app.connect('config-inited', check_primary_domain, priority=800) + app.connect('env-get-outdated', check_master_doc) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/deprecation.py b/sphinx/sphinx/deprecation.py new file mode 100644 index 0000000..5e5e673 --- /dev/null +++ b/sphinx/sphinx/deprecation.py @@ -0,0 +1,78 @@ +""" + sphinx.deprecation + ~~~~~~~~~~~~~~~~~~ + + Sphinx deprecation classes and utilities. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import sys +import warnings +from importlib import import_module +from typing import Any, Dict +from typing import Type # for python3.5.1 + + +class RemovedInSphinx40Warning(DeprecationWarning): + pass + + +class RemovedInSphinx50Warning(PendingDeprecationWarning): + pass + + +RemovedInNextVersionWarning = RemovedInSphinx40Warning + + +def deprecated_alias(modname: str, objects: Dict, warning: Type[Warning]) -> None: + module = import_module(modname) + sys.modules[modname] = _ModuleWrapper(module, modname, objects, warning) # type: ignore + + +class _ModuleWrapper: + def __init__(self, module: Any, modname: str, objects: Dict, warning: Type[Warning] + ) -> None: + self._module = module + self._modname = modname + self._objects = objects + self._warning = warning + + def __getattr__(self, name: str) -> Any: + if name in self._objects: + warnings.warn("%s.%s is deprecated. Check CHANGES for Sphinx " + "API modifications." % (self._modname, name), + self._warning, stacklevel=3) + return self._objects[name] + + return getattr(self._module, name) + + +class DeprecatedDict(dict): + """A deprecated dict which warns on each access.""" + + def __init__(self, data: Dict, message: str, warning: Type[Warning]) -> None: + self.message = message + self.warning = warning + super().__init__(data) + + def __setitem__(self, key: str, value: Any) -> None: + warnings.warn(self.message, self.warning, stacklevel=2) + super().__setitem__(key, value) + + def setdefault(self, key: str, default: Any = None) -> Any: + warnings.warn(self.message, self.warning, stacklevel=2) + return super().setdefault(key, default) + + def __getitem__(self, key: str) -> None: + warnings.warn(self.message, self.warning, stacklevel=2) + return super().__getitem__(key) + + def get(self, key: str, default: Any = None) -> Any: + warnings.warn(self.message, self.warning, stacklevel=2) + return super().get(key, default) + + def update(self, other: Dict = None) -> None: # type: ignore + warnings.warn(self.message, self.warning, stacklevel=2) + super().update(other) diff --git a/sphinx/sphinx/directives/__init__.py b/sphinx/sphinx/directives/__init__.py new file mode 100644 index 0000000..574962d --- /dev/null +++ b/sphinx/sphinx/directives/__init__.py @@ -0,0 +1,324 @@ +""" + sphinx.directives + ~~~~~~~~~~~~~~~~~ + + Handlers for additional ReST directives. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re +from typing import Any, Dict, List, Tuple +from typing import cast + +from docutils import nodes +from docutils.nodes import Node +from docutils.parsers.rst import directives, roles + +from sphinx import addnodes +from sphinx.addnodes import desc_signature +from sphinx.deprecation import ( + RemovedInSphinx40Warning, RemovedInSphinx50Warning, deprecated_alias +) +from sphinx.util import docutils +from sphinx.util.docfields import DocFieldTransformer, Field, TypedField +from sphinx.util.docutils import SphinxDirective +from sphinx.util.typing import DirectiveOption + +if False: + # For type annotation + from sphinx.application import Sphinx + + +# RE to strip backslash escapes +nl_escape_re = re.compile(r'\\\n') +strip_backslash_re = re.compile(r'\\(.)') + + +def optional_int(argument: str) -> int: + """ + Check for an integer argument or None value; raise ``ValueError`` if not. + """ + if argument is None: + return None + else: + value = int(argument) + if value < 0: + raise ValueError('negative value; must be positive or zero') + return value + + +class ObjectDescription(SphinxDirective): + """ + Directive to describe a class, function or similar object. Not used + directly, but subclassed (in domain-specific directives) to add custom + behavior. + """ + + has_content = True + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = { + 'noindex': directives.flag, + } # type: Dict[str, DirectiveOption] + + # types of doc fields that this directive handles, see sphinx.util.docfields + doc_field_types = [] # type: List[Field] + domain = None # type: str + objtype = None # type: str + indexnode = None # type: addnodes.index + + # Warning: this might be removed in future version. Don't touch this from extensions. + _doc_field_type_map = {} # type: Dict[str, Tuple[Field, bool]] + + def get_field_type_map(self) -> Dict[str, Tuple[Field, bool]]: + if self._doc_field_type_map == {}: + self._doc_field_type_map = {} + for field in self.doc_field_types: + for name in field.names: + self._doc_field_type_map[name] = (field, False) + + if field.is_typed: + typed_field = cast(TypedField, field) + for name in typed_field.typenames: + self._doc_field_type_map[name] = (field, True) + + return self._doc_field_type_map + + def get_signatures(self) -> List[str]: + """ + Retrieve the signatures to document from the directive arguments. By + default, signatures are given as arguments, one per line. + """ + lines = nl_escape_re.sub('', self.arguments[0]).split('\n') + if self.config.strip_signature_backslash: + # remove backslashes to support (dummy) escapes; helps Vim highlighting + return [strip_backslash_re.sub(r'\1', line.strip()) for line in lines] + else: + return [line.strip() for line in lines] + + def handle_signature(self, sig: str, signode: desc_signature) -> Any: + """ + Parse the signature *sig* into individual nodes and append them to + *signode*. If ValueError is raised, parsing is aborted and the whole + *sig* is put into a single desc_name node. + + The return value should be a value that identifies the object. It is + passed to :meth:`add_target_and_index()` unchanged, and otherwise only + used to skip duplicates. + """ + raise ValueError + + def add_target_and_index(self, name: Any, sig: str, signode: desc_signature) -> None: + """ + Add cross-reference IDs and entries to self.indexnode, if applicable. + + *name* is whatever :meth:`handle_signature()` returned. + """ + return # do nothing by default + + def before_content(self) -> None: + """ + Called before parsing content. Used to set information about the current + directive context on the build environment. + """ + pass + + def transform_content(self, contentnode: addnodes.desc_content) -> None: + """ + Called after creating the content through nested parsing, + but before the ``object-description-transform`` event is emitted, + and before the info-fields are transformed. + Can be used to manipulate the content. + """ + pass + + def after_content(self) -> None: + """ + Called after parsing content. Used to reset information about the + current directive context on the build environment. + """ + pass + + def run(self) -> List[Node]: + """ + Main directive entry function, called by docutils upon encountering the + directive. + + This directive is meant to be quite easily subclassable, so it delegates + to several additional methods. What it does: + + * find out if called as a domain-specific directive, set self.domain + * create a `desc` node to fit all description inside + * parse standard options, currently `noindex` + * create an index node if needed as self.indexnode + * parse all given signatures (as returned by self.get_signatures()) + using self.handle_signature(), which should either return a name + or raise ValueError + * add index entries using self.add_target_and_index() + * parse the content and handle doc fields in it + """ + if ':' in self.name: + self.domain, self.objtype = self.name.split(':', 1) + else: + self.domain, self.objtype = '', self.name + self.indexnode = addnodes.index(entries=[]) + + node = addnodes.desc() + node.document = self.state.document + node['domain'] = self.domain + # 'desctype' is a backwards compatible attribute + node['objtype'] = node['desctype'] = self.objtype + node['noindex'] = noindex = ('noindex' in self.options) + if self.domain: + node['classes'].append(self.domain) + + self.names = [] # type: List[Any] + signatures = self.get_signatures() + for i, sig in enumerate(signatures): + # add a signature node for each signature in the current unit + # and add a reference target for it + signode = addnodes.desc_signature(sig, '') + self.set_source_info(signode) + node.append(signode) + try: + # name can also be a tuple, e.g. (classname, objname); + # this is strictly domain-specific (i.e. no assumptions may + # be made in this base class) + name = self.handle_signature(sig, signode) + except ValueError: + # signature parsing failed + signode.clear() + signode += addnodes.desc_name(sig, sig) + continue # we don't want an index entry here + if name not in self.names: + self.names.append(name) + if not noindex: + # only add target and index entry if this is the first + # description of the object with this name in this desc block + self.add_target_and_index(name, sig, signode) + + contentnode = addnodes.desc_content() + node.append(contentnode) + if self.names: + # needed for association of version{added,changed} directives + self.env.temp_data['object'] = self.names[0] + self.before_content() + self.state.nested_parse(self.content, self.content_offset, contentnode) + self.transform_content(contentnode) + self.env.app.emit('object-description-transform', + self.domain, self.objtype, contentnode) + DocFieldTransformer(self).transform_all(contentnode) + self.env.temp_data['object'] = None + self.after_content() + return [self.indexnode, node] + + +class DefaultRole(SphinxDirective): + """ + Set the default interpreted text role. Overridden from docutils. + """ + + optional_arguments = 1 + final_argument_whitespace = False + + def run(self) -> List[Node]: + if not self.arguments: + docutils.unregister_role('') + return [] + role_name = self.arguments[0] + role, messages = roles.role(role_name, self.state_machine.language, + self.lineno, self.state.reporter) + if role: + docutils.register_role('', role) + self.env.temp_data['default_role'] = role_name + else: + literal_block = nodes.literal_block(self.block_text, self.block_text) + reporter = self.state.reporter + error = reporter.error('Unknown interpreted text role "%s".' % role_name, + literal_block, line=self.lineno) + messages += [error] + + return cast(List[nodes.Node], messages) + + +class DefaultDomain(SphinxDirective): + """ + Directive to (re-)set the default domain for this source file. + """ + + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = False + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + domain_name = self.arguments[0].lower() + # if domain_name not in env.domains: + # # try searching by label + # for domain in env.domains.values(): + # if domain.label.lower() == domain_name: + # domain_name = domain.name + # break + self.env.temp_data['default_domain'] = self.env.domains.get(domain_name) + return [] + +from sphinx.directives.code import ( # noqa + Highlight, CodeBlock, LiteralInclude +) +from sphinx.directives.other import ( # noqa + TocTree, Author, VersionChange, SeeAlso, + TabularColumns, Centered, Acks, HList, Only, Include, Class +) +from sphinx.directives.patches import ( # noqa + Figure, Meta +) +from sphinx.domains.index import IndexDirective # noqa + +deprecated_alias('sphinx.directives', + { + 'Highlight': Highlight, + 'CodeBlock': CodeBlock, + 'LiteralInclude': LiteralInclude, + 'TocTree': TocTree, + 'Author': Author, + 'Index': IndexDirective, + 'VersionChange': VersionChange, + 'SeeAlso': SeeAlso, + 'TabularColumns': TabularColumns, + 'Centered': Centered, + 'Acks': Acks, + 'HList': HList, + 'Only': Only, + 'Include': Include, + 'Class': Class, + 'Figure': Figure, + 'Meta': Meta, + }, + RemovedInSphinx40Warning) + +deprecated_alias('sphinx.directives', + { + 'DescDirective': ObjectDescription, + }, + RemovedInSphinx50Warning) + + +def setup(app: "Sphinx") -> Dict[str, Any]: + app.add_config_value("strip_signature_backslash", False, 'env') + directives.register_directive('default-role', DefaultRole) + directives.register_directive('default-domain', DefaultDomain) + directives.register_directive('describe', ObjectDescription) + # new, more consistent, name + directives.register_directive('object', ObjectDescription) + + app.add_event('object-description-transform') + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/directives/code.py b/sphinx/sphinx/directives/code.py new file mode 100644 index 0000000..8c19dd0 --- /dev/null +++ b/sphinx/sphinx/directives/code.py @@ -0,0 +1,480 @@ +""" + sphinx.directives.code + ~~~~~~~~~~~~~~~~~~~~~~ + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import sys +import warnings +from difflib import unified_diff +from typing import Any, Dict, List, Tuple + +from docutils import nodes +from docutils.nodes import Element, Node +from docutils.parsers.rst import directives +from docutils.statemachine import StringList + +from sphinx import addnodes +from sphinx.config import Config +from sphinx.deprecation import RemovedInSphinx40Warning +from sphinx.locale import __ +from sphinx.util import logging +from sphinx.util import parselinenos +from sphinx.util.docutils import SphinxDirective + +if False: + # For type annotation + from sphinx.application import Sphinx + +logger = logging.getLogger(__name__) + + +class Highlight(SphinxDirective): + """ + Directive to set the highlighting language for code blocks, as well + as the threshold for line numbers. + """ + + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = False + option_spec = { + 'force': directives.flag, + 'linenothreshold': directives.positive_int, + } + + def run(self) -> List[Node]: + language = self.arguments[0].strip() + linenothreshold = self.options.get('linenothreshold', sys.maxsize) + force = 'force' in self.options + + self.env.temp_data['highlight_language'] = language + return [addnodes.highlightlang(lang=language, + force=force, + linenothreshold=linenothreshold)] + + +class HighlightLang(Highlight): + """highlightlang directive (deprecated)""" + + def run(self) -> List[Node]: + warnings.warn('highlightlang directive is deprecated. ' + 'Please use highlight directive instead.', + RemovedInSphinx40Warning, stacklevel=2) + return super().run() + + +def dedent_lines(lines: List[str], dedent: int, location: Tuple[str, int] = None) -> List[str]: + if not dedent: + return lines + + if any(s[:dedent].strip() for s in lines): + logger.warning(__('Over dedent has detected'), location=location) + + new_lines = [] + for line in lines: + new_line = line[dedent:] + if line.endswith('\n') and not new_line: + new_line = '\n' # keep CRLF + new_lines.append(new_line) + + return new_lines + + +def container_wrapper(directive: SphinxDirective, literal_node: Node, caption: str) -> nodes.container: # NOQA + container_node = nodes.container('', literal_block=True, + classes=['literal-block-wrapper']) + parsed = nodes.Element() + directive.state.nested_parse(StringList([caption], source=''), + directive.content_offset, parsed) + if isinstance(parsed[0], nodes.system_message): + msg = __('Invalid caption: %s' % parsed[0].astext()) + raise ValueError(msg) + elif isinstance(parsed[0], nodes.Element): + caption_node = nodes.caption(parsed[0].rawsource, '', + *parsed[0].children) + caption_node.source = literal_node.source + caption_node.line = literal_node.line + container_node += caption_node + container_node += literal_node + return container_node + else: + raise RuntimeError # never reached + + +class CodeBlock(SphinxDirective): + """ + Directive for a code block with special highlighting or line numbering + settings. + """ + + has_content = True + required_arguments = 0 + optional_arguments = 1 + final_argument_whitespace = False + option_spec = { + 'force': directives.flag, + 'linenos': directives.flag, + 'dedent': int, + 'lineno-start': int, + 'emphasize-lines': directives.unchanged_required, + 'caption': directives.unchanged_required, + 'class': directives.class_option, + 'name': directives.unchanged, + } + + def run(self) -> List[Node]: + document = self.state.document + code = '\n'.join(self.content) + location = self.state_machine.get_source_and_line(self.lineno) + + linespec = self.options.get('emphasize-lines') + if linespec: + try: + nlines = len(self.content) + hl_lines = parselinenos(linespec, nlines) + if any(i >= nlines for i in hl_lines): + logger.warning(__('line number spec is out of range(1-%d): %r') % + (nlines, self.options['emphasize-lines']), + location=location) + + hl_lines = [x + 1 for x in hl_lines if x < nlines] + except ValueError as err: + return [document.reporter.warning(err, line=self.lineno)] + else: + hl_lines = None + + if 'dedent' in self.options: + location = self.state_machine.get_source_and_line(self.lineno) + lines = code.split('\n') + lines = dedent_lines(lines, self.options['dedent'], location=location) + code = '\n'.join(lines) + + literal = nodes.literal_block(code, code) # type: Element + if 'linenos' in self.options or 'lineno-start' in self.options: + literal['linenos'] = True + literal['classes'] += self.options.get('class', []) + literal['force'] = 'force' in self.options + if self.arguments: + # highlight language specified + literal['language'] = self.arguments[0] + else: + # no highlight language specified. Then this directive refers the current + # highlight setting via ``highlight`` directive or ``highlight_language`` + # configuration. + literal['language'] = self.env.temp_data.get('highlight_language', + self.config.highlight_language) + extra_args = literal['highlight_args'] = {} + if hl_lines is not None: + extra_args['hl_lines'] = hl_lines + if 'lineno-start' in self.options: + extra_args['linenostart'] = self.options['lineno-start'] + self.set_source_info(literal) + + caption = self.options.get('caption') + if caption: + try: + literal = container_wrapper(self, literal, caption) + except ValueError as exc: + return [document.reporter.warning(exc, line=self.lineno)] + + # literal will be note_implicit_target that is linked from caption and numref. + # when options['name'] is provided, it should be primary ID. + self.add_name(literal) + + return [literal] + + +class LiteralIncludeReader: + INVALID_OPTIONS_PAIR = [ + ('lineno-match', 'lineno-start'), + ('lineno-match', 'append'), + ('lineno-match', 'prepend'), + ('start-after', 'start-at'), + ('end-before', 'end-at'), + ('diff', 'pyobject'), + ('diff', 'lineno-start'), + ('diff', 'lineno-match'), + ('diff', 'lines'), + ('diff', 'start-after'), + ('diff', 'end-before'), + ('diff', 'start-at'), + ('diff', 'end-at'), + ] + + def __init__(self, filename: str, options: Dict, config: Config) -> None: + self.filename = filename + self.options = options + self.encoding = options.get('encoding', config.source_encoding) + self.lineno_start = self.options.get('lineno-start', 1) + + self.parse_options() + + def parse_options(self) -> None: + for option1, option2 in self.INVALID_OPTIONS_PAIR: + if option1 in self.options and option2 in self.options: + raise ValueError(__('Cannot use both "%s" and "%s" options') % + (option1, option2)) + + def read_file(self, filename: str, location: Tuple[str, int] = None) -> List[str]: + try: + with open(filename, encoding=self.encoding, errors='strict') as f: + text = f.read() + if 'tab-width' in self.options: + text = text.expandtabs(self.options['tab-width']) + + return text.splitlines(True) + except OSError: + raise OSError(__('Include file %r not found or reading it failed') % filename) + except UnicodeError: + raise UnicodeError(__('Encoding %r used for reading included file %r seems to ' + 'be wrong, try giving an :encoding: option') % + (self.encoding, filename)) + + def read(self, location: Tuple[str, int] = None) -> Tuple[str, int]: + if 'diff' in self.options: + lines = self.show_diff() + else: + filters = [self.pyobject_filter, + self.start_filter, + self.end_filter, + self.lines_filter, + self.prepend_filter, + self.append_filter, + self.dedent_filter] + lines = self.read_file(self.filename, location=location) + for func in filters: + lines = func(lines, location=location) + + return ''.join(lines), len(lines) + + def show_diff(self, location: Tuple[str, int] = None) -> List[str]: + new_lines = self.read_file(self.filename) + old_filename = self.options.get('diff') + old_lines = self.read_file(old_filename) + diff = unified_diff(old_lines, new_lines, old_filename, self.filename) + return list(diff) + + def pyobject_filter(self, lines: List[str], location: Tuple[str, int] = None) -> List[str]: + pyobject = self.options.get('pyobject') + if pyobject: + from sphinx.pycode import ModuleAnalyzer + analyzer = ModuleAnalyzer.for_file(self.filename, '') + tags = analyzer.find_tags() + if pyobject not in tags: + raise ValueError(__('Object named %r not found in include file %r') % + (pyobject, self.filename)) + else: + start = tags[pyobject][1] + end = tags[pyobject][2] + lines = lines[start - 1:end] + if 'lineno-match' in self.options: + self.lineno_start = start + + return lines + + def lines_filter(self, lines: List[str], location: Tuple[str, int] = None) -> List[str]: + linespec = self.options.get('lines') + if linespec: + linelist = parselinenos(linespec, len(lines)) + if any(i >= len(lines) for i in linelist): + logger.warning(__('line number spec is out of range(1-%d): %r') % + (len(lines), linespec), location=location) + + if 'lineno-match' in self.options: + # make sure the line list is not "disjoint". + first = linelist[0] + if all(first + i == n for i, n in enumerate(linelist)): + self.lineno_start += linelist[0] + else: + raise ValueError(__('Cannot use "lineno-match" with a disjoint ' + 'set of "lines"')) + + lines = [lines[n] for n in linelist if n < len(lines)] + if lines == []: + raise ValueError(__('Line spec %r: no lines pulled from include file %r') % + (linespec, self.filename)) + + return lines + + def start_filter(self, lines: List[str], location: Tuple[str, int] = None) -> List[str]: + if 'start-at' in self.options: + start = self.options.get('start-at') + inclusive = False + elif 'start-after' in self.options: + start = self.options.get('start-after') + inclusive = True + else: + start = None + + if start: + for lineno, line in enumerate(lines): + if start in line: + if inclusive: + if 'lineno-match' in self.options: + self.lineno_start += lineno + 1 + + return lines[lineno + 1:] + else: + if 'lineno-match' in self.options: + self.lineno_start += lineno + + return lines[lineno:] + + if inclusive is True: + raise ValueError('start-after pattern not found: %s' % start) + else: + raise ValueError('start-at pattern not found: %s' % start) + + return lines + + def end_filter(self, lines: List[str], location: Tuple[str, int] = None) -> List[str]: + if 'end-at' in self.options: + end = self.options.get('end-at') + inclusive = True + elif 'end-before' in self.options: + end = self.options.get('end-before') + inclusive = False + else: + end = None + + if end: + for lineno, line in enumerate(lines): + if end in line: + if inclusive: + return lines[:lineno + 1] + else: + if lineno == 0: + pass # end-before ignores first line + else: + return lines[:lineno] + if inclusive is True: + raise ValueError('end-at pattern not found: %s' % end) + else: + raise ValueError('end-before pattern not found: %s' % end) + + return lines + + def prepend_filter(self, lines: List[str], location: Tuple[str, int] = None) -> List[str]: + prepend = self.options.get('prepend') + if prepend: + lines.insert(0, prepend + '\n') + + return lines + + def append_filter(self, lines: List[str], location: Tuple[str, int] = None) -> List[str]: + append = self.options.get('append') + if append: + lines.append(append + '\n') + + return lines + + def dedent_filter(self, lines: List[str], location: Tuple[str, int] = None) -> List[str]: + if 'dedent' in self.options: + return dedent_lines(lines, self.options.get('dedent'), location=location) + else: + return lines + + +class LiteralInclude(SphinxDirective): + """ + Like ``.. include:: :literal:``, but only warns if the include file is + not found, and does not raise errors. Also has several options for + selecting what to include. + """ + + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = { + 'dedent': int, + 'linenos': directives.flag, + 'lineno-start': int, + 'lineno-match': directives.flag, + 'tab-width': int, + 'language': directives.unchanged_required, + 'force': directives.flag, + 'encoding': directives.encoding, + 'pyobject': directives.unchanged_required, + 'lines': directives.unchanged_required, + 'start-after': directives.unchanged_required, + 'end-before': directives.unchanged_required, + 'start-at': directives.unchanged_required, + 'end-at': directives.unchanged_required, + 'prepend': directives.unchanged_required, + 'append': directives.unchanged_required, + 'emphasize-lines': directives.unchanged_required, + 'caption': directives.unchanged, + 'class': directives.class_option, + 'name': directives.unchanged, + 'diff': directives.unchanged_required, + } + + def run(self) -> List[Node]: + document = self.state.document + if not document.settings.file_insertion_enabled: + return [document.reporter.warning('File insertion disabled', + line=self.lineno)] + # convert options['diff'] to absolute path + if 'diff' in self.options: + _, path = self.env.relfn2path(self.options['diff']) + self.options['diff'] = path + + try: + location = self.state_machine.get_source_and_line(self.lineno) + rel_filename, filename = self.env.relfn2path(self.arguments[0]) + self.env.note_dependency(rel_filename) + + reader = LiteralIncludeReader(filename, self.options, self.config) + text, lines = reader.read(location=location) + + retnode = nodes.literal_block(text, text, source=filename) # type: Element + retnode['force'] = 'force' in self.options + self.set_source_info(retnode) + if self.options.get('diff'): # if diff is set, set udiff + retnode['language'] = 'udiff' + elif 'language' in self.options: + retnode['language'] = self.options['language'] + if ('linenos' in self.options or 'lineno-start' in self.options or + 'lineno-match' in self.options): + retnode['linenos'] = True + retnode['classes'] += self.options.get('class', []) + extra_args = retnode['highlight_args'] = {} + if 'emphasize-lines' in self.options: + hl_lines = parselinenos(self.options['emphasize-lines'], lines) + if any(i >= lines for i in hl_lines): + logger.warning(__('line number spec is out of range(1-%d): %r') % + (lines, self.options['emphasize-lines']), + location=location) + extra_args['hl_lines'] = [x + 1 for x in hl_lines if x < lines] + extra_args['linenostart'] = reader.lineno_start + + if 'caption' in self.options: + caption = self.options['caption'] or self.arguments[0] + retnode = container_wrapper(self, retnode, caption) + + # retnode will be note_implicit_target that is linked from caption and numref. + # when options['name'] is provided, it should be primary ID. + self.add_name(retnode) + + return [retnode] + except Exception as exc: + return [document.reporter.warning(exc, line=self.lineno)] + + +def setup(app: "Sphinx") -> Dict[str, Any]: + directives.register_directive('highlight', Highlight) + directives.register_directive('highlightlang', HighlightLang) + directives.register_directive('code-block', CodeBlock) + directives.register_directive('sourcecode', CodeBlock) + directives.register_directive('literalinclude', LiteralInclude) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/directives/other.py b/sphinx/sphinx/directives/other.py new file mode 100644 index 0000000..e4fcc0f --- /dev/null +++ b/sphinx/sphinx/directives/other.py @@ -0,0 +1,397 @@ +""" + sphinx.directives.other + ~~~~~~~~~~~~~~~~~~~~~~~ + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re +from typing import Any, Dict, List +from typing import cast + +from docutils import nodes +from docutils.nodes import Element, Node +from docutils.parsers.rst import directives +from docutils.parsers.rst.directives.admonitions import BaseAdmonition +from docutils.parsers.rst.directives.misc import Class +from docutils.parsers.rst.directives.misc import Include as BaseInclude + +from sphinx import addnodes +from sphinx.deprecation import RemovedInSphinx40Warning, deprecated_alias +from sphinx.domains.changeset import VersionChange # NOQA # for compatibility +from sphinx.locale import _ +from sphinx.util import url_re, docname_join +from sphinx.util.docutils import SphinxDirective +from sphinx.util.matching import Matcher, patfilter +from sphinx.util.nodes import explicit_title_re + +if False: + # For type annotation + from sphinx.application import Sphinx + + +glob_re = re.compile(r'.*[*?\[].*') + + +def int_or_nothing(argument: str) -> int: + if not argument: + return 999 + return int(argument) + + +class TocTree(SphinxDirective): + """ + Directive to notify Sphinx about the hierarchical structure of the docs, + and to include a table-of-contents like tree in the current document. + """ + has_content = True + required_arguments = 0 + optional_arguments = 0 + final_argument_whitespace = False + option_spec = { + 'maxdepth': int, + 'name': directives.unchanged, + 'caption': directives.unchanged_required, + 'glob': directives.flag, + 'hidden': directives.flag, + 'includehidden': directives.flag, + 'numbered': int_or_nothing, + 'titlesonly': directives.flag, + 'reversed': directives.flag, + } + + def run(self) -> List[Node]: + subnode = addnodes.toctree() + subnode['parent'] = self.env.docname + + # (title, ref) pairs, where ref may be a document, or an external link, + # and title may be None if the document's title is to be used + subnode['entries'] = [] + subnode['includefiles'] = [] + subnode['maxdepth'] = self.options.get('maxdepth', -1) + subnode['caption'] = self.options.get('caption') + subnode['glob'] = 'glob' in self.options + subnode['hidden'] = 'hidden' in self.options + subnode['includehidden'] = 'includehidden' in self.options + subnode['numbered'] = self.options.get('numbered', 0) + subnode['titlesonly'] = 'titlesonly' in self.options + self.set_source_info(subnode) + wrappernode = nodes.compound(classes=['toctree-wrapper']) + wrappernode.append(subnode) + self.add_name(wrappernode) + + ret = self.parse_content(subnode) + ret.append(wrappernode) + return ret + + def parse_content(self, toctree: addnodes.toctree) -> List[Node]: + suffixes = self.config.source_suffix + + # glob target documents + all_docnames = self.env.found_docs.copy() + all_docnames.remove(self.env.docname) # remove current document + + ret = [] # type: List[Node] + excluded = Matcher(self.config.exclude_patterns) + for entry in self.content: + if not entry: + continue + # look for explicit titles ("Some Title <document>") + explicit = explicit_title_re.match(entry) + if (toctree['glob'] and glob_re.match(entry) and + not explicit and not url_re.match(entry)): + patname = docname_join(self.env.docname, entry) + docnames = sorted(patfilter(all_docnames, patname)) + for docname in docnames: + all_docnames.remove(docname) # don't include it again + toctree['entries'].append((None, docname)) + toctree['includefiles'].append(docname) + if not docnames: + ret.append(self.state.document.reporter.warning( + 'toctree glob pattern %r didn\'t match any documents' + % entry, line=self.lineno)) + else: + if explicit: + ref = explicit.group(2) + title = explicit.group(1) + docname = ref + else: + ref = docname = entry + title = None + # remove suffixes (backwards compatibility) + for suffix in suffixes: + if docname.endswith(suffix): + docname = docname[:-len(suffix)] + break + # absolutize filenames + docname = docname_join(self.env.docname, docname) + if url_re.match(ref) or ref == 'self': + toctree['entries'].append((title, ref)) + elif docname not in self.env.found_docs: + if excluded(self.env.doc2path(docname, None)): + message = 'toctree contains reference to excluded document %r' + else: + message = 'toctree contains reference to nonexisting document %r' + + ret.append(self.state.document.reporter.warning(message % docname, + line=self.lineno)) + self.env.note_reread() + else: + all_docnames.discard(docname) + toctree['entries'].append((title, docname)) + toctree['includefiles'].append(docname) + + # entries contains all entries (self references, external links etc.) + if 'reversed' in self.options: + toctree['entries'] = list(reversed(toctree['entries'])) + toctree['includefiles'] = list(reversed(toctree['includefiles'])) + + return ret + + +class Author(SphinxDirective): + """ + Directive to give the name of the author of the current document + or section. Shown in the output only if the show_authors option is on. + """ + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + if not self.config.show_authors: + return [] + para = nodes.paragraph(translatable=False) # type: Element + emph = nodes.emphasis() + para += emph + if self.name == 'sectionauthor': + text = _('Section author: ') + elif self.name == 'moduleauthor': + text = _('Module author: ') + elif self.name == 'codeauthor': + text = _('Code author: ') + else: + text = _('Author: ') + emph += nodes.Text(text, text) + inodes, messages = self.state.inline_text(self.arguments[0], self.lineno) + emph.extend(inodes) + + ret = [para] # type: List[Node] + ret += messages + return ret + + +class SeeAlso(BaseAdmonition): + """ + An admonition mentioning things to look at as reference. + """ + node_class = addnodes.seealso + + +class TabularColumns(SphinxDirective): + """ + Directive to give an explicit tabulary column definition to LaTeX. + """ + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + node = addnodes.tabular_col_spec() + node['spec'] = self.arguments[0] + self.set_source_info(node) + return [node] + + +class Centered(SphinxDirective): + """ + Directive to create a centered line of bold text. + """ + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + if not self.arguments: + return [] + subnode = addnodes.centered() # type: Element + inodes, messages = self.state.inline_text(self.arguments[0], self.lineno) + subnode.extend(inodes) + + ret = [subnode] # type: List[Node] + ret += messages + return ret + + +class Acks(SphinxDirective): + """ + Directive for a list of names. + """ + has_content = True + required_arguments = 0 + optional_arguments = 0 + final_argument_whitespace = False + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + node = addnodes.acks() + node.document = self.state.document + self.state.nested_parse(self.content, self.content_offset, node) + if len(node.children) != 1 or not isinstance(node.children[0], + nodes.bullet_list): + reporter = self.state.document.reporter + return [reporter.warning('.. acks content is not a list', line=self.lineno)] + return [node] + + +class HList(SphinxDirective): + """ + Directive for a list that gets compacted horizontally. + """ + has_content = True + required_arguments = 0 + optional_arguments = 0 + final_argument_whitespace = False + option_spec = { + 'columns': int, + } + + def run(self) -> List[Node]: + ncolumns = self.options.get('columns', 2) + node = nodes.paragraph() + node.document = self.state.document + self.state.nested_parse(self.content, self.content_offset, node) + if len(node.children) != 1 or not isinstance(node.children[0], + nodes.bullet_list): + reporter = self.state.document.reporter + return [reporter.warning('.. hlist content is not a list', line=self.lineno)] + fulllist = node.children[0] + # create a hlist node where the items are distributed + npercol, nmore = divmod(len(fulllist), ncolumns) + index = 0 + newnode = addnodes.hlist() + for column in range(ncolumns): + endindex = index + ((npercol + 1) if column < nmore else npercol) + bullet_list = nodes.bullet_list() + bullet_list += fulllist.children[index:endindex] + newnode += addnodes.hlistcol('', bullet_list) + index = endindex + return [newnode] + + +class Only(SphinxDirective): + """ + Directive to only include text if the given tag(s) are enabled. + """ + has_content = True + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + node = addnodes.only() + node.document = self.state.document + self.set_source_info(node) + node['expr'] = self.arguments[0] + + # Same as util.nested_parse_with_titles but try to handle nested + # sections which should be raised higher up the doctree. + memo = self.state.memo # type: Any + surrounding_title_styles = memo.title_styles + surrounding_section_level = memo.section_level + memo.title_styles = [] + memo.section_level = 0 + try: + self.state.nested_parse(self.content, self.content_offset, + node, match_titles=True) + title_styles = memo.title_styles + if (not surrounding_title_styles or + not title_styles or + title_styles[0] not in surrounding_title_styles or + not self.state.parent): + # No nested sections so no special handling needed. + return [node] + # Calculate the depths of the current and nested sections. + current_depth = 0 + parent = self.state.parent + while parent: + current_depth += 1 + parent = parent.parent + current_depth -= 2 + title_style = title_styles[0] + nested_depth = len(surrounding_title_styles) + if title_style in surrounding_title_styles: + nested_depth = surrounding_title_styles.index(title_style) + # Use these depths to determine where the nested sections should + # be placed in the doctree. + n_sects_to_raise = current_depth - nested_depth + 1 + parent = cast(nodes.Element, self.state.parent) + for i in range(n_sects_to_raise): + if parent.parent: + parent = parent.parent + parent.append(node) + return [] + finally: + memo.title_styles = surrounding_title_styles + memo.section_level = surrounding_section_level + + +class Include(BaseInclude, SphinxDirective): + """ + Like the standard "Include" directive, but interprets absolute paths + "correctly", i.e. relative to source directory. + """ + + def run(self) -> List[Node]: + if self.arguments[0].startswith('<') and \ + self.arguments[0].endswith('>'): + # docutils "standard" includes, do not do path processing + return super().run() + rel_filename, filename = self.env.relfn2path(self.arguments[0]) + self.arguments[0] = filename + self.env.note_included(filename) + return super().run() + + +# Import old modules here for compatibility +from sphinx.domains.index import IndexDirective # NOQA + +deprecated_alias('sphinx.directives.other', + { + 'Index': IndexDirective, + }, + RemovedInSphinx40Warning) + + +def setup(app: "Sphinx") -> Dict[str, Any]: + directives.register_directive('toctree', TocTree) + directives.register_directive('sectionauthor', Author) + directives.register_directive('moduleauthor', Author) + directives.register_directive('codeauthor', Author) + directives.register_directive('seealso', SeeAlso) + directives.register_directive('tabularcolumns', TabularColumns) + directives.register_directive('centered', Centered) + directives.register_directive('acks', Acks) + directives.register_directive('hlist', HList) + directives.register_directive('only', Only) + directives.register_directive('include', Include) + + # register the standard rst class directive under a different name + # only for backwards compatibility now + directives.register_directive('cssclass', Class) + # new standard name when default-domain with "class" is in effect + directives.register_directive('rst-class', Class) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/directives/patches.py b/sphinx/sphinx/directives/patches.py new file mode 100644 index 0000000..4b73a79 --- /dev/null +++ b/sphinx/sphinx/directives/patches.py @@ -0,0 +1,222 @@ +""" + sphinx.directives.patches + ~~~~~~~~~~~~~~~~~~~~~~~~~ + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Any, Dict, List, Tuple +from typing import cast + +from docutils import nodes +from docutils.nodes import Node, make_id, system_message +from docutils.parsers.rst import directives +from docutils.parsers.rst.directives import images, html, tables + +from sphinx import addnodes +from sphinx.directives import optional_int +from sphinx.domains.math import MathDomain +from sphinx.util.docutils import SphinxDirective +from sphinx.util.nodes import set_source_info + +if False: + # For type annotation + from sphinx.application import Sphinx + + +class Figure(images.Figure): + """The figure directive which applies `:name:` option to the figure node + instead of the image node. + """ + + def run(self) -> List[Node]: + name = self.options.pop('name', None) + result = super().run() + if len(result) == 2 or isinstance(result[0], nodes.system_message): + return result + + assert len(result) == 1 + figure_node = cast(nodes.figure, result[0]) + if name: + # set ``name`` to figure_node if given + self.options['name'] = name + self.add_name(figure_node) + + # copy lineno from image node + if figure_node.line is None and len(figure_node) == 2: + caption = cast(nodes.caption, figure_node[1]) + figure_node.line = caption.line + + return [figure_node] + + +class Meta(html.Meta, SphinxDirective): + def run(self) -> List[Node]: + result = super().run() + for node in result: + if (isinstance(node, nodes.pending) and + isinstance(node.details['nodes'][0], html.MetaBody.meta)): + meta = node.details['nodes'][0] + meta.source = self.env.doc2path(self.env.docname) + meta.line = self.lineno + meta.rawcontent = meta['content'] # type: ignore + + # docutils' meta nodes aren't picklable because the class is nested + meta.__class__ = addnodes.meta # type: ignore + + return result + + +class RSTTable(tables.RSTTable): + """The table directive which sets source and line information to its caption. + + Only for docutils-0.13 or older version.""" + + def make_title(self) -> Tuple[nodes.title, List[system_message]]: + title, message = super().make_title() + if title: + set_source_info(self, title) + + return title, message + + +class CSVTable(tables.CSVTable): + """The csv-table directive which sets source and line information to its caption. + + Only for docutils-0.13 or older version.""" + + def make_title(self) -> Tuple[nodes.title, List[system_message]]: + title, message = super().make_title() + if title: + set_source_info(self, title) + + return title, message + + +class ListTable(tables.ListTable): + """The list-table directive which sets source and line information to its caption. + + Only for docutils-0.13 or older version.""" + + def make_title(self) -> Tuple[nodes.title, List[system_message]]: + title, message = super().make_title() + if title: + set_source_info(self, title) + + return title, message + + +class Code(SphinxDirective): + """Parse and mark up content of a code block. + + This is compatible with docutils' :rst:dir:`code` directive. + """ + optional_arguments = 1 + option_spec = { + 'class': directives.class_option, + 'force': directives.flag, + 'name': directives.unchanged, + 'number-lines': optional_int, + } + has_content = True + + def run(self) -> List[Node]: + self.assert_has_content() + + code = '\n'.join(self.content) + node = nodes.literal_block(code, code, + classes=self.options.get('classes', []), + force='force' in self.options, + highlight_args={}) + self.add_name(node) + set_source_info(self, node) + + if self.arguments: + # highlight language specified + node['language'] = self.arguments[0] + else: + # no highlight language specified. Then this directive refers the current + # highlight setting via ``highlight`` directive or ``highlight_language`` + # configuration. + node['language'] = self.env.temp_data.get('highlight_language', + self.config.highlight_language) + + if 'number-lines' in self.options: + node['linenos'] = True + + # if number given, treat as lineno-start. + if self.options['number-lines']: + node['highlight_args']['linenostart'] = self.options['number-lines'] + + return [node] + + +class MathDirective(SphinxDirective): + has_content = True + required_arguments = 0 + optional_arguments = 1 + final_argument_whitespace = True + option_spec = { + 'label': directives.unchanged, + 'name': directives.unchanged, + 'class': directives.class_option, + 'nowrap': directives.flag, + } + + def run(self) -> List[Node]: + latex = '\n'.join(self.content) + if self.arguments and self.arguments[0]: + latex = self.arguments[0] + '\n\n' + latex + label = self.options.get('label', self.options.get('name')) + node = nodes.math_block(latex, latex, + classes=self.options.get('class', []), + docname=self.env.docname, + number=None, + label=label, + nowrap='nowrap' in self.options) + self.add_name(node) + self.set_source_info(node) + + ret = [node] # type: List[Node] + self.add_target(ret) + return ret + + def add_target(self, ret: List[Node]) -> None: + node = cast(nodes.math_block, ret[0]) + + # assign label automatically if math_number_all enabled + if node['label'] == '' or (self.config.math_number_all and not node['label']): + seq = self.env.new_serialno('sphinx.ext.math#equations') + node['label'] = "%s:%d" % (self.env.docname, seq) + + # no targets and numbers are needed + if not node['label']: + return + + # register label to domain + domain = cast(MathDomain, self.env.get_domain('math')) + domain.note_equation(self.env.docname, node['label'], location=node) + node['number'] = domain.get_equation_number_for(node['label']) + + # add target node + node_id = make_id('equation-%s' % node['label']) + target = nodes.target('', '', ids=[node_id]) + self.state.document.note_explicit_target(target) + ret.insert(0, target) + + +def setup(app: "Sphinx") -> Dict[str, Any]: + directives.register_directive('figure', Figure) + directives.register_directive('meta', Meta) + directives.register_directive('table', RSTTable) + directives.register_directive('csv-table', CSVTable) + directives.register_directive('list-table', ListTable) + directives.register_directive('code', Code) + directives.register_directive('math', MathDirective) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/domains/__init__.py b/sphinx/sphinx/domains/__init__.py new file mode 100644 index 0000000..11b3a46 --- /dev/null +++ b/sphinx/sphinx/domains/__init__.py @@ -0,0 +1,402 @@ +""" + sphinx.domains + ~~~~~~~~~~~~~~ + + Support for domains, which are groupings of description directives + and roles describing e.g. constructs of one programming language. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import copy +from typing import Any, Callable, Dict, Iterable, List, NamedTuple, Tuple, Union +from typing import cast + +from docutils import nodes +from docutils.nodes import Element, Node, system_message +from docutils.parsers.rst.states import Inliner + +from sphinx.addnodes import pending_xref +from sphinx.errors import SphinxError +from sphinx.locale import _ +from sphinx.roles import XRefRole +from sphinx.util.typing import RoleFunction + +if False: + # For type annotation + from typing import Type # for python3.5.1 + from sphinx.builders import Builder + from sphinx.environment import BuildEnvironment + + +class ObjType: + """ + An ObjType is the description for a type of object that a domain can + document. In the object_types attribute of Domain subclasses, object type + names are mapped to instances of this class. + + Constructor arguments: + + - *lname*: localized name of the type (do not include domain name) + - *roles*: all the roles that can refer to an object of this type + - *attrs*: object attributes -- currently only "searchprio" is known, + which defines the object's priority in the full-text search index, + see :meth:`Domain.get_objects()`. + """ + + known_attrs = { + 'searchprio': 1, + } + + def __init__(self, lname: str, *roles: Any, **attrs: Any) -> None: + self.lname = lname + self.roles = roles # type: Tuple + self.attrs = self.known_attrs.copy() # type: Dict + self.attrs.update(attrs) + + +IndexEntry = NamedTuple('IndexEntry', [('name', str), + ('subtype', int), + ('docname', str), + ('anchor', str), + ('extra', str), + ('qualifier', str), + ('descr', str)]) + + +class Index: + """ + An Index is the description for a domain-specific index. To add an index to + a domain, subclass Index, overriding the three name attributes: + + * `name` is an identifier used for generating file names. + It is also used for a hyperlink target for the index. Therefore, users can + refer the index page using ``ref`` role and a string which is combined + domain name and ``name`` attribute (ex. ``:ref:`py-modindex```). + * `localname` is the section title for the index. + * `shortname` is a short name for the index, for use in the relation bar in + HTML output. Can be empty to disable entries in the relation bar. + + and providing a :meth:`generate()` method. Then, add the index class to + your domain's `indices` list. Extensions can add indices to existing + domains using :meth:`~sphinx.application.Sphinx.add_index_to_domain()`. + + .. versionchanged:: 3.0 + + Index pages can be referred by domain name and index name via + :rst:role:`ref` role. + """ + + name = None # type: str + localname = None # type: str + shortname = None # type: str + + def __init__(self, domain: "Domain") -> None: + if self.name is None or self.localname is None: + raise SphinxError('Index subclass %s has no valid name or localname' + % self.__class__.__name__) + self.domain = domain + + def generate(self, docnames: Iterable[str] = None + ) -> Tuple[List[Tuple[str, List[IndexEntry]]], bool]: + """Get entries for the index. + + If ``docnames`` is given, restrict to entries referring to these + docnames. + + The return value is a tuple of ``(content, collapse)``: + + ``collapse`` + A boolean that determines if sub-entries should start collapsed (for + output formats that support collapsing sub-entries). + + ``content``: + A sequence of ``(letter, entries)`` tuples, where ``letter`` is the + "heading" for the given ``entries``, usually the starting letter, and + ``entries`` is a sequence of single entries. Each entry is a sequence + ``[name, subtype, docname, anchor, extra, qualifier, descr]``. The + items in this sequence have the following meaning: + + ``name`` + The name of the index entry to be displayed. + + ``subtype`` + The sub-entry related type. One of: + + ``0`` + A normal entry. + ``1`` + An entry with sub-entries. + ``2`` + A sub-entry. + + ``docname`` + *docname* where the entry is located. + + ``anchor`` + Anchor for the entry within ``docname`` + + ``extra`` + Extra info for the entry. + + ``qualifier`` + Qualifier for the description. + + ``descr`` + Description for the entry. + + Qualifier and description are not rendered for some output formats such + as LaTeX. + """ + raise NotImplementedError + + +class Domain: + """ + A Domain is meant to be a group of "object" description directives for + objects of a similar nature, and corresponding roles to create references to + them. Examples would be Python modules, classes, functions etc., elements + of a templating language, Sphinx roles and directives, etc. + + Each domain has a separate storage for information about existing objects + and how to reference them in `self.data`, which must be a dictionary. It + also must implement several functions that expose the object information in + a uniform way to parts of Sphinx that allow the user to reference or search + for objects in a domain-agnostic way. + + About `self.data`: since all object and cross-referencing information is + stored on a BuildEnvironment instance, the `domain.data` object is also + stored in the `env.domaindata` dict under the key `domain.name`. Before the + build process starts, every active domain is instantiated and given the + environment object; the `domaindata` dict must then either be nonexistent or + a dictionary whose 'version' key is equal to the domain class' + :attr:`data_version` attribute. Otherwise, `OSError` is raised and the + pickled environment is discarded. + """ + + #: domain name: should be short, but unique + name = '' + #: domain label: longer, more descriptive (used in messages) + label = '' + #: type (usually directive) name -> ObjType instance + object_types = {} # type: Dict[str, ObjType] + #: directive name -> directive class + directives = {} # type: Dict[str, Any] + #: role name -> role callable + roles = {} # type: Dict[str, Union[RoleFunction, XRefRole]] + #: a list of Index subclasses + indices = [] # type: List[Type[Index]] + #: role name -> a warning message if reference is missing + dangling_warnings = {} # type: Dict[str, str] + #: node_class -> (enum_node_type, title_getter) + enumerable_nodes = {} # type: Dict[Type[Node], Tuple[str, Callable]] + + #: data value for a fresh environment + initial_data = {} # type: Dict + #: data value + data = None # type: Dict + #: data version, bump this when the format of `self.data` changes + data_version = 0 + + def __init__(self, env: "BuildEnvironment") -> None: + self.env = env # type: BuildEnvironment + self._role_cache = {} # type: Dict[str, Callable] + self._directive_cache = {} # type: Dict[str, Callable] + self._role2type = {} # type: Dict[str, List[str]] + self._type2role = {} # type: Dict[str, str] + + # convert class variables to instance one (to enhance through API) + self.object_types = dict(self.object_types) + self.directives = dict(self.directives) + self.roles = dict(self.roles) + self.indices = list(self.indices) + + if self.name not in env.domaindata: + assert isinstance(self.initial_data, dict) + new_data = copy.deepcopy(self.initial_data) + new_data['version'] = self.data_version + self.data = env.domaindata[self.name] = new_data + else: + self.data = env.domaindata[self.name] + if self.data['version'] != self.data_version: + raise OSError('data of %r domain out of date' % self.label) + for name, obj in self.object_types.items(): + for rolename in obj.roles: + self._role2type.setdefault(rolename, []).append(name) + self._type2role[name] = obj.roles[0] if obj.roles else '' + self.objtypes_for_role = self._role2type.get # type: Callable[[str], List[str]] + self.role_for_objtype = self._type2role.get # type: Callable[[str], str] + + def setup(self) -> None: + """Set up domain object.""" + from sphinx.domains.std import StandardDomain + + # Add special hyperlink target for index pages (ex. py-modindex) + std = cast(StandardDomain, self.env.get_domain('std')) + for index in self.indices: + if index.name and index.localname: + docname = "%s-%s" % (self.name, index.name) + std.note_hyperlink_target(docname, docname, '', index.localname) + + def add_object_type(self, name: str, objtype: ObjType) -> None: + """Add an object type.""" + self.object_types[name] = objtype + if objtype.roles: + self._type2role[name] = objtype.roles[0] + else: + self._type2role[name] = '' + + for role in objtype.roles: + self._role2type.setdefault(role, []).append(name) + + def role(self, name: str) -> RoleFunction: + """Return a role adapter function that always gives the registered + role its full name ('domain:name') as the first argument. + """ + if name in self._role_cache: + return self._role_cache[name] + if name not in self.roles: + return None + fullname = '%s:%s' % (self.name, name) + + def role_adapter(typ: str, rawtext: str, text: str, lineno: int, + inliner: Inliner, options: Dict = {}, content: List[str] = [] + ) -> Tuple[List[Node], List[system_message]]: + return self.roles[name](fullname, rawtext, text, lineno, + inliner, options, content) + self._role_cache[name] = role_adapter + return role_adapter + + def directive(self, name: str) -> Callable: + """Return a directive adapter class that always gives the registered + directive its full name ('domain:name') as ``self.name``. + """ + if name in self._directive_cache: + return self._directive_cache[name] + if name not in self.directives: + return None + fullname = '%s:%s' % (self.name, name) + BaseDirective = self.directives[name] + + class DirectiveAdapter(BaseDirective): # type: ignore + def run(self) -> List[Node]: + self.name = fullname + return super().run() + self._directive_cache[name] = DirectiveAdapter + return DirectiveAdapter + + # methods that should be overwritten + + def clear_doc(self, docname: str) -> None: + """Remove traces of a document in the domain-specific inventories.""" + pass + + def merge_domaindata(self, docnames: List[str], otherdata: Dict) -> None: + """Merge in data regarding *docnames* from a different domaindata + inventory (coming from a subprocess in parallel builds). + """ + raise NotImplementedError('merge_domaindata must be implemented in %s ' + 'to be able to do parallel builds!' % + self.__class__) + + def process_doc(self, env: "BuildEnvironment", docname: str, + document: nodes.document) -> None: + """Process a document after it is read by the environment.""" + pass + + def check_consistency(self) -> None: + """Do consistency checks (**experimental**).""" + pass + + def process_field_xref(self, pnode: pending_xref) -> None: + """Process a pending xref created in a doc field. + For example, attach information about the current scope. + """ + pass + + def resolve_xref(self, env: "BuildEnvironment", fromdocname: str, builder: "Builder", + typ: str, target: str, node: pending_xref, contnode: Element + ) -> Element: + """Resolve the pending_xref *node* with the given *typ* and *target*. + + This method should return a new node, to replace the xref node, + containing the *contnode* which is the markup content of the + cross-reference. + + If no resolution can be found, None can be returned; the xref node will + then given to the :event:`missing-reference` event, and if that yields no + resolution, replaced by *contnode*. + + The method can also raise :exc:`sphinx.environment.NoUri` to suppress + the :event:`missing-reference` event being emitted. + """ + pass + + def resolve_any_xref(self, env: "BuildEnvironment", fromdocname: str, builder: "Builder", + target: str, node: pending_xref, contnode: Element + ) -> List[Tuple[str, Element]]: + """Resolve the pending_xref *node* with the given *target*. + + The reference comes from an "any" or similar role, which means that we + don't know the type. Otherwise, the arguments are the same as for + :meth:`resolve_xref`. + + The method must return a list (potentially empty) of tuples + ``('domain:role', newnode)``, where ``'domain:role'`` is the name of a + role that could have created the same reference, e.g. ``'py:func'``. + ``newnode`` is what :meth:`resolve_xref` would return. + + .. versionadded:: 1.3 + """ + raise NotImplementedError + + def get_objects(self) -> Iterable[Tuple[str, str, str, str, str, int]]: + """Return an iterable of "object descriptions". + + Object descriptions are tuples with six items: + + ``name`` + Fully qualified name. + + ``dispname`` + Name to display when searching/linking. + + ``type`` + Object type, a key in ``self.object_types``. + + ``docname`` + The document where it is to be found. + + ``anchor`` + The anchor name for the object. + + ``priority`` + How "important" the object is (determines placement in search + results). One of: + + ``1`` + Default priority (placed before full-text matches). + ``0`` + Object is important (placed before default-priority objects). + ``2`` + Object is unimportant (placed after full-text matches). + ``-1`` + Object should not show up in search at all. + """ + return [] + + def get_type_name(self, type: ObjType, primary: bool = False) -> str: + """Return full name for given ObjType.""" + if primary: + return type.lname + return _('%s %s') % (self.label, type.lname) + + def get_enumerable_node_type(self, node: Node) -> str: + """Get type of enumerable nodes (experimental).""" + enum_node_type, _ = self.enumerable_nodes.get(node.__class__, (None, None)) + return enum_node_type + + def get_full_qualified_name(self, node: Element) -> str: + """Return full qualified name for given node.""" + return None diff --git a/sphinx/sphinx/domains/c.py b/sphinx/sphinx/domains/c.py new file mode 100644 index 0000000..35641ec --- /dev/null +++ b/sphinx/sphinx/domains/c.py @@ -0,0 +1,3460 @@ +""" + sphinx.domains.c + ~~~~~~~~~~~~~~~~ + + The C language domain. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re +from typing import ( + Any, Callable, Dict, Generator, Iterator, List, Type, Tuple, Union +) +from typing import cast + +from docutils import nodes +from docutils.nodes import Element, Node, TextElement, system_message + +from sphinx import addnodes +from sphinx.addnodes import pending_xref +from sphinx.application import Sphinx +from sphinx.builders import Builder +from sphinx.directives import ObjectDescription +from sphinx.domains import Domain, ObjType +from sphinx.environment import BuildEnvironment +from sphinx.locale import _, __ +from sphinx.roles import SphinxRole, XRefRole +from sphinx.util import logging +from sphinx.util.cfamily import ( + NoOldIdError, ASTBaseBase, verify_description_mode, StringifyTransform, + BaseParser, DefinitionError, UnsupportedMultiCharacterCharLiteral, + identifier_re, anon_identifier_re, integer_literal_re, octal_literal_re, + hex_literal_re, binary_literal_re, float_literal_re, + char_literal_re +) +from sphinx.util.docfields import Field, TypedField +from sphinx.util.docutils import SphinxDirective +from sphinx.util.nodes import make_refnode + +logger = logging.getLogger(__name__) + +# https://en.cppreference.com/w/c/keyword +_keywords = [ + 'auto', 'break', 'case', 'char', 'const', 'continue', 'default', 'do', 'double', + 'else', 'enum', 'extern', 'float', 'for', 'goto', 'if', 'inline', 'int', 'long', + 'register', 'restrict', 'return', 'short', 'signed', 'sizeof', 'static', 'struct', + 'switch', 'typedef', 'union', 'unsigned', 'void', 'volatile', 'while', + '_Alignas', 'alignas', '_Alignof', 'alignof', '_Atomic', '_Bool', 'bool', + '_Complex', 'complex', '_Generic', '_Imaginary', 'imaginary', + '_Noreturn', 'noreturn', '_Static_assert', 'static_assert', + '_Thread_local', 'thread_local', +] + +# these are ordered by preceedence +_expression_bin_ops = [ + ['||', 'or'], + ['&&', 'and'], + ['|', 'bitor'], + ['^', 'xor'], + ['&', 'bitand'], + ['==', '!=', 'not_eq'], + ['<=', '>=', '<', '>'], + ['<<', '>>'], + ['+', '-'], + ['*', '/', '%'], + ['.*', '->*'] +] +_expression_unary_ops = ["++", "--", "*", "&", "+", "-", "!", "not", "~", "compl"] +_expression_assignment_ops = ["=", "*=", "/=", "%=", "+=", "-=", + ">>=", "<<=", "&=", "and_eq", "^=", "xor_eq", "|=", "or_eq"] + +_max_id = 1 +_id_prefix = [None, 'c.', 'Cv2.'] +# Ids are used in lookup keys which are used across pickled files, +# so when _max_id changes, make sure to update the ENV_VERSION. + +_string_re = re.compile(r"[LuU8]?('([^'\\]*(?:\\.[^'\\]*)*)'" + r'|"([^"\\]*(?:\\.[^"\\]*)*)")', re.S) + + +class _DuplicateSymbolError(Exception): + def __init__(self, symbol: "Symbol", declaration: "ASTDeclaration") -> None: + assert symbol + assert declaration + self.symbol = symbol + self.declaration = declaration + + def __str__(self) -> str: + return "Internal C duplicate symbol error:\n%s" % self.symbol.dump(0) + + +class ASTBase(ASTBaseBase): + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + raise NotImplementedError(repr(self)) + + +# Names +################################################################################ + +class ASTIdentifier(ASTBaseBase): + def __init__(self, identifier: str) -> None: + assert identifier is not None + assert len(identifier) != 0 + self.identifier = identifier + + def is_anon(self) -> bool: + return self.identifier[0] == '@' + + # and this is where we finally make a difference between __str__ and the display string + + def __str__(self) -> str: + return self.identifier + + def get_display_string(self) -> str: + return "[anonymous]" if self.is_anon() else self.identifier + + def describe_signature(self, signode: TextElement, mode: str, env: "BuildEnvironment", + prefix: str, symbol: "Symbol") -> None: + # note: slightly different signature of describe_signature due to the prefix + verify_description_mode(mode) + if mode == 'markType': + targetText = prefix + self.identifier + pnode = addnodes.pending_xref('', refdomain='c', + reftype='identifier', + reftarget=targetText, modname=None, + classname=None) + # key = symbol.get_lookup_key() + # pnode['c:parent_key'] = key + if self.is_anon(): + pnode += nodes.strong(text="[anonymous]") + else: + pnode += nodes.Text(self.identifier) + signode += pnode + elif mode == 'lastIsName': + if self.is_anon(): + signode += nodes.strong(text="[anonymous]") + else: + signode += addnodes.desc_name(self.identifier, self.identifier) + elif mode == 'noneIsName': + if self.is_anon(): + signode += nodes.strong(text="[anonymous]") + else: + signode += nodes.Text(self.identifier) + else: + raise Exception('Unknown description mode: %s' % mode) + + +class ASTNestedName(ASTBase): + def __init__(self, names: List[ASTIdentifier], rooted: bool) -> None: + assert len(names) > 0 + self.names = names + self.rooted = rooted + + @property + def name(self) -> "ASTNestedName": + return self + + def get_id(self, version: int) -> str: + return '.'.join(str(n) for n in self.names) + + def _stringify(self, transform: StringifyTransform) -> str: + res = '.'.join(transform(n) for n in self.names) + if self.rooted: + return '.' + res + else: + return res + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + # just print the name part, with template args, not template params + if mode == 'noneIsName': + signode += nodes.Text(str(self)) + elif mode == 'param': + name = str(self) + signode += nodes.emphasis(name, name) + elif mode == 'markType' or mode == 'lastIsName' or mode == 'markName': + # Each element should be a pending xref targeting the complete + # prefix. + prefix = '' + first = True + names = self.names[:-1] if mode == 'lastIsName' else self.names + # If lastIsName, then wrap all of the prefix in a desc_addname, + # else append directly to signode. + # TODO: also for C? + # NOTE: Breathe relies on the prefix being in the desc_addname node, + # so it can remove it in inner declarations. + dest = signode + if mode == 'lastIsName': + dest = addnodes.desc_addname() + for i in range(len(names)): + ident = names[i] + if not first: + dest += nodes.Text('.') + prefix += '.' + first = False + txt_ident = str(ident) + if txt_ident != '': + ident.describe_signature(dest, 'markType', env, prefix, symbol) + prefix += txt_ident + if mode == 'lastIsName': + if len(self.names) > 1: + dest += addnodes.desc_addname('.', '.') + signode += dest + self.names[-1].describe_signature(signode, mode, env, '', symbol) + else: + raise Exception('Unknown description mode: %s' % mode) + + +################################################################################ +# Expressions +################################################################################ + +class ASTExpression(ASTBase): + pass + + +# Primary expressions +################################################################################ + +class ASTLiteral(ASTExpression): + pass + + +class ASTBooleanLiteral(ASTLiteral): + def __init__(self, value: bool) -> None: + self.value = value + + def _stringify(self, transform: StringifyTransform) -> str: + if self.value: + return 'true' + else: + return 'false' + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text(str(self))) + + +class ASTNumberLiteral(ASTLiteral): + def __init__(self, data: str) -> None: + self.data = data + + def _stringify(self, transform: StringifyTransform) -> str: + return self.data + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + txt = str(self) + signode.append(nodes.Text(txt, txt)) + + +class ASTCharLiteral(ASTLiteral): + def __init__(self, prefix: str, data: str) -> None: + self.prefix = prefix # may be None when no prefix + self.data = data + decoded = data.encode().decode('unicode-escape') + if len(decoded) == 1: + self.value = ord(decoded) + else: + raise UnsupportedMultiCharacterCharLiteral(decoded) + + def _stringify(self, transform: StringifyTransform) -> str: + if self.prefix is None: + return "'" + self.data + "'" + else: + return self.prefix + "'" + self.data + "'" + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + txt = str(self) + signode.append(nodes.Text(txt, txt)) + + +class ASTStringLiteral(ASTLiteral): + def __init__(self, data: str) -> None: + self.data = data + + def _stringify(self, transform: StringifyTransform) -> str: + return self.data + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + txt = str(self) + signode.append(nodes.Text(txt, txt)) + + +class ASTIdExpression(ASTExpression): + def __init__(self, name: ASTNestedName): + # note: this class is basically to cast a nested name as an expression + self.name = name + + def _stringify(self, transform: StringifyTransform) -> str: + return transform(self.name) + + def get_id(self, version: int) -> str: + return self.name.get_id(version) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + self.name.describe_signature(signode, mode, env, symbol) + + +class ASTParenExpr(ASTExpression): + def __init__(self, expr): + self.expr = expr + + def _stringify(self, transform: StringifyTransform) -> str: + return '(' + transform(self.expr) + ')' + + def get_id(self, version: int) -> str: + return self.expr.get_id(version) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('(', '(')) + self.expr.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text(')', ')')) + + +# Postfix expressions +################################################################################ + +class ASTPostfixOp(ASTBase): + pass + + +class ASTPostfixCallExpr(ASTPostfixOp): + def __init__(self, lst: Union["ASTParenExprList", "ASTBracedInitList"]) -> None: + self.lst = lst + + def _stringify(self, transform: StringifyTransform) -> str: + return transform(self.lst) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + self.lst.describe_signature(signode, mode, env, symbol) + + +class ASTPostfixArray(ASTPostfixOp): + def __init__(self, expr: ASTExpression) -> None: + self.expr = expr + + def _stringify(self, transform: StringifyTransform) -> str: + return '[' + transform(self.expr) + ']' + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('[')) + self.expr.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text(']')) + + +class ASTPostfixInc(ASTPostfixOp): + def _stringify(self, transform: StringifyTransform) -> str: + return '++' + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('++')) + + +class ASTPostfixDec(ASTPostfixOp): + def _stringify(self, transform: StringifyTransform) -> str: + return '--' + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('--')) + + +class ASTPostfixMember(ASTPostfixOp): + def __init__(self, name): + self.name = name + + def _stringify(self, transform: StringifyTransform) -> str: + return '.' + transform(self.name) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('.')) + self.name.describe_signature(signode, 'noneIsName', env, symbol) + + +class ASTPostfixMemberOfPointer(ASTPostfixOp): + def __init__(self, name): + self.name = name + + def _stringify(self, transform: StringifyTransform) -> str: + return '->' + transform(self.name) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('->')) + self.name.describe_signature(signode, 'noneIsName', env, symbol) + + +class ASTPostfixExpr(ASTExpression): + def __init__(self, prefix: ASTExpression, postFixes: List[ASTPostfixOp]): + self.prefix = prefix + self.postFixes = postFixes + + def _stringify(self, transform: StringifyTransform) -> str: + res = [transform(self.prefix)] + for p in self.postFixes: + res.append(transform(p)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + self.prefix.describe_signature(signode, mode, env, symbol) + for p in self.postFixes: + p.describe_signature(signode, mode, env, symbol) + + +# Unary expressions +################################################################################ + +class ASTUnaryOpExpr(ASTExpression): + def __init__(self, op: str, expr: ASTExpression): + self.op = op + self.expr = expr + + def _stringify(self, transform: StringifyTransform) -> str: + if self.op[0] in 'cn': + return transform(self.op) + " " + transform(self.expr) + else: + return transform(self.op) + transform(self.expr) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text(self.op)) + if self.op[0] in 'cn': + signode.append(nodes.Text(" ")) + self.expr.describe_signature(signode, mode, env, symbol) + + +class ASTSizeofType(ASTExpression): + def __init__(self, typ): + self.typ = typ + + def _stringify(self, transform: StringifyTransform) -> str: + return "sizeof(" + transform(self.typ) + ")" + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('sizeof(')) + self.typ.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text(')')) + + +class ASTSizeofExpr(ASTExpression): + def __init__(self, expr: ASTExpression): + self.expr = expr + + def _stringify(self, transform: StringifyTransform) -> str: + return "sizeof " + transform(self.expr) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('sizeof ')) + self.expr.describe_signature(signode, mode, env, symbol) + + +class ASTAlignofExpr(ASTExpression): + def __init__(self, typ: "ASTType"): + self.typ = typ + + def _stringify(self, transform: StringifyTransform) -> str: + return "alignof(" + transform(self.typ) + ")" + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('alignof(')) + self.typ.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text(')')) + + +# Other expressions +################################################################################ + +class ASTCastExpr(ASTExpression): + def __init__(self, typ: "ASTType", expr: ASTExpression): + self.typ = typ + self.expr = expr + + def _stringify(self, transform: StringifyTransform) -> str: + res = ['('] + res.append(transform(self.typ)) + res.append(')') + res.append(transform(self.expr)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('(')) + self.typ.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text(')')) + self.expr.describe_signature(signode, mode, env, symbol) + + +class ASTBinOpExpr(ASTBase): + def __init__(self, exprs: List[ASTExpression], ops: List[str]): + assert len(exprs) > 0 + assert len(exprs) == len(ops) + 1 + self.exprs = exprs + self.ops = ops + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + res.append(transform(self.exprs[0])) + for i in range(1, len(self.exprs)): + res.append(' ') + res.append(self.ops[i - 1]) + res.append(' ') + res.append(transform(self.exprs[i])) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + self.exprs[0].describe_signature(signode, mode, env, symbol) + for i in range(1, len(self.exprs)): + signode.append(nodes.Text(' ')) + signode.append(nodes.Text(self.ops[i - 1])) + signode.append(nodes.Text(' ')) + self.exprs[i].describe_signature(signode, mode, env, symbol) + + +class ASTAssignmentExpr(ASTExpression): + def __init__(self, exprs: List[ASTExpression], ops: List[str]): + assert len(exprs) > 0 + assert len(exprs) == len(ops) + 1 + self.exprs = exprs + self.ops = ops + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + res.append(transform(self.exprs[0])) + for i in range(1, len(self.exprs)): + res.append(' ') + res.append(self.ops[i - 1]) + res.append(' ') + res.append(transform(self.exprs[i])) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + self.exprs[0].describe_signature(signode, mode, env, symbol) + for i in range(1, len(self.exprs)): + signode.append(nodes.Text(' ')) + signode.append(nodes.Text(self.ops[i - 1])) + signode.append(nodes.Text(' ')) + self.exprs[i].describe_signature(signode, mode, env, symbol) + + +class ASTFallbackExpr(ASTExpression): + def __init__(self, expr: str): + self.expr = expr + + def _stringify(self, transform: StringifyTransform) -> str: + return self.expr + + def get_id(self, version: int) -> str: + return str(self.expr) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode += nodes.Text(self.expr) + + +################################################################################ +# Types +################################################################################ + +class ASTTrailingTypeSpec(ASTBase): + pass + + +class ASTTrailingTypeSpecFundamental(ASTTrailingTypeSpec): + def __init__(self, name: str) -> None: + self.name = name + + def _stringify(self, transform: StringifyTransform) -> str: + return self.name + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode += nodes.Text(str(self.name)) + + +class ASTTrailingTypeSpecName(ASTTrailingTypeSpec): + def __init__(self, prefix: str, nestedName: ASTNestedName) -> None: + self.prefix = prefix + self.nestedName = nestedName + + @property + def name(self) -> ASTNestedName: + return self.nestedName + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + if self.prefix: + res.append(self.prefix) + res.append(' ') + res.append(transform(self.nestedName)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + if self.prefix: + signode += addnodes.desc_annotation(self.prefix, self.prefix) + signode += nodes.Text(' ') + self.nestedName.describe_signature(signode, mode, env, symbol=symbol) + + +class ASTFunctionParameter(ASTBase): + def __init__(self, arg: "ASTTypeWithInit", ellipsis: bool = False) -> None: + self.arg = arg + self.ellipsis = ellipsis + + def _stringify(self, transform: StringifyTransform) -> str: + if self.ellipsis: + return '...' + else: + return transform(self.arg) + + def describe_signature(self, signode: Any, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + if self.ellipsis: + signode += nodes.Text('...') + else: + self.arg.describe_signature(signode, mode, env, symbol=symbol) + + +class ASTParameters(ASTBase): + def __init__(self, args: List[ASTFunctionParameter]) -> None: + self.args = args + + @property + def function_params(self) -> List[ASTFunctionParameter]: + return self.args + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + res.append('(') + first = True + for a in self.args: + if not first: + res.append(', ') + first = False + res.append(str(a)) + res.append(')') + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + paramlist = addnodes.desc_parameterlist() + for arg in self.args: + param = addnodes.desc_parameter('', '', noemph=True) + if mode == 'lastIsName': # i.e., outer-function params + arg.describe_signature(param, 'param', env, symbol=symbol) + else: + arg.describe_signature(param, 'markType', env, symbol=symbol) + paramlist += param + signode += paramlist + + +class ASTDeclSpecsSimple(ASTBaseBase): + def __init__(self, storage: str, threadLocal: str, inline: bool, + restrict: bool, volatile: bool, const: bool, attrs: List[Any]) -> None: + self.storage = storage + self.threadLocal = threadLocal + self.inline = inline + self.restrict = restrict + self.volatile = volatile + self.const = const + self.attrs = attrs + + def mergeWith(self, other: "ASTDeclSpecsSimple") -> "ASTDeclSpecsSimple": + if not other: + return self + return ASTDeclSpecsSimple(self.storage or other.storage, + self.threadLocal or other.threadLocal, + self.inline or other.inline, + self.volatile or other.volatile, + self.const or other.const, + self.restrict or other.restrict, + self.attrs + other.attrs) + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] # type: List[str] + res.extend(transform(attr) for attr in self.attrs) + if self.storage: + res.append(self.storage) + if self.threadLocal: + res.append(self.threadLocal) + if self.inline: + res.append('inline') + if self.restrict: + res.append('restrict') + if self.volatile: + res.append('volatile') + if self.const: + res.append('const') + return ' '.join(res) + + def describe_signature(self, modifiers: List[Node]) -> None: + def _add(modifiers: List[Node], text: str) -> None: + if len(modifiers) > 0: + modifiers.append(nodes.Text(' ')) + modifiers.append(addnodes.desc_annotation(text, text)) + + for attr in self.attrs: + if len(modifiers) > 0: + modifiers.append(nodes.Text(' ')) + modifiers.append(attr.describe_signature(modifiers)) + if self.storage: + _add(modifiers, self.storage) + if self.threadLocal: + _add(modifiers, self.threadLocal) + if self.inline: + _add(modifiers, 'inline') + if self.restrict: + _add(modifiers, 'restrict') + if self.volatile: + _add(modifiers, 'volatile') + if self.const: + _add(modifiers, 'const') + + +class ASTDeclSpecs(ASTBase): + def __init__(self, outer: str, + leftSpecs: ASTDeclSpecsSimple, + rightSpecs: ASTDeclSpecsSimple, + trailing: ASTTrailingTypeSpec) -> None: + # leftSpecs and rightSpecs are used for output + # allSpecs are used for id generation TODO: remove? + self.outer = outer + self.leftSpecs = leftSpecs + self.rightSpecs = rightSpecs + self.allSpecs = self.leftSpecs.mergeWith(self.rightSpecs) + self.trailingTypeSpec = trailing + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] # type: List[str] + l = transform(self.leftSpecs) + if len(l) > 0: + res.append(l) + if self.trailingTypeSpec: + if len(res) > 0: + res.append(" ") + res.append(transform(self.trailingTypeSpec)) + r = str(self.rightSpecs) + if len(r) > 0: + if len(res) > 0: + res.append(" ") + res.append(r) + return "".join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + modifiers = [] # type: List[Node] + + def _add(modifiers: List[Node], text: str) -> None: + if len(modifiers) > 0: + modifiers.append(nodes.Text(' ')) + modifiers.append(addnodes.desc_annotation(text, text)) + + self.leftSpecs.describe_signature(modifiers) + + for m in modifiers: + signode += m + if self.trailingTypeSpec: + if len(modifiers) > 0: + signode += nodes.Text(' ') + self.trailingTypeSpec.describe_signature(signode, mode, env, + symbol=symbol) + modifiers = [] + self.rightSpecs.describe_signature(modifiers) + if len(modifiers) > 0: + signode += nodes.Text(' ') + for m in modifiers: + signode += m + + +# Declarator +################################################################################ + +class ASTArray(ASTBase): + def __init__(self, size: ASTExpression): + self.size = size + + def _stringify(self, transform: StringifyTransform) -> str: + if self.size: + return '[' + transform(self.size) + ']' + else: + return '[]' + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + signode.append(nodes.Text("[")) + if self.size: + self.size.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text("]")) + + +class ASTDeclarator(ASTBase): + @property + def name(self) -> ASTNestedName: + raise NotImplementedError(repr(self)) + + @property + def function_params(self) -> List[ASTFunctionParameter]: + raise NotImplementedError(repr(self)) + + def require_space_after_declSpecs(self) -> bool: + raise NotImplementedError(repr(self)) + + +class ASTDeclaratorNameParam(ASTDeclarator): + def __init__(self, declId: ASTNestedName, + arrayOps: List[ASTArray], param: ASTParameters) -> None: + self.declId = declId + self.arrayOps = arrayOps + self.param = param + + @property + def name(self) -> ASTNestedName: + return self.declId + + @property + def function_params(self) -> List[ASTFunctionParameter]: + return self.param.function_params + + # ------------------------------------------------------------------------ + + def require_space_after_declSpecs(self) -> bool: + return self.declId is not None + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + if self.declId: + res.append(transform(self.declId)) + for op in self.arrayOps: + res.append(transform(op)) + if self.param: + res.append(transform(self.param)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + if self.declId: + self.declId.describe_signature(signode, mode, env, symbol) + for op in self.arrayOps: + op.describe_signature(signode, mode, env, symbol) + if self.param: + self.param.describe_signature(signode, mode, env, symbol) + + +class ASTDeclaratorNameBitField(ASTDeclarator): + def __init__(self, declId: ASTNestedName, size: ASTExpression): + self.declId = declId + self.size = size + + @property + def name(self) -> ASTNestedName: + return self.declId + + # ------------------------------------------------------------------------ + + def require_space_after_declSpecs(self) -> bool: + return self.declId is not None + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + if self.declId: + res.append(transform(self.declId)) + res.append(" : ") + res.append(transform(self.size)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + if self.declId: + self.declId.describe_signature(signode, mode, env, symbol) + signode += nodes.Text(' : ', ' : ') + self.size.describe_signature(signode, mode, env, symbol) + + +class ASTDeclaratorPtr(ASTDeclarator): + def __init__(self, next: ASTDeclarator, restrict: bool, volatile: bool, const: bool, + attrs: Any) -> None: + assert next + self.next = next + self.restrict = restrict + self.volatile = volatile + self.const = const + self.attrs = attrs + + @property + def name(self) -> ASTNestedName: + return self.next.name + + @property + def function_params(self) -> List[ASTFunctionParameter]: + return self.next.function_params + + def require_space_after_declSpecs(self) -> bool: + return self.const or self.volatile or self.restrict or \ + len(self.attrs) > 0 or \ + self.next.require_space_after_declSpecs() + + def _stringify(self, transform: StringifyTransform) -> str: + res = ['*'] + for a in self.attrs: + res.append(transform(a)) + if len(self.attrs) > 0 and (self.restrict or self.volatile or self.const): + res.append(' ') + if self.restrict: + res.append('restrict') + if self.volatile: + if self.restrict: + res.append(' ') + res.append('volatile') + if self.const: + if self.restrict or self.volatile: + res.append(' ') + res.append('const') + if self.const or self.volatile or self.restrict or len(self.attrs) > 0: + if self.next.require_space_after_declSpecs(): + res.append(' ') + res.append(transform(self.next)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + signode += nodes.Text("*") + for a in self.attrs: + a.describe_signature(signode) + if len(self.attrs) > 0 and (self.restrict or self.volatile or self.const): + signode += nodes.Text(' ') + + def _add_anno(signode: TextElement, text: str) -> None: + signode += addnodes.desc_annotation(text, text) + + if self.restrict: + _add_anno(signode, 'restrict') + if self.volatile: + if self.restrict: + signode += nodes.Text(' ') + _add_anno(signode, 'volatile') + if self.const: + if self.restrict or self.volatile: + signode += nodes.Text(' ') + _add_anno(signode, 'const') + if self.const or self.volatile or self.restrict or len(self.attrs) > 0: + if self.next.require_space_after_declSpecs(): + signode += nodes.Text(' ') + self.next.describe_signature(signode, mode, env, symbol) + + +class ASTDeclaratorParen(ASTDeclarator): + def __init__(self, inner: ASTDeclarator, next: ASTDeclarator) -> None: + assert inner + assert next + self.inner = inner + self.next = next + # TODO: we assume the name and params are in inner + + @property + def name(self) -> ASTNestedName: + return self.inner.name + + @property + def function_params(self) -> List[ASTFunctionParameter]: + return self.inner.function_params + + def require_space_after_declSpecs(self) -> bool: + return True + + def _stringify(self, transform: StringifyTransform) -> str: + res = ['('] + res.append(transform(self.inner)) + res.append(')') + res.append(transform(self.next)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + signode += nodes.Text('(') + self.inner.describe_signature(signode, mode, env, symbol) + signode += nodes.Text(')') + self.next.describe_signature(signode, "noneIsName", env, symbol) + + +# Initializer +################################################################################ + +class ASTParenExprList(ASTBase): + def __init__(self, exprs: List[ASTExpression]) -> None: + self.exprs = exprs + + def _stringify(self, transform: StringifyTransform) -> str: + exprs = [transform(e) for e in self.exprs] + return '(%s)' % ', '.join(exprs) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + signode.append(nodes.Text('(')) + first = True + for e in self.exprs: + if not first: + signode.append(nodes.Text(', ')) + else: + first = False + e.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text(')')) + + +class ASTBracedInitList(ASTBase): + def __init__(self, exprs: List[ASTExpression], trailingComma: bool) -> None: + self.exprs = exprs + self.trailingComma = trailingComma + + def _stringify(self, transform: StringifyTransform) -> str: + exprs = [transform(e) for e in self.exprs] + trailingComma = ',' if self.trailingComma else '' + return '{%s%s}' % (', '.join(exprs), trailingComma) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + signode.append(nodes.Text('{')) + first = True + for e in self.exprs: + if not first: + signode.append(nodes.Text(', ')) + else: + first = False + e.describe_signature(signode, mode, env, symbol) + if self.trailingComma: + signode.append(nodes.Text(',')) + signode.append(nodes.Text('}')) + + +class ASTInitializer(ASTBase): + def __init__(self, value: Union[ASTBracedInitList, ASTExpression], + hasAssign: bool = True) -> None: + self.value = value + self.hasAssign = hasAssign + + def _stringify(self, transform: StringifyTransform) -> str: + val = transform(self.value) + if self.hasAssign: + return ' = ' + val + else: + return val + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + if self.hasAssign: + signode.append(nodes.Text(' = ')) + self.value.describe_signature(signode, 'markType', env, symbol) + + +class ASTType(ASTBase): + def __init__(self, declSpecs: ASTDeclSpecs, decl: ASTDeclarator) -> None: + assert declSpecs + assert decl + self.declSpecs = declSpecs + self.decl = decl + + @property + def name(self) -> ASTNestedName: + return self.decl.name + + @property + def function_params(self) -> List[ASTFunctionParameter]: + return self.decl.function_params + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + declSpecs = transform(self.declSpecs) + res.append(declSpecs) + if self.decl.require_space_after_declSpecs() and len(declSpecs) > 0: + res.append(' ') + res.append(transform(self.decl)) + return ''.join(res) + + def get_type_declaration_prefix(self) -> str: + if self.declSpecs.trailingTypeSpec: + return 'typedef' + else: + return 'type' + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + self.declSpecs.describe_signature(signode, 'markType', env, symbol) + if (self.decl.require_space_after_declSpecs() and + len(str(self.declSpecs)) > 0): + signode += nodes.Text(' ') + # for parameters that don't really declare new names we get 'markType', + # this should not be propagated, but be 'noneIsName'. + if mode == 'markType': + mode = 'noneIsName' + self.decl.describe_signature(signode, mode, env, symbol) + + +class ASTTypeWithInit(ASTBase): + def __init__(self, type: ASTType, init: ASTInitializer) -> None: + self.type = type + self.init = init + + @property + def name(self) -> ASTNestedName: + return self.type.name + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + res.append(transform(self.type)) + if self.init: + res.append(transform(self.init)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + self.type.describe_signature(signode, mode, env, symbol) + if self.init: + self.init.describe_signature(signode, mode, env, symbol) + + +class ASTMacroParameter(ASTBase): + def __init__(self, arg: ASTNestedName, ellipsis: bool = False) -> None: + self.arg = arg + self.ellipsis = ellipsis + + def _stringify(self, transform: StringifyTransform) -> str: + if self.ellipsis: + return '...' + else: + return transform(self.arg) + + def describe_signature(self, signode: Any, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + if self.ellipsis: + signode += nodes.Text('...') + else: + self.arg.describe_signature(signode, mode, env, symbol=symbol) + + +class ASTMacro(ASTBase): + def __init__(self, ident: ASTNestedName, args: List[ASTMacroParameter]) -> None: + self.ident = ident + self.args = args + + @property + def name(self) -> ASTNestedName: + return self.ident + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + res.append(transform(self.ident)) + if self.args is not None: + res.append('(') + first = True + for arg in self.args: + if not first: + res.append(', ') + first = False + res.append(transform(arg)) + res.append(')') + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + self.ident.describe_signature(signode, mode, env, symbol) + if self.args is None: + return + paramlist = addnodes.desc_parameterlist() + for arg in self.args: + param = addnodes.desc_parameter('', '', noemph=True) + arg.describe_signature(param, 'param', env, symbol=symbol) + paramlist += param + signode += paramlist + + +class ASTStruct(ASTBase): + def __init__(self, name: ASTNestedName) -> None: + self.name = name + + def get_id(self, version: int, objectType: str, symbol: "Symbol") -> str: + return symbol.get_full_nested_name().get_id(version) + + def _stringify(self, transform: StringifyTransform) -> str: + return transform(self.name) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + self.name.describe_signature(signode, mode, env, symbol=symbol) + + +class ASTUnion(ASTBase): + def __init__(self, name: ASTNestedName) -> None: + self.name = name + + def get_id(self, version: int, objectType: str, symbol: "Symbol") -> str: + return symbol.get_full_nested_name().get_id(version) + + def _stringify(self, transform: StringifyTransform) -> str: + return transform(self.name) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + self.name.describe_signature(signode, mode, env, symbol=symbol) + + +class ASTEnum(ASTBase): + def __init__(self, name: ASTNestedName) -> None: + self.name = name + + def get_id(self, version: int, objectType: str, symbol: "Symbol") -> str: + return symbol.get_full_nested_name().get_id(version) + + def _stringify(self, transform: StringifyTransform) -> str: + return transform(self.name) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + self.name.describe_signature(signode, mode, env, symbol=symbol) + + +class ASTEnumerator(ASTBase): + def __init__(self, name: ASTNestedName, init: ASTInitializer) -> None: + self.name = name + self.init = init + + def get_id(self, version: int, objectType: str, symbol: "Symbol") -> str: + return symbol.get_full_nested_name().get_id(version) + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + res.append(transform(self.name)) + if self.init: + res.append(transform(self.init)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + self.name.describe_signature(signode, mode, env, symbol) + if self.init: + self.init.describe_signature(signode, 'markType', env, symbol) + + +class ASTDeclaration(ASTBaseBase): + def __init__(self, objectType: str, directiveType: str, declaration: Any) -> None: + self.objectType = objectType + self.directiveType = directiveType + self.declaration = declaration + + self.symbol = None # type: Symbol + # set by CObject._add_enumerator_to_parent + self.enumeratorScopedSymbol = None # type: Symbol + + @property + def name(self) -> ASTNestedName: + return self.declaration.name + + @property + def function_params(self) -> List[ASTFunctionParameter]: + if self.objectType != 'function': + return None + return self.declaration.function_params + + def get_id(self, version: int, prefixed: bool = True) -> str: + if self.objectType == 'enumerator' and self.enumeratorScopedSymbol: + return self.enumeratorScopedSymbol.declaration.get_id(version, prefixed) + id_ = self.symbol.get_full_nested_name().get_id(version) + if prefixed: + return _id_prefix[version] + id_ + else: + return id_ + + def get_newest_id(self) -> str: + return self.get_id(_max_id, True) + + def _stringify(self, transform: StringifyTransform) -> str: + return transform(self.declaration) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", options: Dict) -> None: + verify_description_mode(mode) + assert self.symbol + # The caller of the domain added a desc_signature node. + # Always enable multiline: + signode['is_multiline'] = True + # Put each line in a desc_signature_line node. + mainDeclNode = addnodes.desc_signature_line() + mainDeclNode.sphinx_line_type = 'declarator' + mainDeclNode['add_permalink'] = not self.symbol.isRedeclaration + signode += mainDeclNode + + if self.objectType == 'member': + pass + elif self.objectType == 'function': + pass + elif self.objectType == 'macro': + pass + elif self.objectType == 'struct': + mainDeclNode += addnodes.desc_annotation('struct ', 'struct ') + elif self.objectType == 'union': + mainDeclNode += addnodes.desc_annotation('union ', 'union ') + elif self.objectType == 'enum': + mainDeclNode += addnodes.desc_annotation('enum ', 'enum ') + elif self.objectType == 'enumerator': + mainDeclNode += addnodes.desc_annotation('enumerator ', 'enumerator ') + elif self.objectType == 'type': + prefix = self.declaration.get_type_declaration_prefix() + prefix += ' ' + mainDeclNode += addnodes.desc_annotation(prefix, prefix) + else: + assert False + self.declaration.describe_signature(mainDeclNode, mode, env, self.symbol) + + +class SymbolLookupResult: + def __init__(self, symbols: Iterator["Symbol"], parentSymbol: "Symbol", + ident: ASTIdentifier) -> None: + self.symbols = symbols + self.parentSymbol = parentSymbol + self.ident = ident + + +class LookupKey: + def __init__(self, data: List[Tuple[ASTIdentifier, str]]) -> None: + self.data = data + + def __str__(self) -> str: + return '[{}]'.format(', '.join("({}, {})".format( + ident, id_) for ident, id_ in self.data)) + + +class Symbol: + debug_indent = 0 + debug_indent_string = " " + debug_lookup = False + debug_show_tree = False + + @staticmethod + def debug_print(*args: Any) -> None: + print(Symbol.debug_indent_string * Symbol.debug_indent, end="") + print(*args) + + def _assert_invariants(self) -> None: + if not self.parent: + # parent == None means global scope, so declaration means a parent + assert not self.declaration + assert not self.docname + else: + if self.declaration: + assert self.docname + + def __setattr__(self, key: str, value: Any) -> None: + if key == "children": + assert False + else: + return super().__setattr__(key, value) + + def __init__(self, parent: "Symbol", ident: ASTIdentifier, + declaration: ASTDeclaration, docname: str) -> None: + self.parent = parent + # declarations in a single directive are linked together + self.siblingAbove = None # type: Symbol + self.siblingBelow = None # type: Symbol + self.ident = ident + self.declaration = declaration + self.docname = docname + self.isRedeclaration = False + self._assert_invariants() + + # Remember to modify Symbol.remove if modifications to the parent change. + self._children = [] # type: List[Symbol] + self._anonChildren = [] # type: List[Symbol] + # note: _children includes _anonChildren + if self.parent: + self.parent._children.append(self) + if self.declaration: + self.declaration.symbol = self + + # Do symbol addition after self._children has been initialised. + self._add_function_params() + + def _fill_empty(self, declaration: ASTDeclaration, docname: str) -> None: + self._assert_invariants() + assert not self.declaration + assert not self.docname + assert declaration + assert docname + self.declaration = declaration + self.declaration.symbol = self + self.docname = docname + self._assert_invariants() + # and symbol addition should be done as well + self._add_function_params() + + def _add_function_params(self) -> None: + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("_add_function_params:") + # Note: we may be called from _fill_empty, so the symbols we want + # to add may actually already be present (as empty symbols). + + # add symbols for function parameters, if any + if self.declaration is not None and self.declaration.function_params is not None: + for p in self.declaration.function_params: + if p.arg is None: + continue + nn = p.arg.name + if nn is None: + continue + # (comparing to the template params: we have checked that we are a declaration) + decl = ASTDeclaration('functionParam', None, p) + assert not nn.rooted + assert len(nn.names) == 1 + self._add_symbols(nn, decl, self.docname) + if Symbol.debug_lookup: + Symbol.debug_indent -= 1 + + def remove(self) -> None: + if self.parent is None: + return + assert self in self.parent._children + self.parent._children.remove(self) + self.parent = None + + def clear_doc(self, docname: str) -> None: + newChildren = [] # type: List[Symbol] + for sChild in self._children: + sChild.clear_doc(docname) + if sChild.declaration and sChild.docname == docname: + sChild.declaration = None + sChild.docname = None + if sChild.siblingAbove is not None: + sChild.siblingAbove.siblingBelow = sChild.siblingBelow + if sChild.siblingBelow is not None: + sChild.siblingBelow.siblingAbove = sChild.siblingAbove + sChild.siblingAbove = None + sChild.siblingBelow = None + newChildren.append(sChild) + self._children = newChildren + + def get_all_symbols(self) -> Iterator["Symbol"]: + yield self + for sChild in self._children: + for s in sChild.get_all_symbols(): + yield s + + @property + def children_recurse_anon(self) -> Iterator["Symbol"]: + for c in self._children: + yield c + if not c.ident.is_anon(): + continue + yield from c.children_recurse_anon + + def get_lookup_key(self) -> "LookupKey": + # The pickle files for the environment and for each document are distinct. + # The environment has all the symbols, but the documents has xrefs that + # must know their scope. A lookup key is essentially a specification of + # how to find a specific symbol. + symbols = [] + s = self + while s.parent: + symbols.append(s) + s = s.parent + symbols.reverse() + key = [] + for s in symbols: + if s.declaration is not None: + # TODO: do we need the ID? + key.append((s.ident, s.declaration.get_newest_id())) + else: + key.append((s.ident, None)) + return LookupKey(key) + + def get_full_nested_name(self) -> ASTNestedName: + symbols = [] + s = self + while s.parent: + symbols.append(s) + s = s.parent + symbols.reverse() + names = [] + for s in symbols: + names.append(s.ident) + return ASTNestedName(names, rooted=False) + + def _find_first_named_symbol(self, ident: ASTIdentifier, + matchSelf: bool, recurseInAnon: bool) -> "Symbol": + # TODO: further simplification from C++ to C + if Symbol.debug_lookup: + Symbol.debug_print("_find_first_named_symbol ->") + res = self._find_named_symbols(ident, matchSelf, recurseInAnon, + searchInSiblings=False) + try: + return next(res) + except StopIteration: + return None + + def _find_named_symbols(self, ident: ASTIdentifier, + matchSelf: bool, recurseInAnon: bool, + searchInSiblings: bool) -> Iterator["Symbol"]: + # TODO: further simplification from C++ to C + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("_find_named_symbols:") + Symbol.debug_indent += 1 + Symbol.debug_print("self:") + print(self.to_string(Symbol.debug_indent + 1), end="") + Symbol.debug_print("ident: ", ident) + Symbol.debug_print("matchSelf: ", matchSelf) + Symbol.debug_print("recurseInAnon: ", recurseInAnon) + Symbol.debug_print("searchInSiblings: ", searchInSiblings) + + def candidates() -> Generator["Symbol", None, None]: + s = self + if Symbol.debug_lookup: + Symbol.debug_print("searching in self:") + print(s.to_string(Symbol.debug_indent + 1), end="") + while True: + if matchSelf: + yield s + if recurseInAnon: + yield from s.children_recurse_anon + else: + yield from s._children + + if s.siblingAbove is None: + break + s = s.siblingAbove + if Symbol.debug_lookup: + Symbol.debug_print("searching in sibling:") + print(s.to_string(Symbol.debug_indent + 1), end="") + + for s in candidates(): + if Symbol.debug_lookup: + Symbol.debug_print("candidate:") + print(s.to_string(Symbol.debug_indent + 1), end="") + if s.ident == ident: + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("matches") + Symbol.debug_indent -= 3 + yield s + if Symbol.debug_lookup: + Symbol.debug_indent += 2 + if Symbol.debug_lookup: + Symbol.debug_indent -= 2 + + def _symbol_lookup(self, nestedName: ASTNestedName, + onMissingQualifiedSymbol: Callable[["Symbol", ASTIdentifier], "Symbol"], # NOQA + ancestorLookupType: str, matchSelf: bool, + recurseInAnon: bool, searchInSiblings: bool) -> SymbolLookupResult: + # TODO: further simplification from C++ to C + # ancestorLookupType: if not None, specifies the target type of the lookup + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("_symbol_lookup:") + Symbol.debug_indent += 1 + Symbol.debug_print("self:") + print(self.to_string(Symbol.debug_indent + 1), end="") + Symbol.debug_print("nestedName: ", nestedName) + Symbol.debug_print("ancestorLookupType:", ancestorLookupType) + Symbol.debug_print("matchSelf: ", matchSelf) + Symbol.debug_print("recurseInAnon: ", recurseInAnon) + Symbol.debug_print("searchInSiblings: ", searchInSiblings) + + names = nestedName.names + + # find the right starting point for lookup + parentSymbol = self + if nestedName.rooted: + while parentSymbol.parent: + parentSymbol = parentSymbol.parent + if ancestorLookupType is not None: + # walk up until we find the first identifier + firstName = names[0] + while parentSymbol.parent: + if parentSymbol.find_identifier(firstName, + matchSelf=matchSelf, + recurseInAnon=recurseInAnon, + searchInSiblings=searchInSiblings): + break + parentSymbol = parentSymbol.parent + + if Symbol.debug_lookup: + Symbol.debug_print("starting point:") + print(parentSymbol.to_string(Symbol.debug_indent + 1), end="") + + # and now the actual lookup + for ident in names[:-1]: + symbol = parentSymbol._find_first_named_symbol( + ident, matchSelf=matchSelf, recurseInAnon=recurseInAnon) + if symbol is None: + symbol = onMissingQualifiedSymbol(parentSymbol, ident) + if symbol is None: + if Symbol.debug_lookup: + Symbol.debug_indent -= 2 + return None + # We have now matched part of a nested name, and need to match more + # so even if we should matchSelf before, we definitely shouldn't + # even more. (see also issue #2666) + matchSelf = False + parentSymbol = symbol + + if Symbol.debug_lookup: + Symbol.debug_print("handle last name from:") + print(parentSymbol.to_string(Symbol.debug_indent + 1), end="") + + # handle the last name + ident = names[-1] + + symbols = parentSymbol._find_named_symbols( + ident, matchSelf=matchSelf, + recurseInAnon=recurseInAnon, + searchInSiblings=searchInSiblings) + if Symbol.debug_lookup: + symbols = list(symbols) # type: ignore + Symbol.debug_indent -= 2 + return SymbolLookupResult(symbols, parentSymbol, ident) + + def _add_symbols(self, nestedName: ASTNestedName, + declaration: ASTDeclaration, docname: str) -> "Symbol": + # TODO: further simplification from C++ to C + # Used for adding a whole path of symbols, where the last may or may not + # be an actual declaration. + + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("_add_symbols:") + Symbol.debug_indent += 1 + Symbol.debug_print("nn: ", nestedName) + Symbol.debug_print("decl: ", declaration) + Symbol.debug_print("doc: ", docname) + + def onMissingQualifiedSymbol(parentSymbol: "Symbol", ident: ASTIdentifier) -> "Symbol": + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("_add_symbols, onMissingQualifiedSymbol:") + Symbol.debug_indent += 1 + Symbol.debug_print("ident: ", ident) + Symbol.debug_indent -= 2 + return Symbol(parent=parentSymbol, ident=ident, + declaration=None, docname=None) + + lookupResult = self._symbol_lookup(nestedName, + onMissingQualifiedSymbol, + ancestorLookupType=None, + matchSelf=False, + recurseInAnon=False, + searchInSiblings=False) + assert lookupResult is not None # we create symbols all the way, so that can't happen + symbols = list(lookupResult.symbols) + if len(symbols) == 0: + if Symbol.debug_lookup: + Symbol.debug_print("_add_symbols, result, no symbol:") + Symbol.debug_indent += 1 + Symbol.debug_print("ident: ", lookupResult.ident) + Symbol.debug_print("declaration: ", declaration) + Symbol.debug_print("docname: ", docname) + Symbol.debug_indent -= 1 + symbol = Symbol(parent=lookupResult.parentSymbol, + ident=lookupResult.ident, + declaration=declaration, + docname=docname) + if Symbol.debug_lookup: + Symbol.debug_indent -= 2 + return symbol + + if Symbol.debug_lookup: + Symbol.debug_print("_add_symbols, result, symbols:") + Symbol.debug_indent += 1 + Symbol.debug_print("number symbols:", len(symbols)) + Symbol.debug_indent -= 1 + + if not declaration: + if Symbol.debug_lookup: + Symbol.debug_print("no delcaration") + Symbol.debug_indent -= 2 + # good, just a scope creation + # TODO: what if we have more than one symbol? + return symbols[0] + + noDecl = [] + withDecl = [] + dupDecl = [] + for s in symbols: + if s.declaration is None: + noDecl.append(s) + elif s.isRedeclaration: + dupDecl.append(s) + else: + withDecl.append(s) + if Symbol.debug_lookup: + Symbol.debug_print("#noDecl: ", len(noDecl)) + Symbol.debug_print("#withDecl:", len(withDecl)) + Symbol.debug_print("#dupDecl: ", len(dupDecl)) + + # With partial builds we may start with a large symbol tree stripped of declarations. + # Essentially any combination of noDecl, withDecl, and dupDecls seems possible. + # TODO: make partial builds fully work. What should happen when the primary symbol gets + # deleted, and other duplicates exist? The full document should probably be rebuild. + + # First check if one of those with a declaration matches. + # If it's a function, we need to compare IDs, + # otherwise there should be only one symbol with a declaration. + def makeCandSymbol() -> "Symbol": + if Symbol.debug_lookup: + Symbol.debug_print("begin: creating candidate symbol") + symbol = Symbol(parent=lookupResult.parentSymbol, + ident=lookupResult.ident, + declaration=declaration, + docname=docname) + if Symbol.debug_lookup: + Symbol.debug_print("end: creating candidate symbol") + return symbol + + if len(withDecl) == 0: + candSymbol = None + else: + candSymbol = makeCandSymbol() + + def handleDuplicateDeclaration(symbol: "Symbol", candSymbol: "Symbol") -> None: + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("redeclaration") + Symbol.debug_indent -= 1 + Symbol.debug_indent -= 2 + # Redeclaration of the same symbol. + # Let the new one be there, but raise an error to the client + # so it can use the real symbol as subscope. + # This will probably result in a duplicate id warning. + candSymbol.isRedeclaration = True + raise _DuplicateSymbolError(symbol, declaration) + + if declaration.objectType != "function": + assert len(withDecl) <= 1 + handleDuplicateDeclaration(withDecl[0], candSymbol) + # (not reachable) + + # a function, so compare IDs + candId = declaration.get_newest_id() + if Symbol.debug_lookup: + Symbol.debug_print("candId:", candId) + for symbol in withDecl: + oldId = symbol.declaration.get_newest_id() + if Symbol.debug_lookup: + Symbol.debug_print("oldId: ", oldId) + if candId == oldId: + handleDuplicateDeclaration(symbol, candSymbol) + # (not reachable) + # no candidate symbol found with matching ID + # if there is an empty symbol, fill that one + if len(noDecl) == 0: + if Symbol.debug_lookup: + Symbol.debug_print("no match, no empty, candSybmol is not None?:", candSymbol is not None) # NOQA + Symbol.debug_indent -= 2 + if candSymbol is not None: + return candSymbol + else: + return makeCandSymbol() + else: + if Symbol.debug_lookup: + Symbol.debug_print( + "no match, but fill an empty declaration, candSybmol is not None?:", + candSymbol is not None) # NOQA + Symbol.debug_indent -= 2 + if candSymbol is not None: + candSymbol.remove() + # assert len(noDecl) == 1 + # TODO: enable assertion when we at some point find out how to do cleanup + # for now, just take the first one, it should work fine ... right? + symbol = noDecl[0] + # If someone first opened the scope, and then later + # declares it, e.g, + # .. namespace:: Test + # .. namespace:: nullptr + # .. class:: Test + symbol._fill_empty(declaration, docname) + return symbol + + def merge_with(self, other: "Symbol", docnames: List[str], + env: "BuildEnvironment") -> None: + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("merge_with:") + assert other is not None + for otherChild in other._children: + ourChild = self._find_first_named_symbol( + ident=otherChild.ident, matchSelf=False, + recurseInAnon=False) + if ourChild is None: + # TODO: hmm, should we prune by docnames? + self._children.append(otherChild) + otherChild.parent = self + otherChild._assert_invariants() + continue + if otherChild.declaration and otherChild.docname in docnames: + if not ourChild.declaration: + ourChild._fill_empty(otherChild.declaration, otherChild.docname) + elif ourChild.docname != otherChild.docname: + name = str(ourChild.declaration) + msg = __("Duplicate declaration, also defined in '%s'.\n" + "Declaration is '%s'.") + msg = msg % (ourChild.docname, name) + logger.warning(msg, location=otherChild.docname) + else: + # Both have declarations, and in the same docname. + # This can apparently happen, it should be safe to + # just ignore it, right? + pass + ourChild.merge_with(otherChild, docnames, env) + if Symbol.debug_lookup: + Symbol.debug_indent -= 1 + + def add_name(self, nestedName: ASTNestedName) -> "Symbol": + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("add_name:") + res = self._add_symbols(nestedName, declaration=None, docname=None) + if Symbol.debug_lookup: + Symbol.debug_indent -= 1 + return res + + def add_declaration(self, declaration: ASTDeclaration, docname: str) -> "Symbol": + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("add_declaration:") + assert declaration + assert docname + nestedName = declaration.name + res = self._add_symbols(nestedName, declaration, docname) + if Symbol.debug_lookup: + Symbol.debug_indent -= 1 + return res + + def find_identifier(self, ident: ASTIdentifier, + matchSelf: bool, recurseInAnon: bool, searchInSiblings: bool + ) -> "Symbol": + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("find_identifier:") + Symbol.debug_indent += 1 + Symbol.debug_print("ident: ", ident) + Symbol.debug_print("matchSelf: ", matchSelf) + Symbol.debug_print("recurseInAnon: ", recurseInAnon) + Symbol.debug_print("searchInSiblings:", searchInSiblings) + print(self.to_string(Symbol.debug_indent + 1), end="") + Symbol.debug_indent -= 2 + current = self + while current is not None: + if Symbol.debug_lookup: + Symbol.debug_indent += 2 + Symbol.debug_print("trying:") + print(current.to_string(Symbol.debug_indent + 1), end="") + Symbol.debug_indent -= 2 + if matchSelf and current.ident == ident: + return current + children = current.children_recurse_anon if recurseInAnon else current._children + for s in children: + if s.ident == ident: + return s + if not searchInSiblings: + break + current = current.siblingAbove + return None + + def direct_lookup(self, key: "LookupKey") -> "Symbol": + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("direct_lookup:") + Symbol.debug_indent += 1 + s = self + for name, id_ in key.data: + res = None + for cand in s._children: + if cand.ident == name: + res = cand + break + s = res + if Symbol.debug_lookup: + Symbol.debug_print("name: ", name) + Symbol.debug_print("id: ", id_) + if s is not None: + print(s.to_string(Symbol.debug_indent + 1), end="") + else: + Symbol.debug_print("not found") + if s is None: + if Symbol.debug_lookup: + Symbol.debug_indent -= 2 + return None + if Symbol.debug_lookup: + Symbol.debug_indent -= 2 + return s + + def find_declaration(self, nestedName: ASTNestedName, typ: str, + matchSelf: bool, recurseInAnon: bool) -> "Symbol": + # templateShorthand: missing template parameter lists for templates is ok + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("find_declaration:") + + def onMissingQualifiedSymbol(parentSymbol: "Symbol", + ident: ASTIdentifier) -> "Symbol": + return None + + lookupResult = self._symbol_lookup(nestedName, + onMissingQualifiedSymbol, + ancestorLookupType=typ, + matchSelf=matchSelf, + recurseInAnon=recurseInAnon, + searchInSiblings=False) + if Symbol.debug_lookup: + Symbol.debug_indent -= 1 + if lookupResult is None: + return None + + symbols = list(lookupResult.symbols) + if len(symbols) == 0: + return None + return symbols[0] + + def to_string(self, indent: int) -> str: + res = [Symbol.debug_indent_string * indent] + if not self.parent: + res.append('::') + else: + if self.ident: + res.append(str(self.ident)) + else: + res.append(str(self.declaration)) + if self.declaration: + res.append(": ") + if self.isRedeclaration: + res.append('!!duplicate!! ') + res.append(str(self.declaration)) + if self.docname: + res.append('\t(') + res.append(self.docname) + res.append(')') + res.append('\n') + return ''.join(res) + + def dump(self, indent: int) -> str: + res = [self.to_string(indent)] + for c in self._children: + res.append(c.dump(indent + 1)) + return ''.join(res) + + +class DefinitionParser(BaseParser): + # those without signedness and size modifiers + # see https://en.cppreference.com/w/cpp/language/types + _simple_fundamental_types = ( + 'void', '_Bool', 'bool', 'char', 'int', 'float', 'double', + '__int64', + ) + + _prefix_keys = ('struct', 'enum', 'union') + + @property + def language(self) -> str: + return 'C' + + @property + def id_attributes(self): + return self.config.c_id_attributes + + @property + def paren_attributes(self): + return self.config.c_paren_attributes + + def _parse_string(self) -> str: + if self.current_char != '"': + return None + startPos = self.pos + self.pos += 1 + escape = False + while True: + if self.eof: + self.fail("Unexpected end during inside string.") + elif self.current_char == '"' and not escape: + self.pos += 1 + break + elif self.current_char == '\\': + escape = True + else: + escape = False + self.pos += 1 + return self.definition[startPos:self.pos] + + def _parse_literal(self) -> ASTLiteral: + # -> integer-literal + # | character-literal + # | floating-literal + # | string-literal + # | boolean-literal -> "false" | "true" + self.skip_ws() + if self.skip_word('true'): + return ASTBooleanLiteral(True) + if self.skip_word('false'): + return ASTBooleanLiteral(False) + for regex in [float_literal_re, binary_literal_re, hex_literal_re, + integer_literal_re, octal_literal_re]: + pos = self.pos + if self.match(regex): + while self.current_char in 'uUlLfF': + self.pos += 1 + return ASTNumberLiteral(self.definition[pos:self.pos]) + + string = self._parse_string() + if string is not None: + return ASTStringLiteral(string) + + # character-literal + if self.match(char_literal_re): + prefix = self.last_match.group(1) # may be None when no prefix + data = self.last_match.group(2) + try: + return ASTCharLiteral(prefix, data) + except UnicodeDecodeError as e: + self.fail("Can not handle character literal. Internal error was: %s" % e) + except UnsupportedMultiCharacterCharLiteral: + self.fail("Can not handle character literal" + " resulting in multiple decoded characters.") + return None + + def _parse_paren_expression(self) -> ASTExpression: + # "(" expression ")" + if self.current_char != '(': + return None + self.pos += 1 + res = self._parse_expression() + self.skip_ws() + if not self.skip_string(')'): + self.fail("Expected ')' in end of parenthesized expression.") + return ASTParenExpr(res) + + def _parse_primary_expression(self) -> ASTExpression: + # literal + # "(" expression ")" + # id-expression -> we parse this with _parse_nested_name + self.skip_ws() + res = self._parse_literal() # type: ASTExpression + if res is not None: + return res + res = self._parse_paren_expression() + if res is not None: + return res + nn = self._parse_nested_name() + if nn is not None: + return ASTIdExpression(nn) + return None + + def _parse_initializer_list(self, name: str, open: str, close: str + ) -> Tuple[List[ASTExpression], bool]: + # Parse open and close with the actual initializer-list inbetween + # -> initializer-clause '...'[opt] + # | initializer-list ',' initializer-clause '...'[opt] + # TODO: designators + self.skip_ws() + if not self.skip_string_and_ws(open): + return None, None + if self.skip_string(close): + return [], False + + exprs = [] + trailingComma = False + while True: + self.skip_ws() + expr = self._parse_expression() + self.skip_ws() + exprs.append(expr) + self.skip_ws() + if self.skip_string(close): + break + if not self.skip_string_and_ws(','): + self.fail("Error in %s, expected ',' or '%s'." % (name, close)) + if self.current_char == close and close == '}': + self.pos += 1 + trailingComma = True + break + return exprs, trailingComma + + def _parse_paren_expression_list(self) -> ASTParenExprList: + # -> '(' expression-list ')' + # though, we relax it to also allow empty parens + # as it's needed in some cases + # + # expression-list + # -> initializer-list + exprs, trailingComma = self._parse_initializer_list("parenthesized expression-list", + '(', ')') + if exprs is None: + return None + return ASTParenExprList(exprs) + + def _parse_braced_init_list(self) -> ASTBracedInitList: + # -> '{' initializer-list ','[opt] '}' + # | '{' '}' + exprs, trailingComma = self._parse_initializer_list("braced-init-list", '{', '}') + if exprs is None: + return None + return ASTBracedInitList(exprs, trailingComma) + + def _parse_postfix_expression(self) -> ASTPostfixExpr: + # -> primary + # | postfix "[" expression "]" + # | postfix "[" braced-init-list [opt] "]" + # | postfix "(" expression-list [opt] ")" + # | postfix "." id-expression + # | postfix "->" id-expression + # | postfix "++" + # | postfix "--" + + prefix = self._parse_primary_expression() + + # and now parse postfixes + postFixes = [] # type: List[ASTPostfixOp] + while True: + self.skip_ws() + if self.skip_string_and_ws('['): + expr = self._parse_expression() + self.skip_ws() + if not self.skip_string(']'): + self.fail("Expected ']' in end of postfix expression.") + postFixes.append(ASTPostfixArray(expr)) + continue + if self.skip_string('.'): + if self.skip_string('*'): + # don't steal the dot + self.pos -= 2 + elif self.skip_string('..'): + # don't steal the dot + self.pos -= 3 + else: + name = self._parse_nested_name() + postFixes.append(ASTPostfixMember(name)) + continue + if self.skip_string('->'): + if self.skip_string('*'): + # don't steal the arrow + self.pos -= 3 + else: + name = self._parse_nested_name() + postFixes.append(ASTPostfixMemberOfPointer(name)) + continue + if self.skip_string('++'): + postFixes.append(ASTPostfixInc()) + continue + if self.skip_string('--'): + postFixes.append(ASTPostfixDec()) + continue + lst = self._parse_paren_expression_list() + if lst is not None: + postFixes.append(ASTPostfixCallExpr(lst)) + continue + break + return ASTPostfixExpr(prefix, postFixes) + + def _parse_unary_expression(self) -> ASTExpression: + # -> postfix + # | "++" cast + # | "--" cast + # | unary-operator cast -> (* | & | + | - | ! | ~) cast + # The rest: + # | "sizeof" unary + # | "sizeof" "(" type-id ")" + # | "alignof" "(" type-id ")" + self.skip_ws() + for op in _expression_unary_ops: + # TODO: hmm, should we be able to backtrack here? + if op[0] in 'cn': + res = self.skip_word(op) + else: + res = self.skip_string(op) + if res: + expr = self._parse_cast_expression() + return ASTUnaryOpExpr(op, expr) + if self.skip_word_and_ws('sizeof'): + if self.skip_string_and_ws('('): + typ = self._parse_type(named=False) + self.skip_ws() + if not self.skip_string(')'): + self.fail("Expecting ')' to end 'sizeof'.") + return ASTSizeofType(typ) + expr = self._parse_unary_expression() + return ASTSizeofExpr(expr) + if self.skip_word_and_ws('alignof'): + if not self.skip_string_and_ws('('): + self.fail("Expecting '(' after 'alignof'.") + typ = self._parse_type(named=False) + self.skip_ws() + if not self.skip_string(')'): + self.fail("Expecting ')' to end 'alignof'.") + return ASTAlignofExpr(typ) + return self._parse_postfix_expression() + + def _parse_cast_expression(self) -> ASTExpression: + # -> unary | "(" type-id ")" cast + pos = self.pos + self.skip_ws() + if self.skip_string('('): + try: + typ = self._parse_type(False) + if not self.skip_string(')'): + self.fail("Expected ')' in cast expression.") + expr = self._parse_cast_expression() + return ASTCastExpr(typ, expr) + except DefinitionError as exCast: + self.pos = pos + try: + return self._parse_unary_expression() + except DefinitionError as exUnary: + errs = [] + errs.append((exCast, "If type cast expression")) + errs.append((exUnary, "If unary expression")) + raise self._make_multi_error(errs, "Error in cast expression.") + else: + return self._parse_unary_expression() + + def _parse_logical_or_expression(self) -> ASTExpression: + # logical-or = logical-and || + # logical-and = inclusive-or && + # inclusive-or = exclusive-or | + # exclusive-or = and ^ + # and = equality & + # equality = relational ==, != + # relational = shift <, >, <=, >= + # shift = additive <<, >> + # additive = multiplicative +, - + # multiplicative = pm *, /, % + # pm = cast .*, ->* + def _parse_bin_op_expr(self, opId): + if opId + 1 == len(_expression_bin_ops): + def parser() -> ASTExpression: + return self._parse_cast_expression() + else: + def parser() -> ASTExpression: + return _parse_bin_op_expr(self, opId + 1) + exprs = [] + ops = [] + exprs.append(parser()) + while True: + self.skip_ws() + pos = self.pos + oneMore = False + for op in _expression_bin_ops[opId]: + if op[0] in 'abcnox': + if not self.skip_word(op): + continue + else: + if not self.skip_string(op): + continue + if op == '&' and self.current_char == '&': + # don't split the && 'token' + self.pos -= 1 + # and btw. && has lower precedence, so we are done + break + try: + expr = parser() + exprs.append(expr) + ops.append(op) + oneMore = True + break + except DefinitionError: + self.pos = pos + if not oneMore: + break + return ASTBinOpExpr(exprs, ops) + return _parse_bin_op_expr(self, 0) + + def _parse_conditional_expression_tail(self, orExprHead: Any) -> ASTExpression: + # -> "?" expression ":" assignment-expression + return None + + def _parse_assignment_expression(self) -> ASTExpression: + # -> conditional-expression + # | logical-or-expression assignment-operator initializer-clause + # -> conditional-expression -> + # logical-or-expression + # | logical-or-expression "?" expression ":" assignment-expression + # | logical-or-expression assignment-operator initializer-clause + exprs = [] + ops = [] + orExpr = self._parse_logical_or_expression() + exprs.append(orExpr) + # TODO: handle ternary with _parse_conditional_expression_tail + while True: + oneMore = False + self.skip_ws() + for op in _expression_assignment_ops: + if op[0] in 'abcnox': + if not self.skip_word(op): + continue + else: + if not self.skip_string(op): + continue + expr = self._parse_logical_or_expression() + exprs.append(expr) + ops.append(op) + oneMore = True + if not oneMore: + break + return ASTAssignmentExpr(exprs, ops) + + def _parse_constant_expression(self) -> ASTExpression: + # -> conditional-expression + orExpr = self._parse_logical_or_expression() + # TODO: use _parse_conditional_expression_tail + return orExpr + + def _parse_expression(self) -> ASTExpression: + # -> assignment-expression + # | expression "," assignment-expresion + # TODO: actually parse the second production + return self._parse_assignment_expression() + + def _parse_expression_fallback( + self, end: List[str], + parser: Callable[[], ASTExpression], + allow: bool = True) -> ASTExpression: + # Stupidly "parse" an expression. + # 'end' should be a list of characters which ends the expression. + + # first try to use the provided parser + prevPos = self.pos + try: + return parser() + except DefinitionError as e: + # some places (e.g., template parameters) we really don't want to use fallback, + # and for testing we may want to globally disable it + if not allow or not self.allowFallbackExpressionParsing: + raise + self.warn("Parsing of expression failed. Using fallback parser." + " Error was:\n%s" % e) + self.pos = prevPos + # and then the fallback scanning + assert end is not None + self.skip_ws() + startPos = self.pos + if self.match(_string_re): + value = self.matched_text + else: + # TODO: add handling of more bracket-like things, and quote handling + brackets = {'(': ')', '{': '}', '[': ']'} + symbols = [] # type: List[str] + while not self.eof: + if (len(symbols) == 0 and self.current_char in end): + break + if self.current_char in brackets.keys(): + symbols.append(brackets[self.current_char]) + elif len(symbols) > 0 and self.current_char == symbols[-1]: + symbols.pop() + self.pos += 1 + if len(end) > 0 and self.eof: + self.fail("Could not find end of expression starting at %d." + % startPos) + value = self.definition[startPos:self.pos].strip() + return ASTFallbackExpr(value.strip()) + + def _parse_nested_name(self) -> ASTNestedName: + names = [] # type: List[Any] + + self.skip_ws() + rooted = False + if self.skip_string('.'): + rooted = True + while 1: + self.skip_ws() + if not self.match(identifier_re): + self.fail("Expected identifier in nested name.") + identifier = self.matched_text + # make sure there isn't a keyword + if identifier in _keywords: + self.fail("Expected identifier in nested name, " + "got keyword: %s" % identifier) + ident = ASTIdentifier(identifier) + names.append(ident) + + self.skip_ws() + if not self.skip_string('.'): + break + return ASTNestedName(names, rooted) + + def _parse_trailing_type_spec(self) -> ASTTrailingTypeSpec: + # fundamental types + self.skip_ws() + for t in self._simple_fundamental_types: + if self.skip_word(t): + return ASTTrailingTypeSpecFundamental(t) + + # TODO: this could/should be more strict + elements = [] + if self.skip_word_and_ws('signed'): + elements.append('signed') + elif self.skip_word_and_ws('unsigned'): + elements.append('unsigned') + while 1: + if self.skip_word_and_ws('short'): + elements.append('short') + elif self.skip_word_and_ws('long'): + elements.append('long') + else: + break + if self.skip_word_and_ws('char'): + elements.append('char') + elif self.skip_word_and_ws('int'): + elements.append('int') + elif self.skip_word_and_ws('double'): + elements.append('double') + elif self.skip_word_and_ws('__int64'): + elements.append('__int64') + if len(elements) > 0: + return ASTTrailingTypeSpecFundamental(' '.join(elements)) + + # prefixed + prefix = None + self.skip_ws() + for k in self._prefix_keys: + if self.skip_word_and_ws(k): + prefix = k + break + + nestedName = self._parse_nested_name() + return ASTTrailingTypeSpecName(prefix, nestedName) + + def _parse_parameters(self, paramMode: str) -> ASTParameters: + self.skip_ws() + if not self.skip_string('('): + if paramMode == 'function': + self.fail('Expecting "(" in parameters.') + else: + return None + + args = [] + self.skip_ws() + if not self.skip_string(')'): + while 1: + self.skip_ws() + if self.skip_string('...'): + args.append(ASTFunctionParameter(None, True)) + self.skip_ws() + if not self.skip_string(')'): + self.fail('Expected ")" after "..." in parameters.') + break + # note: it seems that function arguments can always be named, + # even in function pointers and similar. + arg = self._parse_type_with_init(outer=None, named='single') + # TODO: parse default parameters # TODO: didn't we just do that? + args.append(ASTFunctionParameter(arg)) + + self.skip_ws() + if self.skip_string(','): + continue + elif self.skip_string(')'): + break + else: + self.fail( + 'Expecting "," or ")" in parameters, ' + 'got "%s".' % self.current_char) + return ASTParameters(args) + + def _parse_decl_specs_simple(self, outer: str, typed: bool) -> ASTDeclSpecsSimple: + """Just parse the simple ones.""" + storage = None + threadLocal = None + inline = None + restrict = None + volatile = None + const = None + attrs = [] + while 1: # accept any permutation of a subset of some decl-specs + self.skip_ws() + if not storage: + if outer == 'member': + if self.skip_word('auto'): + storage = 'auto' + continue + if self.skip_word('register'): + storage = 'register' + continue + if outer in ('member', 'function'): + if self.skip_word('static'): + storage = 'static' + continue + if self.skip_word('extern'): + storage = 'extern' + continue + if outer == 'member' and not threadLocal: + if self.skip_word('thread_local'): + threadLocal = 'thread_local' + continue + if self.skip_word('_Thread_local'): + threadLocal = '_Thread_local' + continue + if outer == 'function' and not inline: + inline = self.skip_word('inline') + if inline: + continue + + if not restrict and typed: + restrict = self.skip_word('restrict') + if restrict: + continue + if not volatile and typed: + volatile = self.skip_word('volatile') + if volatile: + continue + if not const and typed: + const = self.skip_word('const') + if const: + continue + attr = self._parse_attribute() + if attr: + attrs.append(attr) + continue + break + return ASTDeclSpecsSimple(storage, threadLocal, inline, + restrict, volatile, const, attrs) + + def _parse_decl_specs(self, outer: str, typed: bool = True) -> ASTDeclSpecs: + if outer: + if outer not in ('type', 'member', 'function'): + raise Exception('Internal error, unknown outer "%s".' % outer) + leftSpecs = self._parse_decl_specs_simple(outer, typed) + rightSpecs = None + + if typed: + trailing = self._parse_trailing_type_spec() + rightSpecs = self._parse_decl_specs_simple(outer, typed) + else: + trailing = None + return ASTDeclSpecs(outer, leftSpecs, rightSpecs, trailing) + + def _parse_declarator_name_suffix( + self, named: Union[bool, str], paramMode: str, typed: bool + ) -> ASTDeclarator: + # now we should parse the name, and then suffixes + if named == 'maybe': + pos = self.pos + try: + declId = self._parse_nested_name() + except DefinitionError: + self.pos = pos + declId = None + elif named == 'single': + if self.match(identifier_re): + identifier = ASTIdentifier(self.matched_text) + declId = ASTNestedName([identifier], rooted=False) + else: + declId = None + elif named: + declId = self._parse_nested_name() + else: + declId = None + arrayOps = [] + while 1: + self.skip_ws() + if typed and self.skip_string('['): + self.skip_ws() + if self.skip_string(']'): + arrayOps.append(ASTArray(None)) + continue + + def parser() -> ASTExpression: + return self._parse_expression() + + value = self._parse_expression_fallback([']'], parser) + if not self.skip_string(']'): + self.fail("Expected ']' in end of array operator.") + arrayOps.append(ASTArray(value)) + continue + else: + break + param = self._parse_parameters(paramMode) + if param is None and len(arrayOps) == 0: + # perhaps a bit-field + if named and paramMode == 'type' and typed: + self.skip_ws() + if self.skip_string(':'): + size = self._parse_constant_expression() + return ASTDeclaratorNameBitField(declId=declId, size=size) + return ASTDeclaratorNameParam(declId=declId, arrayOps=arrayOps, + param=param) + + def _parse_declarator(self, named: Union[bool, str], paramMode: str, + typed: bool = True) -> ASTDeclarator: + # 'typed' here means 'parse return type stuff' + if paramMode not in ('type', 'function'): + raise Exception( + "Internal error, unknown paramMode '%s'." % paramMode) + prevErrors = [] + self.skip_ws() + if typed and self.skip_string('*'): + self.skip_ws() + restrict = False + volatile = False + const = False + attrs = [] + while 1: + if not restrict: + restrict = self.skip_word_and_ws('restrict') + if restrict: + continue + if not volatile: + volatile = self.skip_word_and_ws('volatile') + if volatile: + continue + if not const: + const = self.skip_word_and_ws('const') + if const: + continue + attr = self._parse_attribute() + if attr is not None: + attrs.append(attr) + continue + break + next = self._parse_declarator(named, paramMode, typed) + return ASTDeclaratorPtr(next=next, + restrict=restrict, volatile=volatile, const=const, + attrs=attrs) + if typed and self.current_char == '(': # note: peeking, not skipping + # maybe this is the beginning of params, try that first, + # otherwise assume it's noptr->declarator > ( ptr-declarator ) + pos = self.pos + try: + # assume this is params + res = self._parse_declarator_name_suffix(named, paramMode, + typed) + return res + except DefinitionError as exParamQual: + msg = "If declarator-id with parameters" + if paramMode == 'function': + msg += " (e.g., 'void f(int arg)')" + prevErrors.append((exParamQual, msg)) + self.pos = pos + try: + assert self.current_char == '(' + self.skip_string('(') + # TODO: hmm, if there is a name, it must be in inner, right? + # TODO: hmm, if there must be parameters, they must b + # inside, right? + inner = self._parse_declarator(named, paramMode, typed) + if not self.skip_string(')'): + self.fail("Expected ')' in \"( ptr-declarator )\"") + next = self._parse_declarator(named=False, + paramMode="type", + typed=typed) + return ASTDeclaratorParen(inner=inner, next=next) + except DefinitionError as exNoPtrParen: + self.pos = pos + msg = "If parenthesis in noptr-declarator" + if paramMode == 'function': + msg += " (e.g., 'void (*f(int arg))(double)')" + prevErrors.append((exNoPtrParen, msg)) + header = "Error in declarator" + raise self._make_multi_error(prevErrors, header) + pos = self.pos + try: + return self._parse_declarator_name_suffix(named, paramMode, typed) + except DefinitionError as e: + self.pos = pos + prevErrors.append((e, "If declarator-id")) + header = "Error in declarator or parameters" + raise self._make_multi_error(prevErrors, header) + + def _parse_initializer(self, outer: str = None, allowFallback: bool = True + ) -> ASTInitializer: + self.skip_ws() + if outer == 'member' and False: # TODO + bracedInit = self._parse_braced_init_list() + if bracedInit is not None: + return ASTInitializer(bracedInit, hasAssign=False) + + if not self.skip_string('='): + return None + + bracedInit = self._parse_braced_init_list() + if bracedInit is not None: + return ASTInitializer(bracedInit) + + if outer == 'member': + fallbackEnd = [] # type: List[str] + elif outer is None: # function parameter + fallbackEnd = [',', ')'] + else: + self.fail("Internal error, initializer for outer '%s' not " + "implemented." % outer) + + def parser(): + return self._parse_assignment_expression() + + value = self._parse_expression_fallback(fallbackEnd, parser, allow=allowFallback) + return ASTInitializer(value) + + def _parse_type(self, named: Union[bool, str], outer: str = None) -> ASTType: + """ + named=False|'maybe'|True: 'maybe' is e.g., for function objects which + doesn't need to name the arguments + """ + if outer: # always named + if outer not in ('type', 'member', 'function'): + raise Exception('Internal error, unknown outer "%s".' % outer) + assert named + + if outer == 'type': + # We allow type objects to just be a name. + prevErrors = [] + startPos = self.pos + # first try without the type + try: + declSpecs = self._parse_decl_specs(outer=outer, typed=False) + decl = self._parse_declarator(named=True, paramMode=outer, + typed=False) + self.assert_end() + except DefinitionError as exUntyped: + desc = "If just a name" + prevErrors.append((exUntyped, desc)) + self.pos = startPos + try: + declSpecs = self._parse_decl_specs(outer=outer) + decl = self._parse_declarator(named=True, paramMode=outer) + except DefinitionError as exTyped: + self.pos = startPos + desc = "If typedef-like declaration" + prevErrors.append((exTyped, desc)) + # Retain the else branch for easier debugging. + # TODO: it would be nice to save the previous stacktrace + # and output it here. + if True: + header = "Type must be either just a name or a " + header += "typedef-like declaration." + raise self._make_multi_error(prevErrors, header) + else: + # For testing purposes. + # do it again to get the proper traceback (how do you + # reliably save a traceback when an exception is + # constructed?) + self.pos = startPos + typed = True + declSpecs = self._parse_decl_specs(outer=outer, typed=typed) + decl = self._parse_declarator(named=True, paramMode=outer, + typed=typed) + elif outer == 'function': + declSpecs = self._parse_decl_specs(outer=outer) + decl = self._parse_declarator(named=True, paramMode=outer) + else: + paramMode = 'type' + if outer == 'member': # i.e., member + named = True + declSpecs = self._parse_decl_specs(outer=outer) + decl = self._parse_declarator(named=named, paramMode=paramMode) + return ASTType(declSpecs, decl) + + def _parse_type_with_init(self, named: Union[bool, str], outer: str) -> ASTTypeWithInit: + if outer: + assert outer in ('type', 'member', 'function') + type = self._parse_type(outer=outer, named=named) + init = self._parse_initializer(outer=outer) + return ASTTypeWithInit(type, init) + + def _parse_macro(self) -> ASTMacro: + self.skip_ws() + ident = self._parse_nested_name() + if ident is None: + self.fail("Expected identifier in macro definition.") + self.skip_ws() + if not self.skip_string_and_ws('('): + return ASTMacro(ident, None) + if self.skip_string(')'): + return ASTMacro(ident, []) + args = [] + while 1: + self.skip_ws() + if self.skip_string('...'): + args.append(ASTMacroParameter(None, True)) + self.skip_ws() + if not self.skip_string(')'): + self.fail('Expected ")" after "..." in macro parameters.') + break + if not self.match(identifier_re): + self.fail("Expected identifier in macro parameters.") + nn = ASTNestedName([ASTIdentifier(self.matched_text)], rooted=False) + arg = ASTMacroParameter(nn) + args.append(arg) + self.skip_ws() + if self.skip_string_and_ws(','): + continue + elif self.skip_string_and_ws(')'): + break + else: + self.fail("Expected identifier, ')', or ',' in macro parameter list.") + return ASTMacro(ident, args) + + def _parse_struct(self) -> ASTStruct: + name = self._parse_nested_name() + return ASTStruct(name) + + def _parse_union(self) -> ASTUnion: + name = self._parse_nested_name() + return ASTUnion(name) + + def _parse_enum(self) -> ASTEnum: + name = self._parse_nested_name() + return ASTEnum(name) + + def _parse_enumerator(self) -> ASTEnumerator: + name = self._parse_nested_name() + self.skip_ws() + init = None + if self.skip_string('='): + self.skip_ws() + + def parser() -> ASTExpression: + return self._parse_constant_expression() + + initVal = self._parse_expression_fallback([], parser) + init = ASTInitializer(initVal) + return ASTEnumerator(name, init) + + def parse_declaration(self, objectType: str, directiveType: str) -> ASTDeclaration: + if objectType not in ('function', 'member', + 'macro', 'struct', 'union', 'enum', 'enumerator', 'type'): + raise Exception('Internal error, unknown objectType "%s".' % objectType) + if directiveType not in ('function', 'member', 'var', + 'macro', 'struct', 'union', 'enum', 'enumerator', 'type'): + raise Exception('Internal error, unknown directiveType "%s".' % directiveType) + + declaration = None # type: Any + if objectType == 'member': + declaration = self._parse_type_with_init(named=True, outer='member') + elif objectType == 'function': + declaration = self._parse_type(named=True, outer='function') + elif objectType == 'macro': + declaration = self._parse_macro() + elif objectType == 'struct': + declaration = self._parse_struct() + elif objectType == 'union': + declaration = self._parse_union() + elif objectType == 'enum': + declaration = self._parse_enum() + elif objectType == 'enumerator': + declaration = self._parse_enumerator() + elif objectType == 'type': + declaration = self._parse_type(named=True, outer='type') + else: + assert False + return ASTDeclaration(objectType, directiveType, declaration) + + def parse_namespace_object(self) -> ASTNestedName: + return self._parse_nested_name() + + def parse_xref_object(self) -> ASTNestedName: + name = self._parse_nested_name() + # if there are '()' left, just skip them + self.skip_ws() + self.skip_string('()') + self.assert_end() + return name + + def parse_expression(self) -> Union[ASTExpression, ASTType]: + pos = self.pos + res = None # type: Union[ASTExpression, ASTType] + try: + res = self._parse_expression() + self.skip_ws() + self.assert_end() + except DefinitionError as exExpr: + self.pos = pos + try: + res = self._parse_type(False) + self.skip_ws() + self.assert_end() + except DefinitionError as exType: + header = "Error when parsing (type) expression." + errs = [] + errs.append((exExpr, "If expression")) + errs.append((exType, "If type")) + raise self._make_multi_error(errs, header) + return res + + +def _make_phony_error_name() -> ASTNestedName: + return ASTNestedName([ASTIdentifier("PhonyNameDueToError")], rooted=False) + + +class CObject(ObjectDescription): + """ + Description of a C language object. + """ + + doc_field_types = [ + TypedField('parameter', label=_('Parameters'), + names=('param', 'parameter', 'arg', 'argument'), + typerolename='type', typenames=('type',)), + Field('returnvalue', label=_('Returns'), has_arg=False, + names=('returns', 'return')), + Field('returntype', label=_('Return type'), has_arg=False, + names=('rtype',)), + ] + + def _add_enumerator_to_parent(self, ast: ASTDeclaration) -> None: + assert ast.objectType == 'enumerator' + # find the parent, if it exists && is an enum + # then add the name to the parent scope + symbol = ast.symbol + assert symbol + assert symbol.ident is not None + parentSymbol = symbol.parent + assert parentSymbol + if parentSymbol.parent is None: + # TODO: we could warn, but it is somewhat equivalent to + # enumeratorss, without the enum + return # no parent + parentDecl = parentSymbol.declaration + if parentDecl is None: + # the parent is not explicitly declared + # TODO: we could warn, but? + return + if parentDecl.objectType != 'enum': + # TODO: maybe issue a warning, enumerators in non-enums is weird, + # but it is somewhat equivalent to enumeratorss, without the enum + return + if parentDecl.directiveType != 'enum': + return + + targetSymbol = parentSymbol.parent + s = targetSymbol.find_identifier(symbol.ident, matchSelf=False, recurseInAnon=True, + searchInSiblings=False) + if s is not None: + # something is already declared with that name + return + declClone = symbol.declaration.clone() + declClone.enumeratorScopedSymbol = symbol + Symbol(parent=targetSymbol, ident=symbol.ident, + declaration=declClone, + docname=self.env.docname) + + def add_target_and_index(self, ast: ASTDeclaration, sig: str, + signode: TextElement) -> None: + ids = [] + for i in range(1, _max_id + 1): + try: + id = ast.get_id(version=i) + ids.append(id) + except NoOldIdError: + assert i < _max_id + # let's keep the newest first + ids = list(reversed(ids)) + newestId = ids[0] + assert newestId # shouldn't be None + + name = ast.symbol.get_full_nested_name().get_display_string().lstrip('.') + if newestId not in self.state.document.ids: + # always add the newest id + assert newestId + signode['ids'].append(newestId) + # only add compatibility ids when there are no conflicts + for id in ids[1:]: + if not id: # is None when the element didn't exist in that version + continue + if id not in self.state.document.ids: + signode['ids'].append(id) + + self.state.document.note_explicit_target(signode) + + domain = cast(CDomain, self.env.get_domain('c')) + domain.note_object(name, self.objtype, newestId) + + indexText = self.get_index_text(name) + self.indexnode['entries'].append(('single', indexText, newestId, '', None)) + + @property + def object_type(self) -> str: + raise NotImplementedError() + + @property + def display_object_type(self) -> str: + return self.object_type + + def get_index_text(self, name: str) -> str: + return _('%s (C %s)') % (name, self.display_object_type) + + def parse_definition(self, parser: DefinitionParser) -> ASTDeclaration: + return parser.parse_declaration(self.object_type, self.objtype) + + def describe_signature(self, signode: TextElement, ast: Any, options: Dict) -> None: + ast.describe_signature(signode, 'lastIsName', self.env, options) + + def run(self) -> List[Node]: + env = self.state.document.settings.env # from ObjectDescription.run + if 'c:parent_symbol' not in env.temp_data: + root = env.domaindata['c']['root_symbol'] + env.temp_data['c:parent_symbol'] = root + env.ref_context['c:parent_key'] = root.get_lookup_key() + + # When multiple declarations are made in the same directive + # they need to know about each other to provide symbol lookup for function parameters. + # We use last_symbol to store the latest added declaration in a directive. + env.temp_data['c:last_symbol'] = None + return super().run() + + def handle_signature(self, sig: str, signode: TextElement) -> ASTDeclaration: + parentSymbol = self.env.temp_data['c:parent_symbol'] # type: Symbol + + parser = DefinitionParser(sig, location=signode, config=self.env.config) + try: + ast = self.parse_definition(parser) + parser.assert_end() + except DefinitionError as e: + logger.warning(e, location=signode) + # It is easier to assume some phony name than handling the error in + # the possibly inner declarations. + name = _make_phony_error_name() + symbol = parentSymbol.add_name(name) + self.env.temp_data['c:last_symbol'] = symbol + raise ValueError + + try: + symbol = parentSymbol.add_declaration(ast, docname=self.env.docname) + # append the new declaration to the sibling list + assert symbol.siblingAbove is None + assert symbol.siblingBelow is None + symbol.siblingAbove = self.env.temp_data['c:last_symbol'] + if symbol.siblingAbove is not None: + assert symbol.siblingAbove.siblingBelow is None + symbol.siblingAbove.siblingBelow = symbol + self.env.temp_data['c:last_symbol'] = symbol + except _DuplicateSymbolError as e: + # Assume we are actually in the old symbol, + # instead of the newly created duplicate. + self.env.temp_data['c:last_symbol'] = e.symbol + logger.warning("Duplicate declaration, %s", sig, location=signode) + + if ast.objectType == 'enumerator': + self._add_enumerator_to_parent(ast) + + # note: handle_signature may be called multiple time per directive, + # if it has multiple signatures, so don't mess with the original options. + options = dict(self.options) + self.describe_signature(signode, ast, options) + return ast + + def before_content(self) -> None: + lastSymbol = self.env.temp_data['c:last_symbol'] # type: Symbol + assert lastSymbol + self.oldParentSymbol = self.env.temp_data['c:parent_symbol'] + self.oldParentKey = self.env.ref_context['c:parent_key'] # type: LookupKey + self.env.temp_data['c:parent_symbol'] = lastSymbol + self.env.ref_context['c:parent_key'] = lastSymbol.get_lookup_key() + + def after_content(self) -> None: + self.env.temp_data['c:parent_symbol'] = self.oldParentSymbol + self.env.ref_context['c:parent_key'] = self.oldParentKey + + def make_old_id(self, name: str) -> str: + """Generate old styled node_id for C objects. + + .. note:: Old Styled node_id was used until Sphinx-3.0. + This will be removed in Sphinx-5.0. + """ + return 'c.' + name + + +class CMemberObject(CObject): + object_type = 'member' + + @property + def display_object_type(self) -> str: + # the distinction between var and member is only cosmetic + assert self.objtype in ('member', 'var') + return self.objtype + + +class CFunctionObject(CObject): + object_type = 'function' + + +class CMacroObject(CObject): + object_type = 'macro' + + +class CStructObject(CObject): + object_type = 'struct' + + +class CUnionObject(CObject): + object_type = 'union' + + +class CEnumObject(CObject): + object_type = 'enum' + + +class CEnumeratorObject(CObject): + object_type = 'enumerator' + + +class CTypeObject(CObject): + object_type = 'type' + + +class CNamespaceObject(SphinxDirective): + """ + This directive is just to tell Sphinx that we're documenting stuff in + namespace foo. + """ + + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + rootSymbol = self.env.domaindata['c']['root_symbol'] + if self.arguments[0].strip() in ('NULL', '0', 'nullptr'): + symbol = rootSymbol + stack = [] # type: List[Symbol] + else: + parser = DefinitionParser(self.arguments[0], + location=self.get_source_info(), + config=self.env.config) + try: + name = parser.parse_namespace_object() + parser.assert_end() + except DefinitionError as e: + logger.warning(e, location=self.get_source_info()) + name = _make_phony_error_name() + symbol = rootSymbol.add_name(name) + stack = [symbol] + self.env.temp_data['c:parent_symbol'] = symbol + self.env.temp_data['c:namespace_stack'] = stack + self.env.ref_context['c:parent_key'] = symbol.get_lookup_key() + return [] + + +class CNamespacePushObject(SphinxDirective): + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + if self.arguments[0].strip() in ('NULL', '0', 'nullptr'): + return [] + parser = DefinitionParser(self.arguments[0], + location=self.get_source_info(), + config=self.env.config) + try: + name = parser.parse_namespace_object() + parser.assert_end() + except DefinitionError as e: + logger.warning(e, location=self.get_source_info()) + name = _make_phony_error_name() + oldParent = self.env.temp_data.get('c:parent_symbol', None) + if not oldParent: + oldParent = self.env.domaindata['c']['root_symbol'] + symbol = oldParent.add_name(name) + stack = self.env.temp_data.get('c:namespace_stack', []) + stack.append(symbol) + self.env.temp_data['c:parent_symbol'] = symbol + self.env.temp_data['c:namespace_stack'] = stack + self.env.ref_context['c:parent_key'] = symbol.get_lookup_key() + return [] + + +class CNamespacePopObject(SphinxDirective): + has_content = False + required_arguments = 0 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + stack = self.env.temp_data.get('c:namespace_stack', None) + if not stack or len(stack) == 0: + logger.warning("C namespace pop on empty stack. Defaulting to gobal scope.", + location=self.get_source_info()) + stack = [] + else: + stack.pop() + if len(stack) > 0: + symbol = stack[-1] + else: + symbol = self.env.domaindata['c']['root_symbol'] + self.env.temp_data['c:parent_symbol'] = symbol + self.env.temp_data['c:namespace_stack'] = stack + self.env.ref_context['cp:parent_key'] = symbol.get_lookup_key() + return [] + + +class CXRefRole(XRefRole): + def process_link(self, env: BuildEnvironment, refnode: Element, + has_explicit_title: bool, title: str, target: str) -> Tuple[str, str]: + refnode.attributes.update(env.ref_context) + + if not has_explicit_title: + # major hax: replace anon names via simple string manipulation. + # Can this actually fail? + title = anon_identifier_re.sub("[anonymous]", str(title)) + + if not has_explicit_title: + target = target.lstrip('~') # only has a meaning for the title + # if the first character is a tilde, don't display the module/class + # parts of the contents + if title[0:1] == '~': + title = title[1:] + dot = title.rfind('.') + if dot != -1: + title = title[dot + 1:] + return title, target + + +class CExprRole(SphinxRole): + def __init__(self, asCode: bool) -> None: + super().__init__() + if asCode: + # render the expression as inline code + self.class_type = 'c-expr' + self.node_type = nodes.literal # type: Type[TextElement] + else: + # render the expression as inline text + self.class_type = 'c-texpr' + self.node_type = nodes.inline + + def run(self) -> Tuple[List[Node], List[system_message]]: + text = self.text.replace('\n', ' ') + parser = DefinitionParser(text, location=self.get_source_info(), + config=self.env.config) + # attempt to mimic XRefRole classes, except that... + classes = ['xref', 'c', self.class_type] + try: + ast = parser.parse_expression() + except DefinitionError as ex: + logger.warning('Unparseable C expression: %r\n%s', text, ex, + location=self.get_source_info()) + # see below + return [self.node_type(text, text, classes=classes)], [] + parentSymbol = self.env.temp_data.get('cpp:parent_symbol', None) + if parentSymbol is None: + parentSymbol = self.env.domaindata['c']['root_symbol'] + # ...most if not all of these classes should really apply to the individual references, + # not the container node + signode = self.node_type(classes=classes) + ast.describe_signature(signode, 'markType', self.env, parentSymbol) + return [signode], [] + + +class CDomain(Domain): + """C language domain.""" + name = 'c' + label = 'C' + object_types = { + 'function': ObjType(_('function'), 'func'), + 'member': ObjType(_('member'), 'member'), + 'macro': ObjType(_('macro'), 'macro'), + 'type': ObjType(_('type'), 'type'), + 'var': ObjType(_('variable'), 'data'), + } + + directives = { + 'member': CMemberObject, + 'var': CMemberObject, + 'function': CFunctionObject, + 'macro': CMacroObject, + 'struct': CStructObject, + 'union': CUnionObject, + 'enum': CEnumObject, + 'enumerator': CEnumeratorObject, + 'type': CTypeObject, + # scope control + 'namespace': CNamespaceObject, + 'namespace-push': CNamespacePushObject, + 'namespace-pop': CNamespacePopObject, + } + roles = { + 'member': CXRefRole(), + 'data': CXRefRole(), + 'var': CXRefRole(), + 'func': CXRefRole(fix_parens=True), + 'macro': CXRefRole(), + 'struct': CXRefRole(), + 'union': CXRefRole(), + 'enum': CXRefRole(), + 'enumerator': CXRefRole(), + 'type': CXRefRole(), + 'expr': CExprRole(asCode=True), + 'texpr': CExprRole(asCode=False) + } + initial_data = { + 'root_symbol': Symbol(None, None, None, None), + 'objects': {}, # fullname -> docname, node_id, objtype + } # type: Dict[str, Union[Symbol, Dict[str, Tuple[str, str, str]]]] + + @property + def objects(self) -> Dict[str, Tuple[str, str, str]]: + return self.data.setdefault('objects', {}) # fullname -> docname, node_id, objtype + + def note_object(self, name: str, objtype: str, node_id: str, location: Any = None) -> None: + if name in self.objects: + docname = self.objects[name][0] + logger.warning(__('Duplicate C object description of %s, ' + 'other instance in %s, use :noindex: for one of them'), + name, docname, location=location) + self.objects[name] = (self.env.docname, node_id, objtype) + + def clear_doc(self, docname: str) -> None: + if Symbol.debug_show_tree: + print("clear_doc:", docname) + print("\tbefore:") + print(self.data['root_symbol'].dump(1)) + print("\tbefore end") + + rootSymbol = self.data['root_symbol'] + rootSymbol.clear_doc(docname) + + if Symbol.debug_show_tree: + print("\tafter:") + print(self.data['root_symbol'].dump(1)) + print("\tafter end") + print("clear_doc end:", docname) + for fullname, (fn, _id, _l) in list(self.objects.items()): + if fn == docname: + del self.objects[fullname] + + def process_doc(self, env: BuildEnvironment, docname: str, + document: nodes.document) -> None: + if Symbol.debug_show_tree: + print("process_doc:", docname) + print(self.data['root_symbol'].dump(0)) + print("process_doc end:", docname) + + def process_field_xref(self, pnode: pending_xref) -> None: + pnode.attributes.update(self.env.ref_context) + + def merge_domaindata(self, docnames: List[str], otherdata: Dict) -> None: + if Symbol.debug_show_tree: + print("merge_domaindata:") + print("\tself:") + print(self.data['root_symbol'].dump(1)) + print("\tself end") + print("\tother:") + print(otherdata['root_symbol'].dump(1)) + print("\tother end") + print("merge_domaindata end") + + self.data['root_symbol'].merge_with(otherdata['root_symbol'], + docnames, self.env) + ourObjects = self.data['objects'] + for fullname, (fn, id_, objtype) in otherdata['objects'].items(): + if fn in docnames: + if fullname in ourObjects: + msg = __("Duplicate declaration, also defined in '%s'.\n" + "Name of declaration is '%s'.") + msg = msg % (ourObjects[fullname], fullname) + logger.warning(msg, location=fn) + else: + ourObjects[fullname] = (fn, id_, objtype) + + def _resolve_xref_inner(self, env: BuildEnvironment, fromdocname: str, builder: Builder, + typ: str, target: str, node: pending_xref, + contnode: Element) -> Tuple[Element, str]: + parser = DefinitionParser(target, location=node, config=env.config) + try: + name = parser.parse_xref_object() + except DefinitionError as e: + logger.warning('Unparseable C cross-reference: %r\n%s', target, e, + location=node) + return None, None + parentKey = node.get("c:parent_key", None) # type: LookupKey + rootSymbol = self.data['root_symbol'] + if parentKey: + parentSymbol = rootSymbol.direct_lookup(parentKey) # type: Symbol + if not parentSymbol: + print("Target: ", target) + print("ParentKey: ", parentKey) + print(rootSymbol.dump(1)) + assert parentSymbol # should be there + else: + parentSymbol = rootSymbol + s = parentSymbol.find_declaration(name, typ, + matchSelf=True, recurseInAnon=True) + if s is None or s.declaration is None: + return None, None + + # TODO: check role type vs. object type + + declaration = s.declaration + displayName = name.get_display_string() + docname = s.docname + assert docname + + return make_refnode(builder, fromdocname, docname, + declaration.get_newest_id(), contnode, displayName + ), declaration.objectType + + def resolve_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder, + typ: str, target: str, node: pending_xref, + contnode: Element) -> Element: + return self._resolve_xref_inner(env, fromdocname, builder, typ, + target, node, contnode)[0] + + def resolve_any_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder, + target: str, node: pending_xref, contnode: Element + ) -> List[Tuple[str, Element]]: + with logging.suppress_logging(): + retnode, objtype = self._resolve_xref_inner(env, fromdocname, builder, + 'any', target, node, contnode) + if retnode: + return [('c:' + self.role_for_objtype(objtype), retnode)] + return [] + + def get_objects(self) -> Iterator[Tuple[str, str, str, str, str, int]]: + for refname, (docname, node_id, objtype) in list(self.objects.items()): + yield (refname, refname, objtype, docname, node_id, 1) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_domain(CDomain) + app.add_config_value("c_id_attributes", [], 'env') + app.add_config_value("c_paren_attributes", [], 'env') + + return { + 'version': 'builtin', + 'env_version': 2, + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/domains/changeset.py b/sphinx/sphinx/domains/changeset.py new file mode 100644 index 0000000..a07944d --- /dev/null +++ b/sphinx/sphinx/domains/changeset.py @@ -0,0 +1,155 @@ +""" + sphinx.domains.changeset + ~~~~~~~~~~~~~~~~~~~~~~~~ + + The changeset domain. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from collections import namedtuple +from typing import Any, Dict, List +from typing import cast + +from docutils import nodes +from docutils.nodes import Node + +from sphinx import addnodes +from sphinx.domains import Domain +from sphinx.locale import _ +from sphinx.util.docutils import SphinxDirective + + +if False: + # For type annotation + from sphinx.application import Sphinx + from sphinx.environment import BuildEnvironment + + +versionlabels = { + 'versionadded': _('New in version %s'), + 'versionchanged': _('Changed in version %s'), + 'deprecated': _('Deprecated since version %s'), +} + +versionlabel_classes = { + 'versionadded': 'added', + 'versionchanged': 'changed', + 'deprecated': 'deprecated', +} + + +# TODO: move to typing.NamedTuple after dropping py35 support (see #5958) +ChangeSet = namedtuple('ChangeSet', + ['type', 'docname', 'lineno', 'module', 'descname', 'content']) + + +class VersionChange(SphinxDirective): + """ + Directive to describe a change/addition/deprecation in a specific version. + """ + has_content = True + required_arguments = 1 + optional_arguments = 1 + final_argument_whitespace = True + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + node = addnodes.versionmodified() + node.document = self.state.document + self.set_source_info(node) + node['type'] = self.name + node['version'] = self.arguments[0] + text = versionlabels[self.name] % self.arguments[0] + if len(self.arguments) == 2: + inodes, messages = self.state.inline_text(self.arguments[1], + self.lineno + 1) + para = nodes.paragraph(self.arguments[1], '', *inodes, translatable=False) + self.set_source_info(para) + node.append(para) + else: + messages = [] + if self.content: + self.state.nested_parse(self.content, self.content_offset, node) + classes = ['versionmodified', versionlabel_classes[self.name]] + if len(node): + if isinstance(node[0], nodes.paragraph) and node[0].rawsource: + content = nodes.inline(node[0].rawsource, translatable=True) + content.source = node[0].source + content.line = node[0].line + content += node[0].children + node[0].replace_self(nodes.paragraph('', '', content, translatable=False)) + + para = cast(nodes.paragraph, node[0]) + para.insert(0, nodes.inline('', '%s: ' % text, classes=classes)) + else: + para = nodes.paragraph('', '', + nodes.inline('', '%s.' % text, + classes=classes), + translatable=False) + node.append(para) + + domain = cast(ChangeSetDomain, self.env.get_domain('changeset')) + domain.note_changeset(node) + + ret = [node] # type: List[Node] + ret += messages + return ret + + +class ChangeSetDomain(Domain): + """Domain for changesets.""" + + name = 'changeset' + label = 'changeset' + + initial_data = { + 'changes': {}, # version -> list of ChangeSet + } # type: Dict + + @property + def changesets(self) -> Dict[str, List[ChangeSet]]: + return self.data.setdefault('changes', {}) # version -> list of ChangeSet + + def note_changeset(self, node: addnodes.versionmodified) -> None: + version = node['version'] + module = self.env.ref_context.get('py:module') + objname = self.env.temp_data.get('object') + changeset = ChangeSet(node['type'], self.env.docname, node.line, + module, objname, node.astext()) + self.changesets.setdefault(version, []).append(changeset) + + def clear_doc(self, docname: str) -> None: + for version, changes in self.changesets.items(): + for changeset in changes[:]: + if changeset.docname == docname: + changes.remove(changeset) + + def merge_domaindata(self, docnames: List[str], otherdata: Dict) -> None: + # XXX duplicates? + for version, otherchanges in otherdata['changes'].items(): + changes = self.changesets.setdefault(version, []) + for changeset in otherchanges: + if changeset.docname in docnames: + changes.append(changeset) + + def process_doc(self, env: "BuildEnvironment", docname: str, document: nodes.document) -> None: # NOQA + pass # nothing to do here. All changesets are registered on calling directive. + + def get_changesets_for(self, version: str) -> List[ChangeSet]: + return self.changesets.get(version, []) + + +def setup(app: "Sphinx") -> Dict[str, Any]: + app.add_domain(ChangeSetDomain) + app.add_directive('deprecated', VersionChange) + app.add_directive('versionadded', VersionChange) + app.add_directive('versionchanged', VersionChange) + + return { + 'version': 'builtin', + 'env_version': 1, + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/domains/citation.py b/sphinx/sphinx/domains/citation.py new file mode 100644 index 0000000..3890186 --- /dev/null +++ b/sphinx/sphinx/domains/citation.py @@ -0,0 +1,161 @@ +""" + sphinx.domains.citation + ~~~~~~~~~~~~~~~~~~~~~~~ + + The citation domain. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Any, Dict, List, Set, Tuple +from typing import cast + +from docutils import nodes +from docutils.nodes import Element + +from sphinx.addnodes import pending_xref +from sphinx.domains import Domain +from sphinx.locale import __ +from sphinx.transforms import SphinxTransform +from sphinx.util import logging +from sphinx.util.nodes import copy_source_info, make_refnode + +if False: + # For type annotation + from sphinx.application import Sphinx + from sphinx.builders import Builder + from sphinx.environment import BuildEnvironment + + +logger = logging.getLogger(__name__) + + +class CitationDomain(Domain): + """Domain for citations.""" + + name = 'citation' + label = 'citation' + + dangling_warnings = { + 'ref': 'citation not found: %(target)s', + } + + @property + def citations(self) -> Dict[str, Tuple[str, str, int]]: + return self.data.setdefault('citations', {}) + + @property + def citation_refs(self) -> Dict[str, Set[str]]: + return self.data.setdefault('citation_refs', {}) + + def clear_doc(self, docname: str) -> None: + for key, (fn, _l, lineno) in list(self.citations.items()): + if fn == docname: + del self.citations[key] + for key, docnames in list(self.citation_refs.items()): + if docnames == {docname}: + del self.citation_refs[key] + elif docname in docnames: + docnames.remove(docname) + + def merge_domaindata(self, docnames: List[str], otherdata: Dict) -> None: + # XXX duplicates? + for key, data in otherdata['citations'].items(): + if data[0] in docnames: + self.citations[key] = data + for key, data in otherdata['citation_refs'].items(): + citation_refs = self.citation_refs.setdefault(key, set()) + for docname in data: + if docname in docnames: + citation_refs.add(docname) + + def note_citation(self, node: nodes.citation) -> None: + label = node[0].astext() + if label in self.citations: + path = self.env.doc2path(self.citations[label][0]) + logger.warning(__('duplicate citation %s, other instance in %s'), label, path, + location=node, type='ref', subtype='citation') + self.citations[label] = (node['docname'], node['ids'][0], node.line) + + def note_citation_reference(self, node: pending_xref) -> None: + docnames = self.citation_refs.setdefault(node['reftarget'], set()) + docnames.add(self.env.docname) + + def check_consistency(self) -> None: + for name, (docname, labelid, lineno) in self.citations.items(): + if name not in self.citation_refs: + logger.warning(__('Citation [%s] is not referenced.'), name, + type='ref', subtype='citation', location=(docname, lineno)) + + def resolve_xref(self, env: "BuildEnvironment", fromdocname: str, builder: "Builder", + typ: str, target: str, node: pending_xref, contnode: Element + ) -> Element: + docname, labelid, lineno = self.citations.get(target, ('', '', 0)) + if not docname: + return None + + return make_refnode(builder, fromdocname, docname, + labelid, contnode) + + def resolve_any_xref(self, env: "BuildEnvironment", fromdocname: str, builder: "Builder", + target: str, node: pending_xref, contnode: Element + ) -> List[Tuple[str, Element]]: + refnode = self.resolve_xref(env, fromdocname, builder, 'ref', target, node, contnode) + if refnode is None: + return [] + else: + return [('ref', refnode)] + + +class CitationDefinitionTransform(SphinxTransform): + """Mark citation definition labels as not smartquoted.""" + default_priority = 619 + + def apply(self, **kwargs: Any) -> None: + domain = cast(CitationDomain, self.env.get_domain('citation')) + for node in self.document.traverse(nodes.citation): + # register citation node to domain + node['docname'] = self.env.docname + domain.note_citation(node) + + # mark citation labels as not smartquoted + label = cast(nodes.label, node[0]) + label['support_smartquotes'] = False + + +class CitationReferenceTransform(SphinxTransform): + """ + Replace citation references by pending_xref nodes before the default + docutils transform tries to resolve them. + """ + default_priority = 619 + + def apply(self, **kwargs: Any) -> None: + domain = cast(CitationDomain, self.env.get_domain('citation')) + for node in self.document.traverse(nodes.citation_reference): + target = node.astext() + ref = pending_xref(target, refdomain='citation', reftype='ref', + reftarget=target, refwarn=True, + support_smartquotes=False, + ids=node["ids"], + classes=node.get('classes', [])) + ref += nodes.inline(target, '[%s]' % target) + copy_source_info(node, ref) + node.replace_self(ref) + + # register reference node to domain + domain.note_citation_reference(ref) + + +def setup(app: "Sphinx") -> Dict[str, Any]: + app.add_domain(CitationDomain) + app.add_transform(CitationDefinitionTransform) + app.add_transform(CitationReferenceTransform) + + return { + 'version': 'builtin', + 'env_version': 1, + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/domains/cpp.py b/sphinx/sphinx/domains/cpp.py new file mode 100644 index 0000000..e09a56b --- /dev/null +++ b/sphinx/sphinx/domains/cpp.py @@ -0,0 +1,7254 @@ +""" + sphinx.domains.cpp + ~~~~~~~~~~~~~~~~~~ + + The C++ language domain. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re +from typing import ( + Any, Callable, Dict, Generator, Iterator, List, Tuple, Type, TypeVar, Union +) + +from docutils import nodes +from docutils.nodes import Element, Node, TextElement, system_message +from docutils.parsers.rst import directives + +from sphinx import addnodes +from sphinx.addnodes import desc_signature, pending_xref +from sphinx.application import Sphinx +from sphinx.builders import Builder +from sphinx.directives import ObjectDescription +from sphinx.domains import Domain, ObjType +from sphinx.environment import BuildEnvironment +from sphinx.errors import NoUri +from sphinx.locale import _, __ +from sphinx.roles import SphinxRole, XRefRole +from sphinx.transforms import SphinxTransform +from sphinx.transforms.post_transforms import ReferencesResolver +from sphinx.util import logging +from sphinx.util.cfamily import ( + NoOldIdError, ASTBaseBase, ASTAttribute, verify_description_mode, StringifyTransform, + BaseParser, DefinitionError, UnsupportedMultiCharacterCharLiteral, + identifier_re, anon_identifier_re, integer_literal_re, octal_literal_re, + hex_literal_re, binary_literal_re, float_literal_re, + char_literal_re +) +from sphinx.util.docfields import Field, GroupedField +from sphinx.util.docutils import SphinxDirective +from sphinx.util.nodes import make_refnode + + +logger = logging.getLogger(__name__) +T = TypeVar('T') + +""" + Important note on ids + ---------------------------------------------------------------------------- + + Multiple id generation schemes are used due to backwards compatibility. + - v1: 1.2.3 <= version < 1.3 + The style used before the rewrite. + It is not the actual old code, but a replication of the behaviour. + - v2: 1.3 <= version < now + Standardised mangling scheme from + https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling + though not completely implemented. + All versions are generated and attached to elements. The newest is used for + the index. All of the versions should work as permalinks. + + + Signature Nodes and Tagnames + ---------------------------------------------------------------------------- + + Each signature is in a desc_signature node, where all children are + desc_signature_line nodes. Each of these lines will have the attribute + 'sphinx_line_type' set to one of the following (prioritized): + - 'declarator', if the line contains the name of the declared object. + - 'templateParams', if the line starts a template parameter list, + - 'templateParams', if the line has template parameters + Note: such lines might get a new tag in the future. + - 'templateIntroduction, if the line is on the form 'conceptName{...}' + No other desc_signature nodes should exist (so far). + + + Grammar + ---------------------------------------------------------------------------- + + See https://www.nongnu.org/hcb/ for the grammar, + and https://github.com/cplusplus/draft/blob/master/source/grammar.tex, + and https://github.com/cplusplus/concepts-ts + for the newest grammar. + + common grammar things: + template-declaration -> + "template" "<" template-parameter-list ">" declaration + template-parameter-list -> + template-parameter + | template-parameter-list "," template-parameter + template-parameter -> + type-parameter + | parameter-declaration # i.e., same as a function argument + + type-parameter -> + "class" "..."[opt] identifier[opt] + | "class" identifier[opt] "=" type-id + | "typename" "..."[opt] identifier[opt] + | "typename" identifier[opt] "=" type-id + | "template" "<" template-parameter-list ">" + "class" "..."[opt] identifier[opt] + | "template" "<" template-parameter-list ">" + "class" identifier[opt] "=" id-expression + # also, from C++17 we can have "typename" in template templates + templateDeclPrefix -> + "template" "<" template-parameter-list ">" + + simple-declaration -> + attribute-specifier-seq[opt] decl-specifier-seq[opt] + init-declarator-list[opt] ; + # Drop the semi-colon. For now: drop the attributes (TODO). + # Use at most 1 init-declarator. + -> decl-specifier-seq init-declarator + -> decl-specifier-seq declarator initializer + + decl-specifier -> + storage-class-specifier -> + ( "static" (only for member_object and function_object) + | "extern" (only for member_object and function_object) + | "register" + ) + thread_local[opt] (only for member_object) + (it can also appear before the others) + + | type-specifier -> trailing-type-specifier + | function-specifier -> "inline" | "virtual" | "explicit" (only + for function_object) + | "friend" (only for function_object) + | "constexpr" (only for member_object and function_object) + trailing-type-specifier -> + simple-type-specifier + | elaborated-type-specifier + | typename-specifier + | cv-qualifier -> "const" | "volatile" + stricter grammar for decl-specifier-seq (with everything, each object + uses a subset): + visibility storage-class-specifier function-specifier "friend" + "constexpr" "volatile" "const" trailing-type-specifier + # where trailing-type-specifier can no be cv-qualifier + # Inside e.g., template paramters a strict subset is used + # (see type-specifier-seq) + trailing-type-specifier -> + simple-type-specifier -> + ::[opt] nested-name-specifier[opt] type-name + | ::[opt] nested-name-specifier "template" simple-template-id + | "char" | "bool" | ect. + | decltype-specifier + | elaborated-type-specifier -> + class-key attribute-specifier-seq[opt] ::[opt] + nested-name-specifier[opt] identifier + | class-key ::[opt] nested-name-specifier[opt] template[opt] + simple-template-id + | "enum" ::[opt] nested-name-specifier[opt] identifier + | typename-specifier -> + "typename" ::[opt] nested-name-specifier identifier + | "typename" ::[opt] nested-name-specifier template[opt] + simple-template-id + class-key -> "class" | "struct" | "union" + type-name ->* identifier | simple-template-id + # ignoring attributes and decltype, and then some left-factoring + trailing-type-specifier -> + rest-of-trailing + ("class" | "struct" | "union" | "typename") rest-of-trailing + build-in -> "char" | "bool" | ect. + decltype-specifier + rest-of-trailing -> (with some simplification) + "::"[opt] list-of-elements-separated-by-:: + element -> + "template"[opt] identifier ("<" template-argument-list ">")[opt] + template-argument-list -> + template-argument "..."[opt] + | template-argument-list "," template-argument "..."[opt] + template-argument -> + constant-expression + | type-specifier-seq abstract-declarator + | id-expression + + + declarator -> + ptr-declarator + | noptr-declarator parameters-and-qualifiers trailing-return-type + (TODO: for now we don't support trailing-eturn-type) + ptr-declarator -> + noptr-declarator + | ptr-operator ptr-declarator + noptr-declarator -> + declarator-id attribute-specifier-seq[opt] -> + "..."[opt] id-expression + | rest-of-trailing + | noptr-declarator parameters-and-qualifiers + | noptr-declarator "[" constant-expression[opt] "]" + attribute-specifier-seq[opt] + | "(" ptr-declarator ")" + ptr-operator -> + "*" attribute-specifier-seq[opt] cv-qualifier-seq[opt] + | "& attribute-specifier-seq[opt] + | "&&" attribute-specifier-seq[opt] + | "::"[opt] nested-name-specifier "*" attribute-specifier-seq[opt] + cv-qualifier-seq[opt] + # function_object must use a parameters-and-qualifiers, the others may + # use it (e.g., function poitners) + parameters-and-qualifiers -> + "(" parameter-clause ")" attribute-specifier-seq[opt] + cv-qualifier-seq[opt] ref-qualifier[opt] + exception-specification[opt] + ref-qualifier -> "&" | "&&" + exception-specification -> + "noexcept" ("(" constant-expression ")")[opt] + "throw" ("(" type-id-list ")")[opt] + # TODO: we don't implement attributes + # member functions can have initializers, but we fold them into here + memberFunctionInit -> "=" "0" + # (note: only "0" is allowed as the value, according to the standard, + # right?) + + enum-head -> + enum-key attribute-specifier-seq[opt] nested-name-specifier[opt] + identifier enum-base[opt] + enum-key -> "enum" | "enum struct" | "enum class" + enum-base -> + ":" type + enumerator-definition -> + identifier + | identifier "=" constant-expression + + We additionally add the possibility for specifying the visibility as the + first thing. + + concept_object: + goal: + just a declaration of the name (for now) + + grammar: only a single template parameter list, and the nested name + may not have any template argument lists + + "template" "<" template-parameter-list ">" + nested-name-specifier + + type_object: + goal: + either a single type (e.g., "MyClass:Something_T" or a typedef-like + thing (e.g. "Something Something_T" or "int I_arr[]" + grammar, single type: based on a type in a function parameter, but + without a name: + parameter-declaration + -> attribute-specifier-seq[opt] decl-specifier-seq + abstract-declarator[opt] + # Drop the attributes + -> decl-specifier-seq abstract-declarator[opt] + grammar, typedef-like: no initilizer + decl-specifier-seq declarator + Can start with a templateDeclPrefix. + + member_object: + goal: as a type_object which must have a declarator, and optionally + with a initializer + grammar: + decl-specifier-seq declarator initializer + Can start with a templateDeclPrefix. + + function_object: + goal: a function declaration, TODO: what about templates? for now: skip + grammar: no initializer + decl-specifier-seq declarator + Can start with a templateDeclPrefix. + + class_object: + goal: a class declaration, but with specification of a base class + grammar: + nested-name "final"[opt] (":" base-specifier-list)[opt] + base-specifier-list -> + base-specifier "..."[opt] + | base-specifier-list, base-specifier "..."[opt] + base-specifier -> + base-type-specifier + | "virtual" access-spe"cifier[opt] base-type-specifier + | access-specifier[opt] "virtual"[opt] base-type-specifier + Can start with a templateDeclPrefix. + + enum_object: + goal: an unscoped enum or a scoped enum, optionally with the underlying + type specified + grammar: + ("class" | "struct")[opt] visibility[opt] nested-name (":" type)[opt] + enumerator_object: + goal: an element in a scoped or unscoped enum. The name should be + injected according to the scopedness. + grammar: + nested-name ("=" constant-expression) + + namespace_object: + goal: a directive to put all following declarations in a specific scope + grammar: + nested-name +""" + +_string_re = re.compile(r"[LuU8]?('([^'\\]*(?:\\.[^'\\]*)*)'" + r'|"([^"\\]*(?:\\.[^"\\]*)*)")', re.S) +_visibility_re = re.compile(r'\b(public|private|protected)\b') +_operator_re = re.compile(r'''(?x) + \[\s*\] + | \(\s*\) + | \+\+ | -- + | ->\*? | \, + | (<<|>>)=? | && | \|\| + | [!<>=/*%+|&^~-]=? + | (\b(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|xor|xor_eq)\b) +''') +_fold_operator_re = re.compile(r'''(?x) + ->\* | \.\* | \, + | (<<|>>)=? | && | \|\| + | != + | [<>=/*%+|&^~-]=? +''') +# see https://en.cppreference.com/w/cpp/keyword +_keywords = [ + 'alignas', 'alignof', 'and', 'and_eq', 'asm', 'auto', 'bitand', 'bitor', + 'bool', 'break', 'case', 'catch', 'char', 'char16_t', 'char32_t', 'class', + 'compl', 'concept', 'const', 'constexpr', 'const_cast', 'continue', + 'decltype', 'default', 'delete', 'do', 'double', 'dynamic_cast', 'else', + 'enum', 'explicit', 'export', 'extern', 'false', 'float', 'for', 'friend', + 'goto', 'if', 'inline', 'int', 'long', 'mutable', 'namespace', 'new', + 'noexcept', 'not', 'not_eq', 'nullptr', 'operator', 'or', 'or_eq', + 'private', 'protected', 'public', 'register', 'reinterpret_cast', + 'requires', 'return', 'short', 'signed', 'sizeof', 'static', + 'static_assert', 'static_cast', 'struct', 'switch', 'template', 'this', + 'thread_local', 'throw', 'true', 'try', 'typedef', 'typeid', 'typename', + 'union', 'unsigned', 'using', 'virtual', 'void', 'volatile', 'wchar_t', + 'while', 'xor', 'xor_eq' +] + +_max_id = 4 +_id_prefix = [None, '', '_CPPv2', '_CPPv3', '_CPPv4'] +# Ids are used in lookup keys which are used across pickled files, +# so when _max_id changes, make sure to update the ENV_VERSION. + +# ------------------------------------------------------------------------------ +# Id v1 constants +# ------------------------------------------------------------------------------ + +_id_fundamental_v1 = { + 'char': 'c', + 'signed char': 'c', + 'unsigned char': 'C', + 'int': 'i', + 'signed int': 'i', + 'unsigned int': 'U', + 'long': 'l', + 'signed long': 'l', + 'unsigned long': 'L', + 'bool': 'b' +} +_id_shorthands_v1 = { + 'std::string': 'ss', + 'std::ostream': 'os', + 'std::istream': 'is', + 'std::iostream': 'ios', + 'std::vector': 'v', + 'std::map': 'm' +} +_id_operator_v1 = { + 'new': 'new-operator', + 'new[]': 'new-array-operator', + 'delete': 'delete-operator', + 'delete[]': 'delete-array-operator', + # the arguments will make the difference between unary and binary + # '+(unary)' : 'ps', + # '-(unary)' : 'ng', + # '&(unary)' : 'ad', + # '*(unary)' : 'de', + '~': 'inv-operator', + '+': 'add-operator', + '-': 'sub-operator', + '*': 'mul-operator', + '/': 'div-operator', + '%': 'mod-operator', + '&': 'and-operator', + '|': 'or-operator', + '^': 'xor-operator', + '=': 'assign-operator', + '+=': 'add-assign-operator', + '-=': 'sub-assign-operator', + '*=': 'mul-assign-operator', + '/=': 'div-assign-operator', + '%=': 'mod-assign-operator', + '&=': 'and-assign-operator', + '|=': 'or-assign-operator', + '^=': 'xor-assign-operator', + '<<': 'lshift-operator', + '>>': 'rshift-operator', + '<<=': 'lshift-assign-operator', + '>>=': 'rshift-assign-operator', + '==': 'eq-operator', + '!=': 'neq-operator', + '<': 'lt-operator', + '>': 'gt-operator', + '<=': 'lte-operator', + '>=': 'gte-operator', + '!': 'not-operator', + '&&': 'sand-operator', + '||': 'sor-operator', + '++': 'inc-operator', + '--': 'dec-operator', + ',': 'comma-operator', + '->*': 'pointer-by-pointer-operator', + '->': 'pointer-operator', + '()': 'call-operator', + '[]': 'subscript-operator' +} + +# ------------------------------------------------------------------------------ +# Id v > 1 constants +# ------------------------------------------------------------------------------ + +_id_fundamental_v2 = { + # not all of these are actually parsed as fundamental types, TODO: do that + 'void': 'v', + 'bool': 'b', + 'char': 'c', + 'signed char': 'a', + 'unsigned char': 'h', + 'wchar_t': 'w', + 'char32_t': 'Di', + 'char16_t': 'Ds', + 'short': 's', + 'short int': 's', + 'signed short': 's', + 'signed short int': 's', + 'unsigned short': 't', + 'unsigned short int': 't', + 'int': 'i', + 'signed': 'i', + 'signed int': 'i', + 'unsigned': 'j', + 'unsigned int': 'j', + 'long': 'l', + 'long int': 'l', + 'signed long': 'l', + 'signed long int': 'l', + 'unsigned long': 'm', + 'unsigned long int': 'm', + 'long long': 'x', + 'long long int': 'x', + 'signed long long': 'x', + 'signed long long int': 'x', + 'unsigned long long': 'y', + 'unsigned long long int': 'y', + 'float': 'f', + 'double': 'd', + 'long double': 'e', + 'auto': 'Da', + 'decltype(auto)': 'Dc', + 'std::nullptr_t': 'Dn' +} +_id_operator_v2 = { + 'new': 'nw', + 'new[]': 'na', + 'delete': 'dl', + 'delete[]': 'da', + # the arguments will make the difference between unary and binary + # in operator definitions + # '+(unary)' : 'ps', + # '-(unary)' : 'ng', + # '&(unary)' : 'ad', + # '*(unary)' : 'de', + '~': 'co', 'compl': 'co', + '+': 'pl', + '-': 'mi', + '*': 'ml', + '/': 'dv', + '%': 'rm', + '&': 'an', 'bitand': 'an', + '|': 'or', 'bitor': 'or', + '^': 'eo', 'xor': 'eo', + '=': 'aS', + '+=': 'pL', + '-=': 'mI', + '*=': 'mL', + '/=': 'dV', + '%=': 'rM', + '&=': 'aN', 'and_eq': 'aN', + '|=': 'oR', 'or_eq': 'oR', + '^=': 'eO', 'xor_eq': 'eO', + '<<': 'ls', + '>>': 'rs', + '<<=': 'lS', + '>>=': 'rS', + '==': 'eq', + '!=': 'ne', 'not_eq': 'ne', + '<': 'lt', + '>': 'gt', + '<=': 'le', + '>=': 'ge', + '!': 'nt', 'not': 'nt', + '&&': 'aa', 'and': 'aa', + '||': 'oo', 'or': 'oo', + '++': 'pp', + '--': 'mm', + ',': 'cm', + '->*': 'pm', + '->': 'pt', + '()': 'cl', + '[]': 'ix', + '.*': 'ds' # this one is not overloadable, but we need it for expressions +} +_id_operator_unary_v2 = { + '++': 'pp_', + '--': 'mm_', + '*': 'de', + '&': 'ad', + '+': 'ps', + '-': 'ng', + '!': 'nt', 'not': 'nt', + '~': 'co', 'compl': 'co' +} +_id_char_from_prefix = { + None: 'c', 'u8': 'c', + 'u': 'Ds', 'U': 'Di', 'L': 'w' +} # type: Dict[Any, str] +# these are ordered by preceedence +_expression_bin_ops = [ + ['||', 'or'], + ['&&', 'and'], + ['|', 'bitor'], + ['^', 'xor'], + ['&', 'bitand'], + ['==', '!=', 'not_eq'], + ['<=', '>=', '<', '>'], + ['<<', '>>'], + ['+', '-'], + ['*', '/', '%'], + ['.*', '->*'] +] +_expression_unary_ops = ["++", "--", "*", "&", "+", "-", "!", "not", "~", "compl"] +_expression_assignment_ops = ["=", "*=", "/=", "%=", "+=", "-=", + ">>=", "<<=", "&=", "and_eq", "^=", "|=", "xor_eq", "or_eq"] +_id_explicit_cast = { + 'dynamic_cast': 'dc', + 'static_cast': 'sc', + 'const_cast': 'cc', + 'reinterpret_cast': 'rc' +} + + +class _DuplicateSymbolError(Exception): + def __init__(self, symbol: "Symbol", declaration: "ASTDeclaration") -> None: + assert symbol + assert declaration + self.symbol = symbol + self.declaration = declaration + + def __str__(self) -> str: + return "Internal C++ duplicate symbol error:\n%s" % self.symbol.dump(0) + + +class ASTBase(ASTBaseBase): + pass + + +# Names +################################################################################ + +class ASTIdentifier(ASTBase): + def __init__(self, identifier: str) -> None: + assert identifier is not None + assert len(identifier) != 0 + self.identifier = identifier + + def is_anon(self) -> bool: + return self.identifier[0] == '@' + + def get_id(self, version: int) -> str: + if self.is_anon() and version < 3: + raise NoOldIdError() + if version == 1: + if self.identifier == 'size_t': + return 's' + else: + return self.identifier + if self.identifier == "std": + return 'St' + elif self.identifier[0] == "~": + # a destructor, just use an arbitrary version of dtors + return 'D0' + else: + if self.is_anon(): + return 'Ut%d_%s' % (len(self.identifier) - 1, self.identifier[1:]) + else: + return str(len(self.identifier)) + self.identifier + + # and this is where we finally make a difference between __str__ and the display string + + def __str__(self) -> str: + return self.identifier + + def get_display_string(self) -> str: + return "[anonymous]" if self.is_anon() else self.identifier + + def describe_signature(self, signode: TextElement, mode: str, env: "BuildEnvironment", + prefix: str, templateArgs: str, symbol: "Symbol") -> None: + verify_description_mode(mode) + if mode == 'markType': + targetText = prefix + self.identifier + templateArgs + pnode = addnodes.pending_xref('', refdomain='cpp', + reftype='identifier', + reftarget=targetText, modname=None, + classname=None) + key = symbol.get_lookup_key() + pnode['cpp:parent_key'] = key + if self.is_anon(): + pnode += nodes.strong(text="[anonymous]") + else: + pnode += nodes.Text(self.identifier) + signode += pnode + elif mode == 'lastIsName': + if self.is_anon(): + signode += nodes.strong(text="[anonymous]") + else: + signode += addnodes.desc_name(self.identifier, self.identifier) + elif mode == 'noneIsName': + if self.is_anon(): + signode += nodes.strong(text="[anonymous]") + else: + signode += nodes.Text(self.identifier) + else: + raise Exception('Unknown description mode: %s' % mode) + + +class ASTNestedNameElement(ASTBase): + def __init__(self, identOrOp: Union[ASTIdentifier, "ASTOperator"], + templateArgs: "ASTTemplateArgs") -> None: + self.identOrOp = identOrOp + self.templateArgs = templateArgs + + def is_operator(self) -> bool: + return False + + def get_id(self, version: int) -> str: + res = self.identOrOp.get_id(version) + if self.templateArgs: + res += self.templateArgs.get_id(version) + return res + + def _stringify(self, transform: StringifyTransform) -> str: + res = transform(self.identOrOp) + if self.templateArgs: + res += transform(self.templateArgs) + return res + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", prefix: str, symbol: "Symbol") -> None: + tArgs = str(self.templateArgs) if self.templateArgs is not None else '' + self.identOrOp.describe_signature(signode, mode, env, prefix, tArgs, symbol) + if self.templateArgs is not None: + self.templateArgs.describe_signature(signode, mode, env, symbol) + + +class ASTNestedName(ASTBase): + def __init__(self, names: List[ASTNestedNameElement], + templates: List[bool], rooted: bool) -> None: + assert len(names) > 0 + self.names = names + self.templates = templates + assert len(self.names) == len(self.templates) + self.rooted = rooted + + @property + def name(self) -> "ASTNestedName": + return self + + def num_templates(self) -> int: + count = 0 + for n in self.names: + if n.is_operator(): + continue + if n.templateArgs: + count += 1 + return count + + def get_id(self, version: int, modifiers: str = '') -> str: + if version == 1: + tt = str(self) + if tt in _id_shorthands_v1: + return _id_shorthands_v1[tt] + else: + return '::'.join(n.get_id(version) for n in self.names) + + res = [] + if len(self.names) > 1 or len(modifiers) > 0: + res.append('N') + res.append(modifiers) + for n in self.names: + res.append(n.get_id(version)) + if len(self.names) > 1 or len(modifiers) > 0: + res.append('E') + return ''.join(res) + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + if self.rooted: + res.append('') + for i in range(len(self.names)): + n = self.names[i] + t = self.templates[i] + if t: + res.append("template " + transform(n)) + else: + res.append(transform(n)) + return '::'.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + # just print the name part, with template args, not template params + if mode == 'noneIsName': + signode += nodes.Text(str(self)) + elif mode == 'param': + name = str(self) + signode += nodes.emphasis(name, name) + elif mode == 'markType' or mode == 'lastIsName' or mode == 'markName': + # Each element should be a pending xref targeting the complete + # prefix. however, only the identifier part should be a link, such + # that template args can be a link as well. + # For 'lastIsName' we should also prepend template parameter lists. + templateParams = [] # type: List[Any] + if mode == 'lastIsName': + assert symbol is not None + if symbol.declaration.templatePrefix is not None: + templateParams = symbol.declaration.templatePrefix.templates + iTemplateParams = 0 + templateParamsPrefix = '' + prefix = '' + first = True + names = self.names[:-1] if mode == 'lastIsName' else self.names + # If lastIsName, then wrap all of the prefix in a desc_addname, + # else append directly to signode. + # NOTE: Breathe relies on the prefix being in the desc_addname node, + # so it can remove it in inner declarations. + dest = signode + if mode == 'lastIsName': + dest = addnodes.desc_addname() + for i in range(len(names)): + nne = names[i] + template = self.templates[i] + if not first: + dest += nodes.Text('::') + prefix += '::' + if template: + dest += nodes.Text("template ") + first = False + txt_nne = str(nne) + if txt_nne != '': + if nne.templateArgs and iTemplateParams < len(templateParams): + templateParamsPrefix += str(templateParams[iTemplateParams]) + iTemplateParams += 1 + nne.describe_signature(dest, 'markType', + env, templateParamsPrefix + prefix, symbol) + prefix += txt_nne + if mode == 'lastIsName': + if len(self.names) > 1: + dest += addnodes.desc_addname('::', '::') + signode += dest + if self.templates[-1]: + signode += nodes.Text("template ") + self.names[-1].describe_signature(signode, mode, env, '', symbol) + else: + raise Exception('Unknown description mode: %s' % mode) + + +################################################################################ +# Expressions +################################################################################ + +class ASTExpression(ASTBase): + def get_id(self, version: int) -> str: + raise NotImplementedError(repr(self)) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + raise NotImplementedError(repr(self)) + + +# Primary expressions +################################################################################ + +class ASTLiteral(ASTExpression): + pass + + +class ASTPointerLiteral(ASTLiteral): + def _stringify(self, transform: StringifyTransform) -> str: + return 'nullptr' + + def get_id(self, version: int) -> str: + return 'LDnE' + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('nullptr')) + + +class ASTBooleanLiteral(ASTLiteral): + def __init__(self, value: bool) -> None: + self.value = value + + def _stringify(self, transform: StringifyTransform) -> str: + if self.value: + return 'true' + else: + return 'false' + + def get_id(self, version: int) -> str: + if self.value: + return 'L1E' + else: + return 'L0E' + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text(str(self))) + + +class ASTNumberLiteral(ASTLiteral): + def __init__(self, data: str) -> None: + self.data = data + + def _stringify(self, transform: StringifyTransform) -> str: + return self.data + + def get_id(self, version: int) -> str: + return "L%sE" % self.data + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + txt = str(self) + signode.append(nodes.Text(txt, txt)) + + +class ASTStringLiteral(ASTLiteral): + def __init__(self, data: str) -> None: + self.data = data + + def _stringify(self, transform: StringifyTransform) -> str: + return self.data + + def get_id(self, version: int) -> str: + # note: the length is not really correct with escaping + return "LA%d_KcE" % (len(self.data) - 2) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + txt = str(self) + signode.append(nodes.Text(txt, txt)) + + +class ASTCharLiteral(ASTLiteral): + def __init__(self, prefix: str, data: str) -> None: + self.prefix = prefix # may be None when no prefix + self.data = data + assert prefix in _id_char_from_prefix + self.type = _id_char_from_prefix[prefix] + decoded = data.encode().decode('unicode-escape') + if len(decoded) == 1: + self.value = ord(decoded) + else: + raise UnsupportedMultiCharacterCharLiteral(decoded) + + def _stringify(self, transform: StringifyTransform) -> str: + if self.prefix is None: + return "'" + self.data + "'" + else: + return self.prefix + "'" + self.data + "'" + + def get_id(self, version: int) -> str: + return self.type + str(self.value) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + txt = str(self) + signode.append(nodes.Text(txt, txt)) + + +class ASTThisLiteral(ASTExpression): + def _stringify(self, transform: StringifyTransform) -> str: + return "this" + + def get_id(self, version: int) -> str: + return "fpT" + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text("this")) + + +class ASTFoldExpr(ASTExpression): + def __init__(self, leftExpr: ASTExpression, + op: str, rightExpr: ASTExpression) -> None: + assert leftExpr is not None or rightExpr is not None + self.leftExpr = leftExpr + self.op = op + self.rightExpr = rightExpr + + def _stringify(self, transform: StringifyTransform) -> str: + res = ['('] + if self.leftExpr: + res.append(transform(self.leftExpr)) + res.append(' ') + res.append(transform(self.op)) + res.append(' ') + res.append('...') + if self.rightExpr: + res.append(' ') + res.append(transform(self.op)) + res.append(' ') + res.append(transform(self.rightExpr)) + res.append(')') + return ''.join(res) + + def get_id(self, version: int) -> str: + assert version >= 3 + if version == 3: + return str(self) + # https://github.com/itanium-cxx-abi/cxx-abi/pull/67 + res = [] + if self.leftExpr is None: # (... op expr) + res.append('fl') + elif self.rightExpr is None: # (expr op ...) + res.append('fr') + else: # (expr op ... op expr) + # we don't check where the parameter pack is, + # we just always call this a binary left fold + res.append('fL') + res.append(_id_operator_v2[self.op]) + if self.leftExpr: + res.append(self.leftExpr.get_id(version)) + if self.rightExpr: + res.append(self.rightExpr.get_id(version)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('(')) + if self.leftExpr: + self.leftExpr.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text(' ')) + signode.append(nodes.Text(self.op)) + signode.append(nodes.Text(' ')) + signode.append(nodes.Text('...')) + if self.rightExpr: + signode.append(nodes.Text(' ')) + signode.append(nodes.Text(self.op)) + signode.append(nodes.Text(' ')) + self.rightExpr.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text(')')) + + +class ASTParenExpr(ASTExpression): + def __init__(self, expr: ASTExpression): + self.expr = expr + + def _stringify(self, transform: StringifyTransform) -> str: + return '(' + transform(self.expr) + ')' + + def get_id(self, version: int) -> str: + return self.expr.get_id(version) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('(', '(')) + self.expr.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text(')', ')')) + + +class ASTIdExpression(ASTExpression): + def __init__(self, name: ASTNestedName): + # note: this class is basically to cast a nested name as an expression + self.name = name + + def _stringify(self, transform: StringifyTransform) -> str: + return transform(self.name) + + def get_id(self, version: int) -> str: + return self.name.get_id(version) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + self.name.describe_signature(signode, mode, env, symbol) + + +# Postfix expressions +################################################################################ + +class ASTPostfixOp(ASTBase): + def get_id(self, idPrefix: str, version: int) -> str: + raise NotImplementedError(repr(self)) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + raise NotImplementedError(repr(self)) + + +class ASTPostfixArray(ASTPostfixOp): + def __init__(self, expr: ASTExpression): + self.expr = expr + + def _stringify(self, transform: StringifyTransform) -> str: + return '[' + transform(self.expr) + ']' + + def get_id(self, idPrefix: str, version: int) -> str: + return 'ix' + idPrefix + self.expr.get_id(version) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('[')) + self.expr.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text(']')) + + +class ASTPostfixMember(ASTPostfixOp): + def __init__(self, name: ASTNestedName): + self.name = name + + def _stringify(self, transform: StringifyTransform) -> str: + return '.' + transform(self.name) + + def get_id(self, idPrefix: str, version: int) -> str: + return 'dt' + idPrefix + self.name.get_id(version) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('.')) + self.name.describe_signature(signode, 'noneIsName', env, symbol) + + +class ASTPostfixMemberOfPointer(ASTPostfixOp): + def __init__(self, name: ASTNestedName): + self.name = name + + def _stringify(self, transform: StringifyTransform) -> str: + return '->' + transform(self.name) + + def get_id(self, idPrefix: str, version: int) -> str: + return 'pt' + idPrefix + self.name.get_id(version) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('->')) + self.name.describe_signature(signode, 'noneIsName', env, symbol) + + +class ASTPostfixInc(ASTPostfixOp): + def _stringify(self, transform: StringifyTransform) -> str: + return '++' + + def get_id(self, idPrefix: str, version: int) -> str: + return 'pp' + idPrefix + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('++')) + + +class ASTPostfixDec(ASTPostfixOp): + def _stringify(self, transform: StringifyTransform) -> str: + return '--' + + def get_id(self, idPrefix: str, version: int) -> str: + return 'mm' + idPrefix + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('--')) + + +class ASTPostfixCallExpr(ASTPostfixOp): + def __init__(self, lst: Union["ASTParenExprList", "ASTBracedInitList"]) -> None: + self.lst = lst + + def _stringify(self, transform: StringifyTransform) -> str: + return transform(self.lst) + + def get_id(self, idPrefix: str, version: int) -> str: + res = ['cl', idPrefix] + for e in self.lst.exprs: + res.append(e.get_id(version)) + res.append('E') + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + self.lst.describe_signature(signode, mode, env, symbol) + + +class ASTPostfixExpr(ASTExpression): + def __init__(self, prefix: "ASTType", postFixes: List[ASTPostfixOp]): + self.prefix = prefix + self.postFixes = postFixes + + def _stringify(self, transform: StringifyTransform) -> str: + res = [transform(self.prefix)] + for p in self.postFixes: + res.append(transform(p)) + return ''.join(res) + + def get_id(self, version: int) -> str: + id = self.prefix.get_id(version) + for p in self.postFixes: + id = p.get_id(id, version) + return id + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + self.prefix.describe_signature(signode, mode, env, symbol) + for p in self.postFixes: + p.describe_signature(signode, mode, env, symbol) + + +class ASTExplicitCast(ASTExpression): + def __init__(self, cast: str, typ: "ASTType", expr: ASTExpression): + assert cast in _id_explicit_cast + self.cast = cast + self.typ = typ + self.expr = expr + + def _stringify(self, transform: StringifyTransform) -> str: + res = [self.cast] + res.append('<') + res.append(transform(self.typ)) + res.append('>(') + res.append(transform(self.expr)) + res.append(')') + return ''.join(res) + + def get_id(self, version: int) -> str: + return (_id_explicit_cast[self.cast] + + self.typ.get_id(version) + + self.expr.get_id(version)) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text(self.cast)) + signode.append(nodes.Text('<')) + self.typ.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text('>')) + signode.append(nodes.Text('(')) + self.expr.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text(')')) + + +class ASTTypeId(ASTExpression): + def __init__(self, typeOrExpr: Union["ASTType", ASTExpression], isType: bool): + self.typeOrExpr = typeOrExpr + self.isType = isType + + def _stringify(self, transform: StringifyTransform) -> str: + return 'typeid(' + transform(self.typeOrExpr) + ')' + + def get_id(self, version: int) -> str: + prefix = 'ti' if self.isType else 'te' + return prefix + self.typeOrExpr.get_id(version) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('typeid')) + signode.append(nodes.Text('(')) + self.typeOrExpr.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text(')')) + + +# Unary expressions +################################################################################ + +class ASTUnaryOpExpr(ASTExpression): + def __init__(self, op: str, expr: ASTExpression): + self.op = op + self.expr = expr + + def _stringify(self, transform: StringifyTransform) -> str: + if self.op[0] in 'cn': + return transform(self.op) + " " + transform(self.expr) + else: + return transform(self.op) + transform(self.expr) + + def get_id(self, version: int) -> str: + return _id_operator_unary_v2[self.op] + self.expr.get_id(version) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text(self.op)) + if self.op[0] in 'cn': + signode.append(nodes.Text(' ')) + self.expr.describe_signature(signode, mode, env, symbol) + + +class ASTSizeofParamPack(ASTExpression): + def __init__(self, identifier: ASTIdentifier): + self.identifier = identifier + + def _stringify(self, transform: StringifyTransform) -> str: + return "sizeof...(" + transform(self.identifier) + ")" + + def get_id(self, version: int) -> str: + return 'sZ' + self.identifier.get_id(version) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('sizeof...(')) + self.identifier.describe_signature(signode, mode, env, + symbol=symbol, prefix="", templateArgs="") + signode.append(nodes.Text(')')) + + +class ASTSizeofType(ASTExpression): + def __init__(self, typ: "ASTType"): + self.typ = typ + + def _stringify(self, transform: StringifyTransform) -> str: + return "sizeof(" + transform(self.typ) + ")" + + def get_id(self, version: int) -> str: + return 'st' + self.typ.get_id(version) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('sizeof(')) + self.typ.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text(')')) + + +class ASTSizeofExpr(ASTExpression): + def __init__(self, expr: ASTExpression): + self.expr = expr + + def _stringify(self, transform: StringifyTransform) -> str: + return "sizeof " + transform(self.expr) + + def get_id(self, version: int) -> str: + return 'sz' + self.expr.get_id(version) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('sizeof ')) + self.expr.describe_signature(signode, mode, env, symbol) + + +class ASTAlignofExpr(ASTExpression): + def __init__(self, typ: "ASTType"): + self.typ = typ + + def _stringify(self, transform: StringifyTransform) -> str: + return "alignof(" + transform(self.typ) + ")" + + def get_id(self, version: int) -> str: + return 'at' + self.typ.get_id(version) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('alignof(')) + self.typ.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text(')')) + + +class ASTNoexceptExpr(ASTExpression): + def __init__(self, expr: ASTExpression): + self.expr = expr + + def _stringify(self, transform: StringifyTransform) -> str: + return "noexcept(" + transform(self.expr) + ")" + + def get_id(self, version: int) -> str: + return 'nx' + self.expr.get_id(version) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('noexcept(')) + self.expr.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text(')')) + + +class ASTNewExpr(ASTExpression): + def __init__(self, rooted: bool, isNewTypeId: bool, typ: "ASTType", + initList: Union["ASTParenExprList", "ASTBracedInitList"]) -> None: + self.rooted = rooted + self.isNewTypeId = isNewTypeId + self.typ = typ + self.initList = initList + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + if self.rooted: + res.append('::') + res.append('new ') + # TODO: placement + if self.isNewTypeId: + res.append(transform(self.typ)) + else: + assert False + if self.initList is not None: + res.append(transform(self.initList)) + return ''.join(res) + + def get_id(self, version: int) -> str: + # the array part will be in the type mangling, so na is not used + res = ['nw'] + # TODO: placement + res.append('_') + res.append(self.typ.get_id(version)) + if self.initList is not None: + res.append(self.initList.get_id(version)) + else: + res.append('E') + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + if self.rooted: + signode.append(nodes.Text('::')) + signode.append(nodes.Text('new ')) + # TODO: placement + if self.isNewTypeId: + self.typ.describe_signature(signode, mode, env, symbol) + else: + assert False + if self.initList is not None: + self.initList.describe_signature(signode, mode, env, symbol) + + +class ASTDeleteExpr(ASTExpression): + def __init__(self, rooted: bool, array: bool, expr: ASTExpression): + self.rooted = rooted + self.array = array + self.expr = expr + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + if self.rooted: + res.append('::') + res.append('delete ') + if self.array: + res.append('[] ') + res.append(transform(self.expr)) + return ''.join(res) + + def get_id(self, version: int) -> str: + if self.array: + id = "da" + else: + id = "dl" + return id + self.expr.get_id(version) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + if self.rooted: + signode.append(nodes.Text('::')) + signode.append(nodes.Text('delete ')) + if self.array: + signode.append(nodes.Text('[] ')) + self.expr.describe_signature(signode, mode, env, symbol) + + +# Other expressions +################################################################################ + +class ASTCastExpr(ASTExpression): + def __init__(self, typ: "ASTType", expr: ASTExpression): + self.typ = typ + self.expr = expr + + def _stringify(self, transform: StringifyTransform) -> str: + res = ['('] + res.append(transform(self.typ)) + res.append(')') + res.append(transform(self.expr)) + return ''.join(res) + + def get_id(self, version: int) -> str: + return 'cv' + self.typ.get_id(version) + self.expr.get_id(version) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('(')) + self.typ.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text(')')) + self.expr.describe_signature(signode, mode, env, symbol) + + +class ASTBinOpExpr(ASTExpression): + def __init__(self, exprs: List[ASTExpression], ops: List[str]): + assert len(exprs) > 0 + assert len(exprs) == len(ops) + 1 + self.exprs = exprs + self.ops = ops + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + res.append(transform(self.exprs[0])) + for i in range(1, len(self.exprs)): + res.append(' ') + res.append(self.ops[i - 1]) + res.append(' ') + res.append(transform(self.exprs[i])) + return ''.join(res) + + def get_id(self, version: int) -> str: + assert version >= 2 + res = [] + for i in range(len(self.ops)): + res.append(_id_operator_v2[self.ops[i]]) + res.append(self.exprs[i].get_id(version)) + res.append(self.exprs[-1].get_id(version)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + self.exprs[0].describe_signature(signode, mode, env, symbol) + for i in range(1, len(self.exprs)): + signode.append(nodes.Text(' ')) + signode.append(nodes.Text(self.ops[i - 1])) + signode.append(nodes.Text(' ')) + self.exprs[i].describe_signature(signode, mode, env, symbol) + + +class ASTBracedInitList(ASTBase): + def __init__(self, exprs: List[Union[ASTExpression, "ASTBracedInitList"]], + trailingComma: bool) -> None: + self.exprs = exprs + self.trailingComma = trailingComma + + def get_id(self, version: int) -> str: + return "il%sE" % ''.join(e.get_id(version) for e in self.exprs) + + def _stringify(self, transform: StringifyTransform) -> str: + exprs = [transform(e) for e in self.exprs] + trailingComma = ',' if self.trailingComma else '' + return '{%s%s}' % (', '.join(exprs), trailingComma) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + signode.append(nodes.Text('{')) + first = True + for e in self.exprs: + if not first: + signode.append(nodes.Text(', ')) + else: + first = False + e.describe_signature(signode, mode, env, symbol) + if self.trailingComma: + signode.append(nodes.Text(',')) + signode.append(nodes.Text('}')) + + +class ASTAssignmentExpr(ASTExpression): + def __init__(self, exprs: List[Union[ASTExpression, ASTBracedInitList]], ops: List[str]): + assert len(exprs) > 0 + assert len(exprs) == len(ops) + 1 + self.exprs = exprs + self.ops = ops + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + res.append(transform(self.exprs[0])) + for i in range(1, len(self.exprs)): + res.append(' ') + res.append(self.ops[i - 1]) + res.append(' ') + res.append(transform(self.exprs[i])) + return ''.join(res) + + def get_id(self, version: int) -> str: + res = [] + for i in range(len(self.ops)): + res.append(_id_operator_v2[self.ops[i]]) + res.append(self.exprs[i].get_id(version)) + res.append(self.exprs[-1].get_id(version)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + self.exprs[0].describe_signature(signode, mode, env, symbol) + for i in range(1, len(self.exprs)): + signode.append(nodes.Text(' ')) + signode.append(nodes.Text(self.ops[i - 1])) + signode.append(nodes.Text(' ')) + self.exprs[i].describe_signature(signode, mode, env, symbol) + + +class ASTCommaExpr(ASTExpression): + def __init__(self, exprs: List[ASTExpression]): + assert len(exprs) > 0 + self.exprs = exprs + + def _stringify(self, transform: StringifyTransform) -> str: + return ', '.join(transform(e) for e in self.exprs) + + def get_id(self, version: int) -> str: + id_ = _id_operator_v2[','] + res = [] + for i in range(len(self.exprs) - 1): + res.append(id_) + res.append(self.exprs[i].get_id(version)) + res.append(self.exprs[-1].get_id(version)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + self.exprs[0].describe_signature(signode, mode, env, symbol) + for i in range(1, len(self.exprs)): + signode.append(nodes.Text(', ')) + self.exprs[i].describe_signature(signode, mode, env, symbol) + + +class ASTFallbackExpr(ASTExpression): + def __init__(self, expr: str): + self.expr = expr + + def _stringify(self, transform: StringifyTransform) -> str: + return self.expr + + def get_id(self, version: int) -> str: + return str(self.expr) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode += nodes.Text(self.expr) + + +################################################################################ +# Types +################################################################################ + +# Things for ASTNestedName +################################################################################ + +class ASTOperator(ASTBase): + def is_anon(self) -> bool: + return False + + def is_operator(self) -> bool: + return True + + def get_id(self, version: int) -> str: + raise NotImplementedError() + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", prefix: str, templateArgs: str, + symbol: "Symbol") -> None: + verify_description_mode(mode) + identifier = str(self) + if mode == 'lastIsName': + signode += addnodes.desc_name(identifier, identifier) + else: + signode += addnodes.desc_addname(identifier, identifier) + + +class ASTOperatorBuildIn(ASTOperator): + def __init__(self, op: str) -> None: + self.op = op + + def get_id(self, version: int) -> str: + if version == 1: + ids = _id_operator_v1 + if self.op not in ids: + raise NoOldIdError() + else: + ids = _id_operator_v2 + if self.op not in ids: + raise Exception('Internal error: Build-in operator "%s" can not ' + 'be mapped to an id.' % self.op) + return ids[self.op] + + def _stringify(self, transform: StringifyTransform) -> str: + if self.op in ('new', 'new[]', 'delete', 'delete[]') or self.op[0] in "abcnox": + return 'operator ' + self.op + else: + return 'operator' + self.op + + +class ASTOperatorLiteral(ASTOperator): + def __init__(self, identifier: ASTIdentifier) -> None: + self.identifier = identifier + + def get_id(self, version: int) -> str: + if version == 1: + raise NoOldIdError() + else: + return 'li' + self.identifier.get_id(version) + + def _stringify(self, transform: StringifyTransform) -> str: + return 'operator""' + transform(self.identifier) + + +class ASTOperatorType(ASTOperator): + def __init__(self, type: "ASTType") -> None: + self.type = type + + def get_id(self, version: int) -> str: + if version == 1: + return 'castto-%s-operator' % self.type.get_id(version) + else: + return 'cv' + self.type.get_id(version) + + def _stringify(self, transform: StringifyTransform) -> str: + return ''.join(['operator ', transform(self.type)]) + + def get_name_no_template(self) -> str: + return str(self) + + +class ASTTemplateArgConstant(ASTBase): + def __init__(self, value: ASTExpression) -> None: + self.value = value + + def _stringify(self, transform: StringifyTransform) -> str: + return transform(self.value) + + def get_id(self, version: int) -> str: + if version == 1: + return str(self).replace(' ', '-') + if version == 2: + return 'X' + str(self) + 'E' + return 'X' + self.value.get_id(version) + 'E' + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + self.value.describe_signature(signode, mode, env, symbol) + + +class ASTTemplateArgs(ASTBase): + def __init__(self, args: List[Union["ASTType", ASTTemplateArgConstant]], + packExpansion: bool) -> None: + assert args is not None + self.args = args + self.packExpansion = packExpansion + + def get_id(self, version: int) -> str: + if version == 1: + res = [] + res.append(':') + res.append('.'.join(a.get_id(version) for a in self.args)) + res.append(':') + return ''.join(res) + + res = [] + res.append('I') + if len(self.args) > 0: + for a in self.args[:-1]: + res.append(a.get_id(version)) + if self.packExpansion: + res.append('J') + res.append(self.args[-1].get_id(version)) + if self.packExpansion: + res.append('E') + res.append('E') + return ''.join(res) + + def _stringify(self, transform: StringifyTransform) -> str: + res = ', '.join(transform(a) for a in self.args) + if self.packExpansion: + res += '...' + return '<' + res + '>' + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + signode += nodes.Text('<') + first = True + for a in self.args: + if not first: + signode += nodes.Text(', ') + first = False + a.describe_signature(signode, 'markType', env, symbol=symbol) + if self.packExpansion: + signode += nodes.Text('...') + signode += nodes.Text('>') + + +# Main part of declarations +################################################################################ + +class ASTTrailingTypeSpec(ASTBase): + def get_id(self, version: int) -> str: + raise NotImplementedError(repr(self)) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + raise NotImplementedError(repr(self)) + + +class ASTTrailingTypeSpecFundamental(ASTTrailingTypeSpec): + def __init__(self, name: str) -> None: + self.name = name + + def _stringify(self, transform: StringifyTransform) -> str: + return self.name + + def get_id(self, version: int) -> str: + if version == 1: + res = [] + for a in self.name.split(' '): + if a in _id_fundamental_v1: + res.append(_id_fundamental_v1[a]) + else: + res.append(a) + return '-'.join(res) + + if self.name not in _id_fundamental_v2: + raise Exception( + 'Semi-internal error: Fundamental type "%s" can not be mapped ' + 'to an id. Is it a true fundamental type? If not so, the ' + 'parser should have rejected it.' % self.name) + return _id_fundamental_v2[self.name] + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode += nodes.Text(str(self.name)) + + +class ASTTrailingTypeSpecDecltypeAuto(ASTTrailingTypeSpec): + def _stringify(self, transform: StringifyTransform) -> str: + return 'decltype(auto)' + + def get_id(self, version: int) -> str: + if version == 1: + raise NoOldIdError() + return 'Dc' + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text(str(self))) + + +class ASTTrailingTypeSpecDecltype(ASTTrailingTypeSpec): + def __init__(self, expr: ASTExpression): + self.expr = expr + + def _stringify(self, transform: StringifyTransform) -> str: + return 'decltype(' + transform(self.expr) + ')' + + def get_id(self, version: int) -> str: + if version == 1: + raise NoOldIdError() + return 'DT' + self.expr.get_id(version) + "E" + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode.append(nodes.Text('decltype(')) + self.expr.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text(')')) + + +class ASTTrailingTypeSpecName(ASTTrailingTypeSpec): + def __init__(self, prefix: str, nestedName: ASTNestedName) -> None: + self.prefix = prefix + self.nestedName = nestedName + + @property + def name(self) -> ASTNestedName: + return self.nestedName + + def get_id(self, version: int) -> str: + return self.nestedName.get_id(version) + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + if self.prefix: + res.append(self.prefix) + res.append(' ') + res.append(transform(self.nestedName)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + if self.prefix: + signode += addnodes.desc_annotation(self.prefix, self.prefix) + signode += nodes.Text(' ') + self.nestedName.describe_signature(signode, mode, env, symbol=symbol) + + +class ASTFunctionParameter(ASTBase): + def __init__(self, arg: Union["ASTTypeWithInit", + "ASTTemplateParamConstrainedTypeWithInit"], + ellipsis: bool = False) -> None: + self.arg = arg + self.ellipsis = ellipsis + + def get_id(self, version: int, objectType: str = None, symbol: "Symbol" = None) -> str: + # this is not part of the normal name mangling in C++ + if symbol: + # the anchor will be our parent + return symbol.parent.declaration.get_id(version, prefixed=None) + # else, do the usual + if self.ellipsis: + return 'z' + else: + return self.arg.get_id(version) + + def _stringify(self, transform: StringifyTransform) -> str: + if self.ellipsis: + return '...' + else: + return transform(self.arg) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + if self.ellipsis: + signode += nodes.Text('...') + else: + self.arg.describe_signature(signode, mode, env, symbol=symbol) + + +class ASTParametersQualifiers(ASTBase): + def __init__(self, args: List[ASTFunctionParameter], + volatile: bool, const: bool, refQual: str, + exceptionSpec: str, override: bool, final: bool, initializer: str) -> None: + self.args = args + self.volatile = volatile + self.const = const + self.refQual = refQual + self.exceptionSpec = exceptionSpec + self.override = override + self.final = final + self.initializer = initializer + + @property + def function_params(self) -> List[ASTFunctionParameter]: + return self.args + + def get_modifiers_id(self, version: int) -> str: + res = [] + if self.volatile: + res.append('V') + if self.const: + if version == 1: + res.append('C') + else: + res.append('K') + if self.refQual == '&&': + res.append('O') + elif self.refQual == '&': + res.append('R') + return ''.join(res) + + def get_param_id(self, version: int) -> str: + if version == 1: + if len(self.args) == 0: + return '' + else: + return '__' + '.'.join(a.get_id(version) for a in self.args) + if len(self.args) == 0: + return 'v' + else: + return ''.join(a.get_id(version) for a in self.args) + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + res.append('(') + first = True + for a in self.args: + if not first: + res.append(', ') + first = False + res.append(str(a)) + res.append(')') + if self.volatile: + res.append(' volatile') + if self.const: + res.append(' const') + if self.refQual: + res.append(' ') + res.append(self.refQual) + if self.exceptionSpec: + res.append(' ') + res.append(str(self.exceptionSpec)) + if self.final: + res.append(' final') + if self.override: + res.append(' override') + if self.initializer: + res.append(' = ') + res.append(self.initializer) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + paramlist = addnodes.desc_parameterlist() + for arg in self.args: + param = addnodes.desc_parameter('', '', noemph=True) + if mode == 'lastIsName': # i.e., outer-function params + arg.describe_signature(param, 'param', env, symbol=symbol) + else: + arg.describe_signature(param, 'markType', env, symbol=symbol) + paramlist += param + signode += paramlist + + def _add_anno(signode: TextElement, text: str) -> None: + signode += nodes.Text(' ') + signode += addnodes.desc_annotation(text, text) + + def _add_text(signode: TextElement, text: str) -> None: + signode += nodes.Text(' ' + text) + + if self.volatile: + _add_anno(signode, 'volatile') + if self.const: + _add_anno(signode, 'const') + if self.refQual: + _add_text(signode, self.refQual) + if self.exceptionSpec: + _add_anno(signode, str(self.exceptionSpec)) + if self.final: + _add_anno(signode, 'final') + if self.override: + _add_anno(signode, 'override') + if self.initializer: + _add_text(signode, '= ' + str(self.initializer)) + + +class ASTDeclSpecsSimple(ASTBase): + def __init__(self, storage: str, threadLocal: bool, inline: bool, virtual: bool, + explicit: bool, constexpr: bool, volatile: bool, const: bool, + friend: bool, attrs: List[ASTAttribute]) -> None: + self.storage = storage + self.threadLocal = threadLocal + self.inline = inline + self.virtual = virtual + self.explicit = explicit + self.constexpr = constexpr + self.volatile = volatile + self.const = const + self.friend = friend + self.attrs = attrs + + def mergeWith(self, other: "ASTDeclSpecsSimple") -> "ASTDeclSpecsSimple": + if not other: + return self + return ASTDeclSpecsSimple(self.storage or other.storage, + self.threadLocal or other.threadLocal, + self.inline or other.inline, + self.virtual or other.virtual, + self.explicit or other.explicit, + self.constexpr or other.constexpr, + self.volatile or other.volatile, + self.const or other.const, + self.friend or other.friend, + self.attrs + other.attrs) + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] # type: List[str] + res.extend(transform(attr) for attr in self.attrs) + if self.storage: + res.append(self.storage) + if self.threadLocal: + res.append('thread_local') + if self.inline: + res.append('inline') + if self.friend: + res.append('friend') + if self.virtual: + res.append('virtual') + if self.explicit: + res.append('explicit') + if self.constexpr: + res.append('constexpr') + if self.volatile: + res.append('volatile') + if self.const: + res.append('const') + return ' '.join(res) + + def describe_signature(self, signode: TextElement) -> None: + addSpace = False + for attr in self.attrs: + if addSpace: + signode += nodes.Text(' ') + addSpace = True + attr.describe_signature(signode) + + def _add(signode: TextElement, text: str) -> bool: + if addSpace: + signode += nodes.Text(' ') + signode += addnodes.desc_annotation(text, text) + return True + + if self.storage: + addSpace = _add(signode, self.storage) + if self.threadLocal: + addSpace = _add(signode, 'thread_local') + if self.inline: + addSpace = _add(signode, 'inline') + if self.friend: + addSpace = _add(signode, 'friend') + if self.virtual: + addSpace = _add(signode, 'virtual') + if self.explicit: + addSpace = _add(signode, 'explicit') + if self.constexpr: + addSpace = _add(signode, 'constexpr') + if self.volatile: + addSpace = _add(signode, 'volatile') + if self.const: + addSpace = _add(signode, 'const') + + +class ASTDeclSpecs(ASTBase): + def __init__(self, outer: str, + leftSpecs: ASTDeclSpecsSimple, rightSpecs: ASTDeclSpecsSimple, + trailing: ASTTrailingTypeSpec) -> None: + # leftSpecs and rightSpecs are used for output + # allSpecs are used for id generation + self.outer = outer + self.leftSpecs = leftSpecs + self.rightSpecs = rightSpecs + self.allSpecs = self.leftSpecs.mergeWith(self.rightSpecs) + self.trailingTypeSpec = trailing + + def get_id(self, version: int) -> str: + if version == 1: + res = [] + res.append(self.trailingTypeSpec.get_id(version)) + if self.allSpecs.volatile: + res.append('V') + if self.allSpecs.const: + res.append('C') + return ''.join(res) + res = [] + if self.allSpecs.volatile: + res.append('V') + if self.allSpecs.const: + res.append('K') + if self.trailingTypeSpec is not None: + res.append(self.trailingTypeSpec.get_id(version)) + return ''.join(res) + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] # type: List[str] + l = transform(self.leftSpecs) + if len(l) > 0: + res.append(l) + if self.trailingTypeSpec: + if len(res) > 0: + res.append(" ") + res.append(transform(self.trailingTypeSpec)) + r = str(self.rightSpecs) + if len(r) > 0: + if len(res) > 0: + res.append(" ") + res.append(r) + return "".join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + numChildren = len(signode) + self.leftSpecs.describe_signature(signode) + addSpace = len(signode) != numChildren + + if self.trailingTypeSpec: + if addSpace: + signode += nodes.Text(' ') + self.trailingTypeSpec.describe_signature(signode, mode, env, + symbol=symbol) + numChildren = len(signode) + self.rightSpecs.describe_signature(signode) + if len(signode) != numChildren: + signode += nodes.Text(' ') + + +# Declarator +################################################################################ + +class ASTArray(ASTBase): + def __init__(self, size: ASTExpression): + self.size = size + + def _stringify(self, transform: StringifyTransform) -> str: + if self.size: + return '[' + transform(self.size) + ']' + else: + return '[]' + + def get_id(self, version: int) -> str: + if version == 1: + return 'A' + if version == 2: + if self.size: + return 'A' + str(self.size) + '_' + else: + return 'A_' + if self.size: + return 'A' + self.size.get_id(version) + '_' + else: + return 'A_' + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + signode.append(nodes.Text("[")) + if self.size: + self.size.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text("]")) + + +class ASTDeclarator(ASTBase): + @property + def name(self) -> ASTNestedName: + raise NotImplementedError(repr(self)) + + @property + def isPack(self) -> bool: + raise NotImplementedError(repr(self)) + + @property + def function_params(self) -> List[ASTFunctionParameter]: + raise NotImplementedError(repr(self)) + + def require_space_after_declSpecs(self) -> bool: + raise NotImplementedError(repr(self)) + + def get_modifiers_id(self, version: int) -> str: + raise NotImplementedError(repr(self)) + + def get_param_id(self, version: int) -> str: + raise NotImplementedError(repr(self)) + + def get_ptr_suffix_id(self, version: int) -> str: + raise NotImplementedError(repr(self)) + + def get_type_id(self, version: int, returnTypeId: str) -> str: + raise NotImplementedError(repr(self)) + + def is_function_type(self) -> bool: + raise NotImplementedError(repr(self)) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + raise NotImplementedError(repr(self)) + + +class ASTDeclaratorNameParamQual(ASTDeclarator): + def __init__(self, declId: ASTNestedName, + arrayOps: List[ASTArray], + paramQual: ASTParametersQualifiers) -> None: + self.declId = declId + self.arrayOps = arrayOps + self.paramQual = paramQual + + @property + def name(self) -> ASTNestedName: + return self.declId + + @property + def isPack(self) -> bool: + return False + + @property + def function_params(self) -> List[ASTFunctionParameter]: + return self.paramQual.function_params + + # only the modifiers for a function, e.g., + def get_modifiers_id(self, version: int) -> str: + # cv-qualifiers + if self.paramQual: + return self.paramQual.get_modifiers_id(version) + raise Exception("This should only be called on a function: %s" % self) + + def get_param_id(self, version: int) -> str: # only the parameters (if any) + if self.paramQual: + return self.paramQual.get_param_id(version) + else: + return '' + + def get_ptr_suffix_id(self, version: int) -> str: # only the array specifiers + return ''.join(a.get_id(version) for a in self.arrayOps) + + def get_type_id(self, version: int, returnTypeId: str) -> str: + assert version >= 2 + res = [] + # TOOD: can we actually have both array ops and paramQual? + res.append(self.get_ptr_suffix_id(version)) + if self.paramQual: + res.append(self.get_modifiers_id(version)) + res.append('F') + res.append(returnTypeId) + res.append(self.get_param_id(version)) + res.append('E') + else: + res.append(returnTypeId) + return ''.join(res) + + # ------------------------------------------------------------------------ + + def require_space_after_declSpecs(self) -> bool: + return self.declId is not None + + def is_function_type(self) -> bool: + return self.paramQual is not None + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + if self.declId: + res.append(transform(self.declId)) + for op in self.arrayOps: + res.append(transform(op)) + if self.paramQual: + res.append(transform(self.paramQual)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + if self.declId: + self.declId.describe_signature(signode, mode, env, symbol) + for op in self.arrayOps: + op.describe_signature(signode, mode, env, symbol) + if self.paramQual: + self.paramQual.describe_signature(signode, mode, env, symbol) + + +class ASTDeclaratorNameBitField(ASTDeclarator): + def __init__(self, declId: ASTNestedName, size: ASTExpression): + self.declId = declId + self.size = size + + @property + def name(self) -> ASTNestedName: + return self.declId + + def get_param_id(self, version: int) -> str: # only the parameters (if any) + return '' + + def get_ptr_suffix_id(self, version: int) -> str: # only the array specifiers + return '' + + # ------------------------------------------------------------------------ + + def require_space_after_declSpecs(self) -> bool: + return self.declId is not None + + def is_function_type(self) -> bool: + return False + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + if self.declId: + res.append(transform(self.declId)) + res.append(" : ") + res.append(transform(self.size)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + if self.declId: + self.declId.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text(' : ', ' : ')) + self.size.describe_signature(signode, mode, env, symbol) + + +class ASTDeclaratorPtr(ASTDeclarator): + def __init__(self, next: ASTDeclarator, volatile: bool, const: bool, + attrs: List[ASTAttribute]) -> None: + assert next + self.next = next + self.volatile = volatile + self.const = const + self.attrs = attrs + + @property + def name(self) -> ASTNestedName: + return self.next.name + + @property + def function_params(self) -> List[ASTFunctionParameter]: + return self.next.function_params + + def require_space_after_declSpecs(self) -> bool: + return self.next.require_space_after_declSpecs() + + def _stringify(self, transform: StringifyTransform) -> str: + res = ['*'] + for a in self.attrs: + res.append(transform(a)) + if len(self.attrs) > 0 and (self.volatile or self.const): + res.append(' ') + if self.volatile: + res.append('volatile') + if self.const: + if self.volatile: + res.append(' ') + res.append('const') + if self.const or self.volatile or len(self.attrs) > 0: + if self.next.require_space_after_declSpecs(): + res.append(' ') + res.append(transform(self.next)) + return ''.join(res) + + def get_modifiers_id(self, version: int) -> str: + return self.next.get_modifiers_id(version) + + def get_param_id(self, version: int) -> str: + return self.next.get_param_id(version) + + def get_ptr_suffix_id(self, version: int) -> str: + if version == 1: + res = ['P'] + if self.volatile: + res.append('V') + if self.const: + res.append('C') + res.append(self.next.get_ptr_suffix_id(version)) + return ''.join(res) + + res = [self.next.get_ptr_suffix_id(version)] + res.append('P') + if self.volatile: + res.append('V') + if self.const: + res.append('C') + return ''.join(res) + + def get_type_id(self, version: int, returnTypeId: str) -> str: + # ReturnType *next, so we are part of the return type of 'next + res = ['P'] + if self.volatile: + res.append('V') + if self.const: + res.append('C') + res.append(returnTypeId) + return self.next.get_type_id(version, returnTypeId=''.join(res)) + + def is_function_type(self) -> bool: + return self.next.is_function_type() + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + signode += nodes.Text("*") + for a in self.attrs: + a.describe_signature(signode) + if len(self.attrs) > 0 and (self.volatile or self.const): + signode += nodes.Text(' ') + + def _add_anno(signode: TextElement, text: str) -> None: + signode += addnodes.desc_annotation(text, text) + if self.volatile: + _add_anno(signode, 'volatile') + if self.const: + if self.volatile: + signode += nodes.Text(' ') + _add_anno(signode, 'const') + if self.const or self.volatile or len(self.attrs) > 0: + if self.next.require_space_after_declSpecs(): + signode += nodes.Text(' ') + self.next.describe_signature(signode, mode, env, symbol) + + +class ASTDeclaratorRef(ASTDeclarator): + def __init__(self, next: ASTDeclarator, attrs: List[ASTAttribute]) -> None: + assert next + self.next = next + self.attrs = attrs + + @property + def name(self) -> ASTNestedName: + return self.next.name + + @property + def isPack(self) -> bool: + return True + + @property + def function_params(self) -> List[ASTFunctionParameter]: + return self.next.function_params + + def require_space_after_declSpecs(self) -> bool: + return self.next.require_space_after_declSpecs() + + def _stringify(self, transform: StringifyTransform) -> str: + res = ['&'] + for a in self.attrs: + res.append(transform(a)) + if len(self.attrs) > 0 and self.next.require_space_after_declSpecs(): + res.append(' ') + res.append(transform(self.next)) + return ''.join(res) + + def get_modifiers_id(self, version: int) -> str: + return self.next.get_modifiers_id(version) + + def get_param_id(self, version: int) -> str: # only the parameters (if any) + return self.next.get_param_id(version) + + def get_ptr_suffix_id(self, version: int) -> str: + if version == 1: + return 'R' + self.next.get_ptr_suffix_id(version) + else: + return self.next.get_ptr_suffix_id(version) + 'R' + + def get_type_id(self, version: int, returnTypeId: str) -> str: + assert version >= 2 + # ReturnType &next, so we are part of the return type of 'next + return self.next.get_type_id(version, returnTypeId='R' + returnTypeId) + + def is_function_type(self) -> bool: + return self.next.is_function_type() + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + signode += nodes.Text("&") + for a in self.attrs: + a.describe_signature(signode) + if len(self.attrs) > 0 and self.next.require_space_after_declSpecs(): + signode += nodes.Text(' ') + self.next.describe_signature(signode, mode, env, symbol) + + +class ASTDeclaratorParamPack(ASTDeclarator): + def __init__(self, next: ASTDeclarator) -> None: + assert next + self.next = next + + @property + def name(self) -> ASTNestedName: + return self.next.name + + @property + def function_params(self) -> List[ASTFunctionParameter]: + return self.next.function_params + + def require_space_after_declSpecs(self) -> bool: + return False + + def _stringify(self, transform: StringifyTransform) -> str: + res = transform(self.next) + if self.next.name: + res = ' ' + res + return '...' + res + + def get_modifiers_id(self, version: int) -> str: + return self.next.get_modifiers_id(version) + + def get_param_id(self, version: int) -> str: # only the parameters (if any) + return self.next.get_param_id(version) + + def get_ptr_suffix_id(self, version: int) -> str: + if version == 1: + return 'Dp' + self.next.get_ptr_suffix_id(version) + else: + return self.next.get_ptr_suffix_id(version) + 'Dp' + + def get_type_id(self, version: int, returnTypeId: str) -> str: + assert version >= 2 + # ReturnType... next, so we are part of the return type of 'next + return self.next.get_type_id(version, returnTypeId='Dp' + returnTypeId) + + def is_function_type(self) -> bool: + return self.next.is_function_type() + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + signode += nodes.Text("...") + if self.next.name: + signode += nodes.Text(' ') + self.next.describe_signature(signode, mode, env, symbol) + + +class ASTDeclaratorMemPtr(ASTDeclarator): + def __init__(self, className: ASTNestedName, + const: bool, volatile: bool, next: ASTDeclarator) -> None: + assert className + assert next + self.className = className + self.const = const + self.volatile = volatile + self.next = next + + @property + def name(self) -> ASTNestedName: + return self.next.name + + @property + def function_params(self) -> List[ASTFunctionParameter]: + return self.next.function_params + + def require_space_after_declSpecs(self) -> bool: + return True + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + res.append(transform(self.className)) + res.append('::*') + if self.volatile: + res.append('volatile') + if self.const: + if self.volatile: + res.append(' ') + res.append('const') + if self.next.require_space_after_declSpecs(): + res.append(' ') + res.append(transform(self.next)) + return ''.join(res) + + def get_modifiers_id(self, version: int) -> str: + if version == 1: + raise NoOldIdError() + else: + return self.next.get_modifiers_id(version) + + def get_param_id(self, version: int) -> str: # only the parameters (if any) + if version == 1: + raise NoOldIdError() + else: + return self.next.get_param_id(version) + + def get_ptr_suffix_id(self, version: int) -> str: + if version == 1: + raise NoOldIdError() + else: + raise NotImplementedError() + return self.next.get_ptr_suffix_id(version) + 'Dp' + + def get_type_id(self, version: int, returnTypeId: str) -> str: + assert version >= 2 + # ReturnType name::* next, so we are part of the return type of next + nextReturnTypeId = '' + if self.volatile: + nextReturnTypeId += 'V' + if self.const: + nextReturnTypeId += 'K' + nextReturnTypeId += 'M' + nextReturnTypeId += self.className.get_id(version) + nextReturnTypeId += returnTypeId + return self.next.get_type_id(version, nextReturnTypeId) + + def is_function_type(self) -> bool: + return self.next.is_function_type() + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + self.className.describe_signature(signode, mode, env, symbol) + signode += nodes.Text('::*') + + def _add_anno(signode: TextElement, text: str) -> None: + signode += addnodes.desc_annotation(text, text) + if self.volatile: + _add_anno(signode, 'volatile') + if self.const: + if self.volatile: + signode += nodes.Text(' ') + _add_anno(signode, 'const') + if self.next.require_space_after_declSpecs(): + signode += nodes.Text(' ') + self.next.describe_signature(signode, mode, env, symbol) + + +class ASTDeclaratorParen(ASTDeclarator): + def __init__(self, inner: ASTDeclarator, next: ASTDeclarator) -> None: + assert inner + assert next + self.inner = inner + self.next = next + # TODO: we assume the name, params, and qualifiers are in inner + + @property + def name(self) -> ASTNestedName: + return self.inner.name + + @property + def function_params(self) -> List[ASTFunctionParameter]: + return self.inner.function_params + + def require_space_after_declSpecs(self) -> bool: + return True + + def _stringify(self, transform: StringifyTransform) -> str: + res = ['('] + res.append(transform(self.inner)) + res.append(')') + res.append(transform(self.next)) + return ''.join(res) + + def get_modifiers_id(self, version: int) -> str: + return self.inner.get_modifiers_id(version) + + def get_param_id(self, version: int) -> str: # only the parameters (if any) + return self.inner.get_param_id(version) + + def get_ptr_suffix_id(self, version: int) -> str: + if version == 1: + raise NoOldIdError() # TODO: was this implemented before? + return self.next.get_ptr_suffix_id(version) + \ + self.inner.get_ptr_suffix_id(version) + else: + return self.inner.get_ptr_suffix_id(version) + \ + self.next.get_ptr_suffix_id(version) + + def get_type_id(self, version: int, returnTypeId: str) -> str: + assert version >= 2 + # ReturnType (inner)next, so 'inner' returns everything outside + nextId = self.next.get_type_id(version, returnTypeId) + return self.inner.get_type_id(version, returnTypeId=nextId) + + def is_function_type(self) -> bool: + return self.inner.is_function_type() + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + signode += nodes.Text('(') + self.inner.describe_signature(signode, mode, env, symbol) + signode += nodes.Text(')') + self.next.describe_signature(signode, "noneIsName", env, symbol) + + +# Type and initializer stuff +############################################################################################## + +class ASTPackExpansionExpr(ASTExpression): + def __init__(self, expr: Union[ASTExpression, ASTBracedInitList]): + self.expr = expr + + def _stringify(self, transform: StringifyTransform) -> str: + return transform(self.expr) + '...' + + def get_id(self, version: int) -> str: + id = self.expr.get_id(version) + return 'sp' + id + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + self.expr.describe_signature(signode, mode, env, symbol) + signode += nodes.Text('...') + + +class ASTParenExprList(ASTBase): + def __init__(self, exprs: List[Union[ASTExpression, ASTBracedInitList]]) -> None: + self.exprs = exprs + + def get_id(self, version: int) -> str: + return "pi%sE" % ''.join(e.get_id(version) for e in self.exprs) + + def _stringify(self, transform: StringifyTransform) -> str: + exprs = [transform(e) for e in self.exprs] + return '(%s)' % ', '.join(exprs) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + signode.append(nodes.Text('(')) + first = True + for e in self.exprs: + if not first: + signode.append(nodes.Text(', ')) + else: + first = False + e.describe_signature(signode, mode, env, symbol) + signode.append(nodes.Text(')')) + + +class ASTInitializer(ASTBase): + def __init__(self, value: Union[ASTExpression, ASTBracedInitList], + hasAssign: bool = True) -> None: + self.value = value + self.hasAssign = hasAssign + + def _stringify(self, transform: StringifyTransform) -> str: + val = transform(self.value) + if self.hasAssign: + return ' = ' + val + else: + return val + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + if self.hasAssign: + signode.append(nodes.Text(' = ')) + self.value.describe_signature(signode, 'markType', env, symbol) + + +class ASTType(ASTBase): + def __init__(self, declSpecs: ASTDeclSpecs, decl: ASTDeclarator) -> None: + assert declSpecs + assert decl + self.declSpecs = declSpecs + self.decl = decl + + @property + def name(self) -> ASTNestedName: + return self.decl.name + + @property + def isPack(self) -> bool: + return self.decl.isPack + + @property + def function_params(self) -> List[ASTFunctionParameter]: + return self.decl.function_params + + def get_id(self, version: int, objectType: str = None, + symbol: "Symbol" = None) -> str: + if version == 1: + res = [] + if objectType: # needs the name + if objectType == 'function': # also modifiers + res.append(symbol.get_full_nested_name().get_id(version)) + res.append(self.decl.get_param_id(version)) + res.append(self.decl.get_modifiers_id(version)) + if (self.declSpecs.leftSpecs.constexpr or + (self.declSpecs.rightSpecs and + self.declSpecs.rightSpecs.constexpr)): + res.append('CE') + elif objectType == 'type': # just the name + res.append(symbol.get_full_nested_name().get_id(version)) + else: + print(objectType) + assert False + else: # only type encoding + if self.decl.is_function_type(): + raise NoOldIdError() + res.append(self.declSpecs.get_id(version)) + res.append(self.decl.get_ptr_suffix_id(version)) + res.append(self.decl.get_param_id(version)) + return ''.join(res) + # other versions + res = [] + if objectType: # needs the name + if objectType == 'function': # also modifiers + modifiers = self.decl.get_modifiers_id(version) + res.append(symbol.get_full_nested_name().get_id(version, modifiers)) + if version >= 4: + # with templates we need to mangle the return type in as well + templ = symbol.declaration.templatePrefix + if templ is not None: + typeId = self.decl.get_ptr_suffix_id(version) + returnTypeId = self.declSpecs.get_id(version) + res.append(typeId) + res.append(returnTypeId) + res.append(self.decl.get_param_id(version)) + elif objectType == 'type': # just the name + res.append(symbol.get_full_nested_name().get_id(version)) + else: + print(objectType) + assert False + else: # only type encoding + # the 'returnType' of a non-function type is simply just the last + # type, i.e., for 'int*' it is 'int' + returnTypeId = self.declSpecs.get_id(version) + typeId = self.decl.get_type_id(version, returnTypeId) + res.append(typeId) + return ''.join(res) + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + declSpecs = transform(self.declSpecs) + res.append(declSpecs) + if self.decl.require_space_after_declSpecs() and len(declSpecs) > 0: + res.append(' ') + res.append(transform(self.decl)) + return ''.join(res) + + def get_type_declaration_prefix(self) -> str: + if self.declSpecs.trailingTypeSpec: + return 'typedef' + else: + return 'type' + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + self.declSpecs.describe_signature(signode, 'markType', env, symbol) + if (self.decl.require_space_after_declSpecs() and + len(str(self.declSpecs)) > 0): + signode += nodes.Text(' ') + # for parameters that don't really declare new names we get 'markType', + # this should not be propagated, but be 'noneIsName'. + if mode == 'markType': + mode = 'noneIsName' + self.decl.describe_signature(signode, mode, env, symbol) + + +class ASTTemplateParamConstrainedTypeWithInit(ASTBase): + def __init__(self, type: ASTType, init: ASTType) -> None: + assert type + self.type = type + self.init = init + + @property + def name(self) -> ASTNestedName: + return self.type.name + + @property + def isPack(self) -> bool: + return self.type.isPack + + def get_id(self, version: int, objectType: str = None, symbol: "Symbol" = None) -> str: + # this is not part of the normal name mangling in C++ + assert version >= 2 + if symbol: + # the anchor will be our parent + return symbol.parent.declaration.get_id(version, prefixed=False) + else: + return self.type.get_id(version) + + def _stringify(self, transform: StringifyTransform) -> str: + res = transform(self.type) + if self.init: + res += " = " + res += transform(self.init) + return res + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + self.type.describe_signature(signode, mode, env, symbol) + if self.init: + signode += nodes.Text(" = ") + self.init.describe_signature(signode, mode, env, symbol) + + +class ASTTypeWithInit(ASTBase): + def __init__(self, type: ASTType, init: ASTInitializer) -> None: + self.type = type + self.init = init + + @property + def name(self) -> ASTNestedName: + return self.type.name + + @property + def isPack(self) -> bool: + return self.type.isPack + + def get_id(self, version: int, objectType: str = None, + symbol: "Symbol" = None) -> str: + if objectType != 'member': + return self.type.get_id(version, objectType) + if version == 1: + return (symbol.get_full_nested_name().get_id(version) + '__' + + self.type.get_id(version)) + return symbol.get_full_nested_name().get_id(version) + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + res.append(transform(self.type)) + if self.init: + res.append(transform(self.init)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + self.type.describe_signature(signode, mode, env, symbol) + if self.init: + self.init.describe_signature(signode, mode, env, symbol) + + +class ASTTypeUsing(ASTBase): + def __init__(self, name: ASTNestedName, type: ASTType) -> None: + self.name = name + self.type = type + + def get_id(self, version: int, objectType: str = None, + symbol: "Symbol" = None) -> str: + if version == 1: + raise NoOldIdError() + return symbol.get_full_nested_name().get_id(version) + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + res.append(transform(self.name)) + if self.type: + res.append(' = ') + res.append(transform(self.type)) + return ''.join(res) + + def get_type_declaration_prefix(self) -> str: + return 'using' + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + self.name.describe_signature(signode, mode, env, symbol=symbol) + if self.type: + signode += nodes.Text(' = ') + self.type.describe_signature(signode, 'markType', env, symbol=symbol) + + +# Other declarations +############################################################################################## + +class ASTConcept(ASTBase): + def __init__(self, nestedName: ASTNestedName, initializer: ASTInitializer) -> None: + self.nestedName = nestedName + self.initializer = initializer + + @property + def name(self) -> ASTNestedName: + return self.nestedName + + def get_id(self, version: int, objectType: str = None, + symbol: "Symbol" = None) -> str: + if version == 1: + raise NoOldIdError() + return symbol.get_full_nested_name().get_id(version) + + def _stringify(self, transform: StringifyTransform) -> str: + res = transform(self.nestedName) + if self.initializer: + res += transform(self.initializer) + return res + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + self.nestedName.describe_signature(signode, mode, env, symbol) + if self.initializer: + self.initializer.describe_signature(signode, mode, env, symbol) + + +class ASTBaseClass(ASTBase): + def __init__(self, name: ASTNestedName, visibility: str, + virtual: bool, pack: bool) -> None: + self.name = name + self.visibility = visibility + self.virtual = virtual + self.pack = pack + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + + if self.visibility is not None: + res.append(self.visibility) + res.append(' ') + if self.virtual: + res.append('virtual ') + res.append(transform(self.name)) + if self.pack: + res.append('...') + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + if self.visibility is not None: + signode += addnodes.desc_annotation(self.visibility, + self.visibility) + signode += nodes.Text(' ') + if self.virtual: + signode += addnodes.desc_annotation('virtual', 'virtual') + signode += nodes.Text(' ') + self.name.describe_signature(signode, 'markType', env, symbol=symbol) + if self.pack: + signode += nodes.Text('...') + + +class ASTClass(ASTBase): + def __init__(self, name: ASTNestedName, final: bool, bases: List[ASTBaseClass]) -> None: + self.name = name + self.final = final + self.bases = bases + + def get_id(self, version: int, objectType: str, symbol: "Symbol") -> str: + return symbol.get_full_nested_name().get_id(version) + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + res.append(transform(self.name)) + if self.final: + res.append(' final') + if len(self.bases) > 0: + res.append(' : ') + first = True + for b in self.bases: + if not first: + res.append(', ') + first = False + res.append(transform(b)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + self.name.describe_signature(signode, mode, env, symbol=symbol) + if self.final: + signode += nodes.Text(' ') + signode += addnodes.desc_annotation('final', 'final') + if len(self.bases) > 0: + signode += nodes.Text(' : ') + for b in self.bases: + b.describe_signature(signode, mode, env, symbol=symbol) + signode += nodes.Text(', ') + signode.pop() + + +class ASTUnion(ASTBase): + def __init__(self, name: ASTNestedName) -> None: + self.name = name + + def get_id(self, version: int, objectType: str, symbol: "Symbol") -> str: + if version == 1: + raise NoOldIdError() + return symbol.get_full_nested_name().get_id(version) + + def _stringify(self, transform: StringifyTransform) -> str: + return transform(self.name) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + self.name.describe_signature(signode, mode, env, symbol=symbol) + + +class ASTEnum(ASTBase): + def __init__(self, name: ASTNestedName, scoped: str, + underlyingType: ASTType) -> None: + self.name = name + self.scoped = scoped + self.underlyingType = underlyingType + + def get_id(self, version: int, objectType: str, symbol: "Symbol") -> str: + if version == 1: + raise NoOldIdError() + return symbol.get_full_nested_name().get_id(version) + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + if self.scoped: + res.append(self.scoped) + res.append(' ') + res.append(transform(self.name)) + if self.underlyingType: + res.append(' : ') + res.append(transform(self.underlyingType)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + # self.scoped has been done by the CPPEnumObject + self.name.describe_signature(signode, mode, env, symbol=symbol) + if self.underlyingType: + signode += nodes.Text(' : ') + self.underlyingType.describe_signature(signode, 'noneIsName', + env, symbol=symbol) + + +class ASTEnumerator(ASTBase): + def __init__(self, name: ASTNestedName, init: ASTInitializer) -> None: + self.name = name + self.init = init + + def get_id(self, version: int, objectType: str, symbol: "Symbol") -> str: + if version == 1: + raise NoOldIdError() + return symbol.get_full_nested_name().get_id(version) + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + res.append(transform(self.name)) + if self.init: + res.append(transform(self.init)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + verify_description_mode(mode) + self.name.describe_signature(signode, mode, env, symbol) + if self.init: + self.init.describe_signature(signode, 'markType', env, symbol) + + +################################################################################ +# Templates +################################################################################ + +# Parameters +################################################################################ + +class ASTTemplateParam(ASTBase): + def get_identifier(self) -> ASTIdentifier: + raise NotImplementedError(repr(self)) + + def get_id(self, version: int) -> str: + raise NotImplementedError(repr(self)) + + def describe_signature(self, parentNode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + raise NotImplementedError(repr(self)) + + +class ASTTemplateKeyParamPackIdDefault(ASTTemplateParam): + def __init__(self, key: str, identifier: ASTIdentifier, + parameterPack: bool, default: ASTType) -> None: + assert key + if parameterPack: + assert default is None + self.key = key + self.identifier = identifier + self.parameterPack = parameterPack + self.default = default + + def get_identifier(self) -> ASTIdentifier: + return self.identifier + + def get_id(self, version: int) -> str: + assert version >= 2 + # this is not part of the normal name mangling in C++ + res = [] + if self.parameterPack: + res.append('Dp') + else: + res.append('0') # we need to put something + return ''.join(res) + + def _stringify(self, transform: StringifyTransform) -> str: + res = [self.key] + if self.parameterPack: + if self.identifier: + res.append(' ') + res.append('...') + if self.identifier: + if not self.parameterPack: + res.append(' ') + res.append(transform(self.identifier)) + if self.default: + res.append(' = ') + res.append(transform(self.default)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode += nodes.Text(self.key) + if self.parameterPack: + if self.identifier: + signode += nodes.Text(' ') + signode += nodes.Text('...') + if self.identifier: + if not self.parameterPack: + signode += nodes.Text(' ') + self.identifier.describe_signature(signode, mode, env, '', '', symbol) + if self.default: + signode += nodes.Text(' = ') + self.default.describe_signature(signode, 'markType', env, symbol) + + +class ASTTemplateParamType(ASTTemplateParam): + def __init__(self, data: ASTTemplateKeyParamPackIdDefault) -> None: + assert data + self.data = data + + @property + def name(self) -> ASTNestedName: + id = self.get_identifier() + return ASTNestedName([ASTNestedNameElement(id, None)], [False], rooted=False) + + @property + def isPack(self) -> bool: + return self.data.parameterPack + + def get_identifier(self) -> ASTIdentifier: + return self.data.get_identifier() + + def get_id(self, version: int, objectType: str = None, symbol: "Symbol" = None) -> str: + # this is not part of the normal name mangling in C++ + assert version >= 2 + if symbol: + # the anchor will be our parent + return symbol.parent.declaration.get_id(version, prefixed=False) + else: + return self.data.get_id(version) + + def _stringify(self, transform: StringifyTransform) -> str: + return transform(self.data) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + self.data.describe_signature(signode, mode, env, symbol) + + +class ASTTemplateParamTemplateType(ASTTemplateParam): + def __init__(self, nestedParams: "ASTTemplateParams", + data: ASTTemplateKeyParamPackIdDefault) -> None: + assert nestedParams + assert data + self.nestedParams = nestedParams + self.data = data + + @property + def name(self) -> ASTNestedName: + id = self.get_identifier() + return ASTNestedName([ASTNestedNameElement(id, None)], [False], rooted=False) + + @property + def isPack(self) -> bool: + return self.data.parameterPack + + def get_identifier(self) -> ASTIdentifier: + return self.data.get_identifier() + + def get_id(self, version: int, objectType: str = None, symbol: "Symbol" = None) -> str: + assert version >= 2 + # this is not part of the normal name mangling in C++ + if symbol: + # the anchor will be our parent + return symbol.parent.declaration.get_id(version, prefixed=None) + else: + return self.nestedParams.get_id(version) + self.data.get_id(version) + + def _stringify(self, transform: StringifyTransform) -> str: + return transform(self.nestedParams) + transform(self.data) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + self.nestedParams.describe_signature(signode, 'noneIsName', env, symbol) + signode += nodes.Text(' ') + self.data.describe_signature(signode, mode, env, symbol) + + +class ASTTemplateParamNonType(ASTTemplateParam): + def __init__(self, + param: Union[ASTTypeWithInit, + ASTTemplateParamConstrainedTypeWithInit]) -> None: + assert param + self.param = param + + @property + def name(self) -> ASTNestedName: + id = self.get_identifier() + return ASTNestedName([ASTNestedNameElement(id, None)], [False], rooted=False) + + @property + def isPack(self) -> bool: + return self.param.isPack + + def get_identifier(self) -> ASTIdentifier: + name = self.param.name + if name: + assert len(name.names) == 1 + assert name.names[0].identOrOp + assert not name.names[0].templateArgs + res = name.names[0].identOrOp + assert isinstance(res, ASTIdentifier) + return res + else: + return None + + def get_id(self, version: int, objectType: str = None, symbol: "Symbol" = None) -> str: + assert version >= 2 + # this is not part of the normal name mangling in C++ + if symbol: + # the anchor will be our parent + return symbol.parent.declaration.get_id(version, prefixed=None) + else: + return '_' + self.param.get_id(version) + + def _stringify(self, transform: StringifyTransform) -> str: + return transform(self.param) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + self.param.describe_signature(signode, mode, env, symbol) + + +class ASTTemplateParams(ASTBase): + def __init__(self, params: List[ASTTemplateParam]) -> None: + assert params is not None + self.params = params + + def get_id(self, version: int) -> str: + assert version >= 2 + res = [] + res.append("I") + for param in self.params: + res.append(param.get_id(version)) + res.append("E") + return ''.join(res) + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + res.append("template<") + res.append(", ".join(transform(a) for a in self.params)) + res.append("> ") + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + signode += nodes.Text("template<") + first = True + for param in self.params: + if not first: + signode += nodes.Text(", ") + first = False + param.describe_signature(signode, mode, env, symbol) + signode += nodes.Text(">") + + def describe_signature_as_introducer( + self, parentNode: desc_signature, mode: str, env: "BuildEnvironment", + symbol: "Symbol", lineSpec: bool) -> None: + def makeLine(parentNode: desc_signature) -> addnodes.desc_signature_line: + signode = addnodes.desc_signature_line() + parentNode += signode + signode.sphinx_line_type = 'templateParams' + return signode + lineNode = makeLine(parentNode) + lineNode += nodes.Text("template<") + first = True + for param in self.params: + if not first: + lineNode += nodes.Text(", ") + first = False + if lineSpec: + lineNode = makeLine(parentNode) + param.describe_signature(lineNode, mode, env, symbol) + if lineSpec and not first: + lineNode = makeLine(parentNode) + lineNode += nodes.Text(">") + + +# Template introducers +################################################################################ + +class ASTTemplateIntroductionParameter(ASTBase): + def __init__(self, identifier: ASTIdentifier, parameterPack: bool) -> None: + self.identifier = identifier + self.parameterPack = parameterPack + + @property + def name(self) -> ASTNestedName: + id = self.get_identifier() + return ASTNestedName([ASTNestedNameElement(id, None)], [False], rooted=False) + + @property + def isPack(self) -> bool: + return self.parameterPack + + def get_identifier(self) -> ASTIdentifier: + return self.identifier + + def get_id(self, version: int, objectType: str = None, symbol: "Symbol" = None) -> str: + assert version >= 2 + # this is not part of the normal name mangling in C++ + if symbol: + # the anchor will be our parent + return symbol.parent.declaration.get_id(version, prefixed=None) + else: + if self.parameterPack: + return 'Dp' + else: + return '0' # we need to put something + + def get_id_as_arg(self, version: int) -> str: + assert version >= 2 + # used for the implicit requires clause + res = self.identifier.get_id(version) + if self.parameterPack: + return 'sp' + res + else: + return res + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + if self.parameterPack: + res.append('...') + res.append(transform(self.identifier)) + return ''.join(res) + + def describe_signature(self, signode: TextElement, mode: str, + env: "BuildEnvironment", symbol: "Symbol") -> None: + if self.parameterPack: + signode += nodes.Text('...') + self.identifier.describe_signature(signode, mode, env, '', '', symbol) + + +class ASTTemplateIntroduction(ASTBase): + def __init__(self, concept: ASTNestedName, + params: List[ASTTemplateIntroductionParameter]) -> None: + assert len(params) > 0 + self.concept = concept + self.params = params + + def get_id(self, version: int) -> str: + assert version >= 2 + # first do the same as a normal template parameter list + res = [] + res.append("I") + for param in self.params: + res.append(param.get_id(version)) + res.append("E") + # let's use X expr E, which is otherwise for constant template args + res.append("X") + res.append(self.concept.get_id(version)) + res.append("I") + for param in self.params: + res.append(param.get_id_as_arg(version)) + res.append("E") + res.append("E") + return ''.join(res) + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + res.append(transform(self.concept)) + res.append('{') + res.append(', '.join(transform(param) for param in self.params)) + res.append('} ') + return ''.join(res) + + def describe_signature_as_introducer( + self, parentNode: desc_signature, mode: str, + env: "BuildEnvironment", symbol: "Symbol", lineSpec: bool) -> None: + # Note: 'lineSpec' has no effect on template introductions. + signode = addnodes.desc_signature_line() + parentNode += signode + signode.sphinx_line_type = 'templateIntroduction' + self.concept.describe_signature(signode, 'markType', env, symbol) + signode += nodes.Text('{') + first = True + for param in self.params: + if not first: + signode += nodes.Text(', ') + first = False + param.describe_signature(signode, mode, env, symbol) + signode += nodes.Text('}') + + +class ASTTemplateDeclarationPrefix(ASTBase): + def __init__(self, + templates: List[Union[ASTTemplateParams, + ASTTemplateIntroduction]]) -> None: + # templates is None means it's an explicit instantiation of a variable + self.templates = templates + + def get_id(self, version: int) -> str: + assert version >= 2 + # this is not part of a normal name mangling system + res = [] + for t in self.templates: + res.append(t.get_id(version)) + return ''.join(res) + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + for t in self.templates: + res.append(transform(t)) + return ''.join(res) + + def describe_signature(self, signode: desc_signature, mode: str, + env: "BuildEnvironment", symbol: "Symbol", lineSpec: bool) -> None: + verify_description_mode(mode) + for t in self.templates: + t.describe_signature_as_introducer(signode, 'lastIsName', env, symbol, lineSpec) + + +################################################################################ +################################################################################ + +class ASTDeclaration(ASTBase): + def __init__(self, objectType: str, directiveType: str, visibility: str, + templatePrefix: ASTTemplateDeclarationPrefix, declaration: Any) -> None: + self.objectType = objectType + self.directiveType = directiveType + self.visibility = visibility + self.templatePrefix = templatePrefix + self.declaration = declaration + + self.symbol = None # type: Symbol + # set by CPPObject._add_enumerator_to_parent + self.enumeratorScopedSymbol = None # type: Symbol + + def clone(self) -> "ASTDeclaration": + if self.templatePrefix: + templatePrefixClone = self.templatePrefix.clone() + else: + templatePrefixClone = None + return ASTDeclaration(self.objectType, self.directiveType, + self.visibility, templatePrefixClone, + self.declaration.clone()) + + @property + def name(self) -> ASTNestedName: + return self.declaration.name + + @property + def function_params(self) -> List[ASTFunctionParameter]: + if self.objectType != 'function': + return None + return self.declaration.function_params + + def get_id(self, version: int, prefixed: bool = True) -> str: + if version == 1: + if self.templatePrefix: + raise NoOldIdError() + if self.objectType == 'enumerator' and self.enumeratorScopedSymbol: + return self.enumeratorScopedSymbol.declaration.get_id(version) + return self.declaration.get_id(version, self.objectType, self.symbol) + # version >= 2 + if self.objectType == 'enumerator' and self.enumeratorScopedSymbol: + return self.enumeratorScopedSymbol.declaration.get_id(version, prefixed) + if prefixed: + res = [_id_prefix[version]] + else: + res = [] + if self.templatePrefix: + res.append(self.templatePrefix.get_id(version)) + res.append(self.declaration.get_id(version, self.objectType, self.symbol)) + return ''.join(res) + + def get_newest_id(self) -> str: + return self.get_id(_max_id, True) + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + if self.visibility and self.visibility != "public": + res.append(self.visibility) + res.append(' ') + if self.templatePrefix: + res.append(transform(self.templatePrefix)) + res.append(transform(self.declaration)) + return ''.join(res) + + def describe_signature(self, signode: desc_signature, mode: str, + env: "BuildEnvironment", options: Dict) -> None: + verify_description_mode(mode) + assert self.symbol + # The caller of the domain added a desc_signature node. + # Always enable multiline: + signode['is_multiline'] = True + # Put each line in a desc_signature_line node. + mainDeclNode = addnodes.desc_signature_line() + mainDeclNode.sphinx_line_type = 'declarator' + mainDeclNode['add_permalink'] = not self.symbol.isRedeclaration + + if self.templatePrefix: + self.templatePrefix.describe_signature(signode, mode, env, + symbol=self.symbol, + lineSpec=options.get('tparam-line-spec')) + signode += mainDeclNode + if self.visibility and self.visibility != "public": + mainDeclNode += addnodes.desc_annotation(self.visibility + " ", + self.visibility + " ") + if self.objectType == 'type': + prefix = self.declaration.get_type_declaration_prefix() + prefix += ' ' + mainDeclNode += addnodes.desc_annotation(prefix, prefix) + elif self.objectType == 'concept': + mainDeclNode += addnodes.desc_annotation('concept ', 'concept ') + elif self.objectType == 'member': + pass + elif self.objectType == 'function': + pass + elif self.objectType == 'class': + assert self.directiveType in ('class', 'struct') + prefix = self.directiveType + ' ' + mainDeclNode += addnodes.desc_annotation(prefix, prefix) + elif self.objectType == 'union': + mainDeclNode += addnodes.desc_annotation('union ', 'union ') + elif self.objectType == 'enum': + if self.directiveType == 'enum': + prefix = 'enum ' + elif self.directiveType == 'enum-class': + prefix = 'enum class ' + elif self.directiveType == 'enum-struct': + prefix = 'enum struct ' + else: + assert False # wrong directiveType used + mainDeclNode += addnodes.desc_annotation(prefix, prefix) + elif self.objectType == 'enumerator': + mainDeclNode += addnodes.desc_annotation('enumerator ', 'enumerator ') + else: + assert False + self.declaration.describe_signature(mainDeclNode, mode, env, self.symbol) + + +class ASTNamespace(ASTBase): + def __init__(self, nestedName: ASTNestedName, + templatePrefix: ASTTemplateDeclarationPrefix) -> None: + self.nestedName = nestedName + self.templatePrefix = templatePrefix + + def _stringify(self, transform: StringifyTransform) -> str: + res = [] + if self.templatePrefix: + res.append(transform(self.templatePrefix)) + res.append(transform(self.nestedName)) + return ''.join(res) + + +class SymbolLookupResult: + def __init__(self, symbols: Iterator["Symbol"], parentSymbol: "Symbol", + identOrOp: Union[ASTIdentifier, ASTOperator], templateParams: Any, + templateArgs: ASTTemplateArgs) -> None: + self.symbols = symbols + self.parentSymbol = parentSymbol + self.identOrOp = identOrOp + self.templateParams = templateParams + self.templateArgs = templateArgs + + +class LookupKey: + def __init__(self, data: List[Tuple[ASTNestedNameElement, + Union[ASTTemplateParams, + ASTTemplateIntroduction], + str]]) -> None: + self.data = data + + +class Symbol: + debug_indent = 0 + debug_indent_string = " " + debug_lookup = False + debug_show_tree = False + + @staticmethod + def debug_print(*args: Any) -> None: + print(Symbol.debug_indent_string * Symbol.debug_indent, end="") + print(*args) + + def _assert_invariants(self) -> None: + if not self.parent: + # parent == None means global scope, so declaration means a parent + assert not self.identOrOp + assert not self.templateParams + assert not self.templateArgs + assert not self.declaration + assert not self.docname + else: + if self.declaration: + assert self.docname + + def __setattr__(self, key: str, value: Any) -> None: + if key == "children": + assert False + else: + return super().__setattr__(key, value) + + def __init__(self, parent: "Symbol", identOrOp: Union[ASTIdentifier, ASTOperator], + templateParams: Union[ASTTemplateParams, ASTTemplateIntroduction], + templateArgs: Any, declaration: ASTDeclaration, docname: str) -> None: + self.parent = parent + # declarations in a single directive are linked together + self.siblingAbove = None # type: Symbol + self.siblingBelow = None # type: Symbol + self.identOrOp = identOrOp + self.templateParams = templateParams # template<templateParams> + self.templateArgs = templateArgs # identifier<templateArgs> + self.declaration = declaration + self.docname = docname + self.isRedeclaration = False + self._assert_invariants() + + # Remember to modify Symbol.remove if modifications to the parent change. + self._children = [] # type: List[Symbol] + self._anonChildren = [] # type: List[Symbol] + # note: _children includes _anonChildren + if self.parent: + self.parent._children.append(self) + if self.declaration: + self.declaration.symbol = self + + # Do symbol addition after self._children has been initialised. + self._add_template_and_function_params() + + def _fill_empty(self, declaration: ASTDeclaration, docname: str) -> None: + self._assert_invariants() + assert not self.declaration + assert not self.docname + assert declaration + assert docname + self.declaration = declaration + self.declaration.symbol = self + self.docname = docname + self._assert_invariants() + # and symbol addition should be done as well + self._add_template_and_function_params() + + def _add_template_and_function_params(self) -> None: + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("_add_template_and_function_params:") + # Note: we may be called from _fill_empty, so the symbols we want + # to add may actually already be present (as empty symbols). + + # add symbols for the template params + if self.templateParams: + for tp in self.templateParams.params: + if not tp.get_identifier(): + continue + # only add a declaration if we our self are from a declaration + if self.declaration: + decl = ASTDeclaration('templateParam', None, None, None, tp) + else: + decl = None + nne = ASTNestedNameElement(tp.get_identifier(), None) + nn = ASTNestedName([nne], [False], rooted=False) + self._add_symbols(nn, [], decl, self.docname) + # add symbols for function parameters, if any + if self.declaration is not None and self.declaration.function_params is not None: + for fp in self.declaration.function_params: + if fp.arg is None: + continue + nn = fp.arg.name + if nn is None: + continue + # (comparing to the template params: we have checked that we are a declaration) + decl = ASTDeclaration('functionParam', None, None, None, fp) + assert not nn.rooted + assert len(nn.names) == 1 + self._add_symbols(nn, [], decl, self.docname) + if Symbol.debug_lookup: + Symbol.debug_indent -= 1 + + def remove(self) -> None: + if self.parent is None: + return + assert self in self.parent._children + self.parent._children.remove(self) + self.parent = None + + def clear_doc(self, docname: str) -> None: + newChildren = [] # type: List[Symbol] + for sChild in self._children: + sChild.clear_doc(docname) + if sChild.declaration and sChild.docname == docname: + sChild.declaration = None + sChild.docname = None + if sChild.siblingAbove is not None: + sChild.siblingAbove.siblingBelow = sChild.siblingBelow + if sChild.siblingBelow is not None: + sChild.siblingBelow.siblingAbove = sChild.siblingAbove + sChild.siblingAbove = None + sChild.siblingBelow = None + newChildren.append(sChild) + self._children = newChildren + + def get_all_symbols(self) -> Iterator[Any]: + yield self + for sChild in self._children: + for s in sChild.get_all_symbols(): + yield s + + @property + def children_recurse_anon(self) -> Generator["Symbol", None, None]: + for c in self._children: + yield c + if not c.identOrOp.is_anon(): + continue + + yield from c.children_recurse_anon + + def get_lookup_key(self) -> "LookupKey": + # The pickle files for the environment and for each document are distinct. + # The environment has all the symbols, but the documents has xrefs that + # must know their scope. A lookup key is essentially a specification of + # how to find a specific symbol. + symbols = [] + s = self + while s.parent: + symbols.append(s) + s = s.parent + symbols.reverse() + key = [] + for s in symbols: + nne = ASTNestedNameElement(s.identOrOp, s.templateArgs) + if s.declaration is not None: + key.append((nne, s.templateParams, s.declaration.get_newest_id())) + else: + key.append((nne, s.templateParams, None)) + return LookupKey(key) + + def get_full_nested_name(self) -> ASTNestedName: + symbols = [] + s = self + while s.parent: + symbols.append(s) + s = s.parent + symbols.reverse() + names = [] + templates = [] + for s in symbols: + names.append(ASTNestedNameElement(s.identOrOp, s.templateArgs)) + templates.append(False) + return ASTNestedName(names, templates, rooted=False) + + def _find_first_named_symbol(self, identOrOp: Union[ASTIdentifier, ASTOperator], + templateParams: Any, templateArgs: ASTTemplateArgs, + templateShorthand: bool, matchSelf: bool, + recurseInAnon: bool, correctPrimaryTemplateArgs: bool + ) -> "Symbol": + if Symbol.debug_lookup: + Symbol.debug_print("_find_first_named_symbol ->") + res = self._find_named_symbols(identOrOp, templateParams, templateArgs, + templateShorthand, matchSelf, recurseInAnon, + correctPrimaryTemplateArgs, + searchInSiblings=False) + try: + return next(res) + except StopIteration: + return None + + def _find_named_symbols(self, identOrOp: Union[ASTIdentifier, ASTOperator], + templateParams: Any, templateArgs: ASTTemplateArgs, + templateShorthand: bool, matchSelf: bool, + recurseInAnon: bool, correctPrimaryTemplateArgs: bool, + searchInSiblings: bool) -> Iterator["Symbol"]: + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("_find_named_symbols:") + Symbol.debug_indent += 1 + Symbol.debug_print("self:") + print(self.to_string(Symbol.debug_indent + 1), end="") + Symbol.debug_print("identOrOp: ", identOrOp) + Symbol.debug_print("templateParams: ", templateParams) + Symbol.debug_print("templateArgs: ", templateArgs) + Symbol.debug_print("templateShorthand: ", templateShorthand) + Symbol.debug_print("matchSelf: ", matchSelf) + Symbol.debug_print("recurseInAnon: ", recurseInAnon) + Symbol.debug_print("correctPrimaryTemplateAargs:", correctPrimaryTemplateArgs) + Symbol.debug_print("searchInSiblings: ", searchInSiblings) + + def isSpecialization() -> bool: + # the names of the template parameters must be given exactly as args + # and params that are packs must in the args be the name expanded + if len(templateParams.params) != len(templateArgs.args): + return True + # having no template params and no arguments is also a specialization + if len(templateParams.params) == 0: + return True + for i in range(len(templateParams.params)): + param = templateParams.params[i] + arg = templateArgs.args[i] + # TODO: doing this by string manipulation is probably not the most efficient + paramName = str(param.name) + argTxt = str(arg) + isArgPackExpansion = argTxt.endswith('...') + if param.isPack != isArgPackExpansion: + return True + argName = argTxt[:-3] if isArgPackExpansion else argTxt + if paramName != argName: + return True + return False + if correctPrimaryTemplateArgs: + if templateParams is not None and templateArgs is not None: + # If both are given, but it's not a specialization, then do lookup as if + # there is no argument list. + # For example: template<typename T> int A<T>::var; + if not isSpecialization(): + templateArgs = None + + def matches(s: "Symbol") -> bool: + if s.identOrOp != identOrOp: + return False + if (s.templateParams is None) != (templateParams is None): + if templateParams is not None: + # we query with params, they must match params + return False + if not templateShorthand: + # we don't query with params, and we do care about them + return False + if templateParams: + # TODO: do better comparison + if str(s.templateParams) != str(templateParams): + return False + if (s.templateArgs is None) != (templateArgs is None): + return False + if s.templateArgs: + # TODO: do better comparison + if str(s.templateArgs) != str(templateArgs): + return False + return True + + def candidates() -> Generator[Symbol, None, None]: + s = self + if Symbol.debug_lookup: + Symbol.debug_print("searching in self:") + print(s.to_string(Symbol.debug_indent + 1), end="") + while True: + if matchSelf: + yield s + if recurseInAnon: + yield from s.children_recurse_anon + else: + yield from s._children + + if s.siblingAbove is None: + break + s = s.siblingAbove + if Symbol.debug_lookup: + Symbol.debug_print("searching in sibling:") + print(s.to_string(Symbol.debug_indent + 1), end="") + + for s in candidates(): + if Symbol.debug_lookup: + Symbol.debug_print("candidate:") + print(s.to_string(Symbol.debug_indent + 1), end="") + if matches(s): + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("matches") + Symbol.debug_indent -= 3 + yield s + if Symbol.debug_lookup: + Symbol.debug_indent += 2 + if Symbol.debug_lookup: + Symbol.debug_indent -= 2 + + def _symbol_lookup(self, nestedName: ASTNestedName, templateDecls: List[Any], + onMissingQualifiedSymbol: Callable[["Symbol", Union[ASTIdentifier, ASTOperator], Any, ASTTemplateArgs], "Symbol"], # NOQA + strictTemplateParamArgLists: bool, ancestorLookupType: str, + templateShorthand: bool, matchSelf: bool, + recurseInAnon: bool, correctPrimaryTemplateArgs: bool, + searchInSiblings: bool) -> SymbolLookupResult: + # ancestorLookupType: if not None, specifies the target type of the lookup + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("_symbol_lookup:") + Symbol.debug_indent += 1 + Symbol.debug_print("self:") + print(self.to_string(Symbol.debug_indent + 1), end="") + Symbol.debug_print("nestedName: ", nestedName) + Symbol.debug_print("templateDecls: ", templateDecls) + Symbol.debug_print("strictTemplateParamArgLists:", strictTemplateParamArgLists) + Symbol.debug_print("ancestorLookupType:", ancestorLookupType) + Symbol.debug_print("templateShorthand: ", templateShorthand) + Symbol.debug_print("matchSelf: ", matchSelf) + Symbol.debug_print("recurseInAnon: ", recurseInAnon) + Symbol.debug_print("correctPrimaryTemplateArgs: ", correctPrimaryTemplateArgs) + Symbol.debug_print("searchInSiblings: ", searchInSiblings) + + if strictTemplateParamArgLists: + # Each template argument list must have a template parameter list. + # But to declare a template there must be an additional template parameter list. + assert (nestedName.num_templates() == len(templateDecls) or + nestedName.num_templates() + 1 == len(templateDecls)) + else: + assert len(templateDecls) <= nestedName.num_templates() + 1 + + names = nestedName.names + + # find the right starting point for lookup + parentSymbol = self + if nestedName.rooted: + while parentSymbol.parent: + parentSymbol = parentSymbol.parent + if ancestorLookupType is not None: + # walk up until we find the first identifier + firstName = names[0] + if not firstName.is_operator(): + while parentSymbol.parent: + if parentSymbol.find_identifier(firstName.identOrOp, + matchSelf=matchSelf, + recurseInAnon=recurseInAnon, + searchInSiblings=searchInSiblings): + # if we are in the scope of a constructor but wants to + # reference the class we need to walk one extra up + if (len(names) == 1 and ancestorLookupType == 'class' and matchSelf and + parentSymbol.parent and + parentSymbol.parent.identOrOp == firstName.identOrOp): + pass + else: + break + parentSymbol = parentSymbol.parent + + if Symbol.debug_lookup: + Symbol.debug_print("starting point:") + print(parentSymbol.to_string(Symbol.debug_indent + 1), end="") + + # and now the actual lookup + iTemplateDecl = 0 + for name in names[:-1]: + identOrOp = name.identOrOp + templateArgs = name.templateArgs + if strictTemplateParamArgLists: + # there must be a parameter list + if templateArgs: + assert iTemplateDecl < len(templateDecls) + templateParams = templateDecls[iTemplateDecl] + iTemplateDecl += 1 + else: + templateParams = None + else: + # take the next template parameter list if there is one + # otherwise it's ok + if templateArgs and iTemplateDecl < len(templateDecls): + templateParams = templateDecls[iTemplateDecl] + iTemplateDecl += 1 + else: + templateParams = None + + symbol = parentSymbol._find_first_named_symbol( + identOrOp, + templateParams, templateArgs, + templateShorthand=templateShorthand, + matchSelf=matchSelf, + recurseInAnon=recurseInAnon, + correctPrimaryTemplateArgs=correctPrimaryTemplateArgs) + if symbol is None: + symbol = onMissingQualifiedSymbol(parentSymbol, identOrOp, + templateParams, templateArgs) + if symbol is None: + if Symbol.debug_lookup: + Symbol.debug_indent -= 2 + return None + # We have now matched part of a nested name, and need to match more + # so even if we should matchSelf before, we definitely shouldn't + # even more. (see also issue #2666) + matchSelf = False + parentSymbol = symbol + + if Symbol.debug_lookup: + Symbol.debug_print("handle last name from:") + print(parentSymbol.to_string(Symbol.debug_indent + 1), end="") + + # handle the last name + name = names[-1] + identOrOp = name.identOrOp + templateArgs = name.templateArgs + if iTemplateDecl < len(templateDecls): + assert iTemplateDecl + 1 == len(templateDecls) + templateParams = templateDecls[iTemplateDecl] + else: + assert iTemplateDecl == len(templateDecls) + templateParams = None + + symbols = parentSymbol._find_named_symbols( + identOrOp, templateParams, templateArgs, + templateShorthand=templateShorthand, matchSelf=matchSelf, + recurseInAnon=recurseInAnon, correctPrimaryTemplateArgs=False, + searchInSiblings=searchInSiblings) + if Symbol.debug_lookup: + symbols = list(symbols) # type: ignore + Symbol.debug_indent -= 2 + return SymbolLookupResult(symbols, parentSymbol, + identOrOp, templateParams, templateArgs) + + def _add_symbols(self, nestedName: ASTNestedName, templateDecls: List[Any], + declaration: ASTDeclaration, docname: str) -> "Symbol": + # Used for adding a whole path of symbols, where the last may or may not + # be an actual declaration. + + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("_add_symbols:") + Symbol.debug_indent += 1 + Symbol.debug_print("tdecls:", templateDecls) + Symbol.debug_print("nn: ", nestedName) + Symbol.debug_print("decl: ", declaration) + Symbol.debug_print("doc: ", docname) + + def onMissingQualifiedSymbol(parentSymbol: "Symbol", + identOrOp: Union[ASTIdentifier, ASTOperator], + templateParams: Any, templateArgs: ASTTemplateArgs + ) -> "Symbol": + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("_add_symbols, onMissingQualifiedSymbol:") + Symbol.debug_indent += 1 + Symbol.debug_print("templateParams:", templateParams) + Symbol.debug_print("identOrOp: ", identOrOp) + Symbol.debug_print("templateARgs: ", templateArgs) + Symbol.debug_indent -= 2 + return Symbol(parent=parentSymbol, identOrOp=identOrOp, + templateParams=templateParams, + templateArgs=templateArgs, declaration=None, + docname=None) + + lookupResult = self._symbol_lookup(nestedName, templateDecls, + onMissingQualifiedSymbol, + strictTemplateParamArgLists=True, + ancestorLookupType=None, + templateShorthand=False, + matchSelf=False, + recurseInAnon=False, + correctPrimaryTemplateArgs=True, + searchInSiblings=False) + assert lookupResult is not None # we create symbols all the way, so that can't happen + symbols = list(lookupResult.symbols) + if len(symbols) == 0: + if Symbol.debug_lookup: + Symbol.debug_print("_add_symbols, result, no symbol:") + Symbol.debug_indent += 1 + Symbol.debug_print("templateParams:", lookupResult.templateParams) + Symbol.debug_print("identOrOp: ", lookupResult.identOrOp) + Symbol.debug_print("templateArgs: ", lookupResult.templateArgs) + Symbol.debug_print("declaration: ", declaration) + Symbol.debug_print("docname: ", docname) + Symbol.debug_indent -= 1 + symbol = Symbol(parent=lookupResult.parentSymbol, + identOrOp=lookupResult.identOrOp, + templateParams=lookupResult.templateParams, + templateArgs=lookupResult.templateArgs, + declaration=declaration, + docname=docname) + if Symbol.debug_lookup: + Symbol.debug_indent -= 2 + return symbol + + if Symbol.debug_lookup: + Symbol.debug_print("_add_symbols, result, symbols:") + Symbol.debug_indent += 1 + Symbol.debug_print("number symbols:", len(symbols)) + Symbol.debug_indent -= 1 + + if not declaration: + if Symbol.debug_lookup: + Symbol.debug_print("no delcaration") + Symbol.debug_indent -= 2 + # good, just a scope creation + # TODO: what if we have more than one symbol? + return symbols[0] + + noDecl = [] + withDecl = [] + dupDecl = [] + for s in symbols: + if s.declaration is None: + noDecl.append(s) + elif s.isRedeclaration: + dupDecl.append(s) + else: + withDecl.append(s) + if Symbol.debug_lookup: + Symbol.debug_print("#noDecl: ", len(noDecl)) + Symbol.debug_print("#withDecl:", len(withDecl)) + Symbol.debug_print("#dupDecl: ", len(dupDecl)) + # With partial builds we may start with a large symbol tree stripped of declarations. + # Essentially any combination of noDecl, withDecl, and dupDecls seems possible. + # TODO: make partial builds fully work. What should happen when the primary symbol gets + # deleted, and other duplicates exist? The full document should probably be rebuild. + + # First check if one of those with a declaration matches. + # If it's a function, we need to compare IDs, + # otherwise there should be only one symbol with a declaration. + def makeCandSymbol() -> "Symbol": + if Symbol.debug_lookup: + Symbol.debug_print("begin: creating candidate symbol") + symbol = Symbol(parent=lookupResult.parentSymbol, + identOrOp=lookupResult.identOrOp, + templateParams=lookupResult.templateParams, + templateArgs=lookupResult.templateArgs, + declaration=declaration, + docname=docname) + if Symbol.debug_lookup: + Symbol.debug_print("end: creating candidate symbol") + return symbol + if len(withDecl) == 0: + candSymbol = None + else: + candSymbol = makeCandSymbol() + + def handleDuplicateDeclaration(symbol: "Symbol", candSymbol: "Symbol") -> None: + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("redeclaration") + Symbol.debug_indent -= 1 + Symbol.debug_indent -= 2 + # Redeclaration of the same symbol. + # Let the new one be there, but raise an error to the client + # so it can use the real symbol as subscope. + # This will probably result in a duplicate id warning. + candSymbol.isRedeclaration = True + raise _DuplicateSymbolError(symbol, declaration) + + if declaration.objectType != "function": + assert len(withDecl) <= 1 + handleDuplicateDeclaration(withDecl[0], candSymbol) + # (not reachable) + + # a function, so compare IDs + candId = declaration.get_newest_id() + if Symbol.debug_lookup: + Symbol.debug_print("candId:", candId) + for symbol in withDecl: + oldId = symbol.declaration.get_newest_id() + if Symbol.debug_lookup: + Symbol.debug_print("oldId: ", oldId) + if candId == oldId: + handleDuplicateDeclaration(symbol, candSymbol) + # (not reachable) + # no candidate symbol found with matching ID + # if there is an empty symbol, fill that one + if len(noDecl) == 0: + if Symbol.debug_lookup: + Symbol.debug_print("no match, no empty, candSybmol is not None?:", candSymbol is not None) # NOQA + Symbol.debug_indent -= 2 + if candSymbol is not None: + return candSymbol + else: + return makeCandSymbol() + else: + if Symbol.debug_lookup: + Symbol.debug_print("no match, but fill an empty declaration, candSybmol is not None?:", candSymbol is not None) # NOQA + Symbol.debug_indent -= 2 + if candSymbol is not None: + candSymbol.remove() + # assert len(noDecl) == 1 + # TODO: enable assertion when we at some point find out how to do cleanup + # for now, just take the first one, it should work fine ... right? + symbol = noDecl[0] + # If someone first opened the scope, and then later + # declares it, e.g, + # .. namespace:: Test + # .. namespace:: nullptr + # .. class:: Test + symbol._fill_empty(declaration, docname) + return symbol + + def merge_with(self, other: "Symbol", docnames: List[str], + env: "BuildEnvironment") -> None: + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("merge_with:") + assert other is not None + + def unconditionalAdd(self, otherChild): + # TODO: hmm, should we prune by docnames? + self._children.append(otherChild) + otherChild.parent = self + otherChild._assert_invariants() + + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + for otherChild in other._children: + if Symbol.debug_lookup: + Symbol.debug_print("otherChild:\n", otherChild.to_string(Symbol.debug_indent)) + Symbol.debug_indent += 1 + if otherChild.isRedeclaration: + unconditionalAdd(self, otherChild) + if Symbol.debug_lookup: + Symbol.debug_print("isRedeclaration") + Symbol.debug_indent -= 1 + continue + candiateIter = self._find_named_symbols( + identOrOp=otherChild.identOrOp, + templateParams=otherChild.templateParams, + templateArgs=otherChild.templateArgs, + templateShorthand=False, matchSelf=False, + recurseInAnon=False, correctPrimaryTemplateArgs=False, + searchInSiblings=False) + candidates = list(candiateIter) + + if Symbol.debug_lookup: + Symbol.debug_print("raw candidate symbols:", len(candidates)) + symbols = [s for s in candidates if not s.isRedeclaration] + if Symbol.debug_lookup: + Symbol.debug_print("non-duplicate candidate symbols:", len(symbols)) + + if len(symbols) == 0: + unconditionalAdd(self, otherChild) + if Symbol.debug_lookup: + Symbol.debug_indent -= 1 + continue + + ourChild = None + if otherChild.declaration is None: + if Symbol.debug_lookup: + Symbol.debug_print("no declaration in other child") + ourChild = symbols[0] + else: + queryId = otherChild.declaration.get_newest_id() + if Symbol.debug_lookup: + Symbol.debug_print("queryId: ", queryId) + for symbol in symbols: + if symbol.declaration is None: + if Symbol.debug_lookup: + Symbol.debug_print("empty candidate") + # if in the end we have non matching, but have an empty one, + # then just continue with that + ourChild = symbol + continue + candId = symbol.declaration.get_newest_id() + if Symbol.debug_lookup: + Symbol.debug_print("candidate:", candId) + if candId == queryId: + ourChild = symbol + break + if Symbol.debug_lookup: + Symbol.debug_indent -= 1 + if ourChild is None: + unconditionalAdd(self, otherChild) + continue + if otherChild.declaration and otherChild.docname in docnames: + if not ourChild.declaration: + ourChild._fill_empty(otherChild.declaration, otherChild.docname) + elif ourChild.docname != otherChild.docname: + name = str(ourChild.declaration) + msg = __("Duplicate declaration, also defined in '%s'.\n" + "Declaration is '%s'.") + msg = msg % (ourChild.docname, name) + logger.warning(msg, location=otherChild.docname) + else: + # Both have declarations, and in the same docname. + # This can apparently happen, it should be safe to + # just ignore it, right? + # Hmm, only on duplicate declarations, right? + msg = "Internal C++ domain error during symbol merging.\n" + msg += "ourChild:\n" + ourChild.to_string(1) + msg += "\notherChild:\n" + otherChild.to_string(1) + logger.warning(msg, location=otherChild.docname) + ourChild.merge_with(otherChild, docnames, env) + if Symbol.debug_lookup: + Symbol.debug_indent -= 2 + + def add_name(self, nestedName: ASTNestedName, + templatePrefix: ASTTemplateDeclarationPrefix = None) -> "Symbol": + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("add_name:") + if templatePrefix: + templateDecls = templatePrefix.templates + else: + templateDecls = [] + res = self._add_symbols(nestedName, templateDecls, + declaration=None, docname=None) + if Symbol.debug_lookup: + Symbol.debug_indent -= 1 + return res + + def add_declaration(self, declaration: ASTDeclaration, docname: str) -> "Symbol": + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("add_declaration:") + assert declaration + assert docname + nestedName = declaration.name + if declaration.templatePrefix: + templateDecls = declaration.templatePrefix.templates + else: + templateDecls = [] + res = self._add_symbols(nestedName, templateDecls, declaration, docname) + if Symbol.debug_lookup: + Symbol.debug_indent -= 1 + return res + + def find_identifier(self, identOrOp: Union[ASTIdentifier, ASTOperator], + matchSelf: bool, recurseInAnon: bool, searchInSiblings: bool + ) -> "Symbol": + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("find_identifier:") + Symbol.debug_indent += 1 + Symbol.debug_print("identOrOp: ", identOrOp) + Symbol.debug_print("matchSelf: ", matchSelf) + Symbol.debug_print("recurseInAnon: ", recurseInAnon) + Symbol.debug_print("searchInSiblings:", searchInSiblings) + print(self.to_string(Symbol.debug_indent + 1), end="") + Symbol.debug_indent -= 2 + current = self + while current is not None: + if Symbol.debug_lookup: + Symbol.debug_indent += 2 + Symbol.debug_print("trying:") + print(current.to_string(Symbol.debug_indent + 1), end="") + Symbol.debug_indent -= 2 + if matchSelf and current.identOrOp == identOrOp: + return current + children = current.children_recurse_anon if recurseInAnon else current._children + for s in children: + if s.identOrOp == identOrOp: + return s + if not searchInSiblings: + break + current = current.siblingAbove + return None + + def direct_lookup(self, key: "LookupKey") -> "Symbol": + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("direct_lookup:") + Symbol.debug_indent += 1 + s = self + for name, templateParams, id_ in key.data: + if id_ is not None: + res = None + for cand in s._children: + if cand.declaration is None: + continue + if cand.declaration.get_newest_id() == id_: + res = cand + break + s = res + else: + identOrOp = name.identOrOp + templateArgs = name.templateArgs + s = s._find_first_named_symbol(identOrOp, + templateParams, templateArgs, + templateShorthand=False, + matchSelf=False, + recurseInAnon=False, + correctPrimaryTemplateArgs=False) + if Symbol.debug_lookup: + Symbol.debug_print("name: ", name) + Symbol.debug_print("templateParams:", templateParams) + Symbol.debug_print("id: ", id_) + if s is not None: + print(s.to_string(Symbol.debug_indent + 1), end="") + else: + Symbol.debug_print("not found") + if s is None: + if Symbol.debug_lookup: + Symbol.debug_indent -= 2 + return None + if Symbol.debug_lookup: + Symbol.debug_indent -= 2 + return s + + def find_name(self, nestedName: ASTNestedName, templateDecls: List[Any], + typ: str, templateShorthand: bool, matchSelf: bool, + recurseInAnon: bool, searchInSiblings: bool) -> Tuple[List["Symbol"], str]: + # templateShorthand: missing template parameter lists for templates is ok + # If the first component is None, + # then the second component _may_ be a string explaining why. + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("find_name:") + Symbol.debug_indent += 1 + Symbol.debug_print("self:") + print(self.to_string(Symbol.debug_indent + 1), end="") + Symbol.debug_print("nestedName: ", nestedName) + Symbol.debug_print("templateDecls: ", templateDecls) + Symbol.debug_print("typ: ", typ) + Symbol.debug_print("templateShorthand:", templateShorthand) + Symbol.debug_print("matchSelf: ", matchSelf) + Symbol.debug_print("recurseInAnon: ", recurseInAnon) + Symbol.debug_print("searchInSiblings: ", searchInSiblings) + + class QualifiedSymbolIsTemplateParam(Exception): + pass + + def onMissingQualifiedSymbol(parentSymbol: "Symbol", + identOrOp: Union[ASTIdentifier, ASTOperator], + templateParams: Any, + templateArgs: ASTTemplateArgs) -> "Symbol": + # TODO: Maybe search without template args? + # Though, the correctPrimaryTemplateArgs does + # that for primary templates. + # Is there another case where it would be good? + if parentSymbol.declaration is not None: + if parentSymbol.declaration.objectType == 'templateParam': + raise QualifiedSymbolIsTemplateParam() + return None + + try: + lookupResult = self._symbol_lookup(nestedName, templateDecls, + onMissingQualifiedSymbol, + strictTemplateParamArgLists=False, + ancestorLookupType=typ, + templateShorthand=templateShorthand, + matchSelf=matchSelf, + recurseInAnon=recurseInAnon, + correctPrimaryTemplateArgs=False, + searchInSiblings=searchInSiblings) + except QualifiedSymbolIsTemplateParam: + return None, "templateParamInQualified" + + if lookupResult is None: + # if it was a part of the qualification that could not be found + if Symbol.debug_lookup: + Symbol.debug_indent -= 2 + return None, None + + res = list(lookupResult.symbols) + if len(res) != 0: + if Symbol.debug_lookup: + Symbol.debug_indent -= 2 + return res, None + + if lookupResult.parentSymbol.declaration is not None: + if lookupResult.parentSymbol.declaration.objectType == 'templateParam': + return None, "templateParamInQualified" + + # try without template params and args + symbol = lookupResult.parentSymbol._find_first_named_symbol( + lookupResult.identOrOp, None, None, + templateShorthand=templateShorthand, matchSelf=matchSelf, + recurseInAnon=recurseInAnon, correctPrimaryTemplateArgs=False) + if Symbol.debug_lookup: + Symbol.debug_indent -= 2 + if symbol is not None: + return [symbol], None + else: + return None, None + + def find_declaration(self, declaration: ASTDeclaration, typ: str, templateShorthand: bool, + matchSelf: bool, recurseInAnon: bool) -> "Symbol": + # templateShorthand: missing template parameter lists for templates is ok + if Symbol.debug_lookup: + Symbol.debug_indent += 1 + Symbol.debug_print("find_declaration:") + nestedName = declaration.name + if declaration.templatePrefix: + templateDecls = declaration.templatePrefix.templates + else: + templateDecls = [] + + def onMissingQualifiedSymbol(parentSymbol: "Symbol", + identOrOp: Union[ASTIdentifier, ASTOperator], + templateParams: Any, + templateArgs: ASTTemplateArgs) -> "Symbol": + return None + + lookupResult = self._symbol_lookup(nestedName, templateDecls, + onMissingQualifiedSymbol, + strictTemplateParamArgLists=False, + ancestorLookupType=typ, + templateShorthand=templateShorthand, + matchSelf=matchSelf, + recurseInAnon=recurseInAnon, + correctPrimaryTemplateArgs=False, + searchInSiblings=False) + if Symbol.debug_lookup: + Symbol.debug_indent -= 1 + if lookupResult is None: + return None + + symbols = list(lookupResult.symbols) + if len(symbols) == 0: + return None + + querySymbol = Symbol(parent=lookupResult.parentSymbol, + identOrOp=lookupResult.identOrOp, + templateParams=lookupResult.templateParams, + templateArgs=lookupResult.templateArgs, + declaration=declaration, + docname='fakeDocnameForQuery') + queryId = declaration.get_newest_id() + for symbol in symbols: + if symbol.declaration is None: + continue + candId = symbol.declaration.get_newest_id() + if candId == queryId: + querySymbol.remove() + return symbol + querySymbol.remove() + return None + + def to_string(self, indent: int) -> str: + res = [Symbol.debug_indent_string * indent] + if not self.parent: + res.append('::') + else: + if self.templateParams: + res.append(str(self.templateParams)) + res.append('\n') + res.append(Symbol.debug_indent_string * indent) + if self.identOrOp: + res.append(str(self.identOrOp)) + else: + res.append(str(self.declaration)) + if self.templateArgs: + res.append(str(self.templateArgs)) + if self.declaration: + res.append(": ") + if self.isRedeclaration: + res.append('!!duplicate!! ') + res.append(str(self.declaration)) + if self.docname: + res.append('\t(') + res.append(self.docname) + res.append(')') + res.append('\n') + return ''.join(res) + + def dump(self, indent: int) -> str: + res = [self.to_string(indent)] + for c in self._children: + res.append(c.dump(indent + 1)) + return ''.join(res) + + +class DefinitionParser(BaseParser): + # those without signedness and size modifiers + # see https://en.cppreference.com/w/cpp/language/types + _simple_fundemental_types = ( + 'void', 'bool', 'char', 'wchar_t', 'char16_t', 'char32_t', 'int', + 'float', 'double', 'auto' + ) + + _prefix_keys = ('class', 'struct', 'enum', 'union', 'typename') + + @property + def language(self) -> str: + return 'C++' + + @property + def id_attributes(self): + return self.config.cpp_id_attributes + + @property + def paren_attributes(self): + return self.config.cpp_paren_attributes + + def _parse_string(self) -> str: + if self.current_char != '"': + return None + startPos = self.pos + self.pos += 1 + escape = False + while True: + if self.eof: + self.fail("Unexpected end during inside string.") + elif self.current_char == '"' and not escape: + self.pos += 1 + break + elif self.current_char == '\\': + escape = True + else: + escape = False + self.pos += 1 + return self.definition[startPos:self.pos] + + def _parse_literal(self) -> ASTLiteral: + # -> integer-literal + # | character-literal + # | floating-literal + # | string-literal + # | boolean-literal -> "false" | "true" + # | pointer-literal -> "nullptr" + # | user-defined-literal + self.skip_ws() + if self.skip_word('nullptr'): + return ASTPointerLiteral() + if self.skip_word('true'): + return ASTBooleanLiteral(True) + if self.skip_word('false'): + return ASTBooleanLiteral(False) + for regex in [float_literal_re, binary_literal_re, hex_literal_re, + integer_literal_re, octal_literal_re]: + pos = self.pos + if self.match(regex): + while self.current_char in 'uUlLfF': + self.pos += 1 + return ASTNumberLiteral(self.definition[pos:self.pos]) + + string = self._parse_string() + if string is not None: + return ASTStringLiteral(string) + + # character-literal + if self.match(char_literal_re): + prefix = self.last_match.group(1) # may be None when no prefix + data = self.last_match.group(2) + try: + return ASTCharLiteral(prefix, data) + except UnicodeDecodeError as e: + self.fail("Can not handle character literal. Internal error was: %s" % e) + except UnsupportedMultiCharacterCharLiteral: + self.fail("Can not handle character literal" + " resulting in multiple decoded characters.") + + # TODO: user-defined lit + return None + + def _parse_fold_or_paren_expression(self) -> ASTExpression: + # "(" expression ")" + # fold-expression + # -> ( cast-expression fold-operator ... ) + # | ( ... fold-operator cast-expression ) + # | ( cast-expression fold-operator ... fold-operator cast-expression + if self.current_char != '(': + return None + self.pos += 1 + self.skip_ws() + if self.skip_string_and_ws("..."): + # ( ... fold-operator cast-expression ) + if not self.match(_fold_operator_re): + self.fail("Expected fold operator after '...' in fold expression.") + op = self.matched_text + rightExpr = self._parse_cast_expression() + if not self.skip_string(')'): + self.fail("Expected ')' in end of fold expression.") + return ASTFoldExpr(None, op, rightExpr) + # try first parsing a unary right fold, or a binary fold + pos = self.pos + try: + self.skip_ws() + leftExpr = self._parse_cast_expression() + self.skip_ws() + if not self.match(_fold_operator_re): + self.fail("Expected fold operator after left expression in fold expression.") + op = self.matched_text + self.skip_ws() + if not self.skip_string_and_ws('...'): + self.fail("Expected '...' after fold operator in fold expression.") + except DefinitionError as eFold: + self.pos = pos + # fall back to a paren expression + try: + res = self._parse_expression() + self.skip_ws() + if not self.skip_string(')'): + self.fail("Expected ')' in end of parenthesized expression.") + except DefinitionError as eExpr: + raise self._make_multi_error([ + (eFold, "If fold expression"), + (eExpr, "If parenthesized expression") + ], "Error in fold expression or parenthesized expression.") + return ASTParenExpr(res) + # now it definitely is a fold expression + if self.skip_string(')'): + return ASTFoldExpr(leftExpr, op, None) + if not self.match(_fold_operator_re): + self.fail("Expected fold operator or ')' after '...' in fold expression.") + if op != self.matched_text: + self.fail("Operators are different in binary fold: '%s' and '%s'." + % (op, self.matched_text)) + rightExpr = self._parse_cast_expression() + self.skip_ws() + if not self.skip_string(')'): + self.fail("Expected ')' to end binary fold expression.") + return ASTFoldExpr(leftExpr, op, rightExpr) + + def _parse_primary_expression(self) -> ASTExpression: + # literal + # "this" + # lambda-expression + # "(" expression ")" + # fold-expression + # id-expression -> we parse this with _parse_nested_name + self.skip_ws() + res = self._parse_literal() # type: ASTExpression + if res is not None: + return res + self.skip_ws() + if self.skip_word("this"): + return ASTThisLiteral() + # TODO: try lambda expression + res = self._parse_fold_or_paren_expression() + if res is not None: + return res + nn = self._parse_nested_name() + if nn is not None: + return ASTIdExpression(nn) + return None + + def _parse_initializer_list(self, name: str, open: str, close: str + ) -> Tuple[List[Union[ASTExpression, + ASTBracedInitList]], + bool]: + # Parse open and close with the actual initializer-list inbetween + # -> initializer-clause '...'[opt] + # | initializer-list ',' initializer-clause '...'[opt] + self.skip_ws() + if not self.skip_string_and_ws(open): + return None, None + if self.skip_string(close): + return [], False + + exprs = [] # type: List[Union[ASTExpression, ASTBracedInitList]] + trailingComma = False + while True: + self.skip_ws() + expr = self._parse_initializer_clause() + self.skip_ws() + if self.skip_string('...'): + exprs.append(ASTPackExpansionExpr(expr)) + else: + exprs.append(expr) + self.skip_ws() + if self.skip_string(close): + break + if not self.skip_string_and_ws(','): + self.fail("Error in %s, expected ',' or '%s'." % (name, close)) + if self.current_char == close and close == '}': + self.pos += 1 + trailingComma = True + break + return exprs, trailingComma + + def _parse_paren_expression_list(self) -> ASTParenExprList: + # -> '(' expression-list ')' + # though, we relax it to also allow empty parens + # as it's needed in some cases + # + # expression-list + # -> initializer-list + exprs, trailingComma = self._parse_initializer_list("parenthesized expression-list", + '(', ')') + if exprs is None: + return None + return ASTParenExprList(exprs) + + def _parse_initializer_clause(self) -> Union[ASTExpression, ASTBracedInitList]: + bracedInitList = self._parse_braced_init_list() + if bracedInitList is not None: + return bracedInitList + return self._parse_assignment_expression(inTemplate=False) + + def _parse_braced_init_list(self) -> ASTBracedInitList: + # -> '{' initializer-list ','[opt] '}' + # | '{' '}' + exprs, trailingComma = self._parse_initializer_list("braced-init-list", '{', '}') + if exprs is None: + return None + return ASTBracedInitList(exprs, trailingComma) + + def _parse_expression_list_or_braced_init_list( + self + ) -> Union[ASTParenExprList, ASTBracedInitList]: + paren = self._parse_paren_expression_list() + if paren is not None: + return paren + return self._parse_braced_init_list() + + def _parse_postfix_expression(self) -> ASTPostfixExpr: + # -> primary + # | postfix "[" expression "]" + # | postfix "[" braced-init-list [opt] "]" + # | postfix "(" expression-list [opt] ")" + # | postfix "." "template" [opt] id-expression + # | postfix "->" "template" [opt] id-expression + # | postfix "." pseudo-destructor-name + # | postfix "->" pseudo-destructor-name + # | postfix "++" + # | postfix "--" + # | simple-type-specifier "(" expression-list [opt] ")" + # | simple-type-specifier braced-init-list + # | typename-specifier "(" expression-list [opt] ")" + # | typename-specifier braced-init-list + # | "dynamic_cast" "<" type-id ">" "(" expression ")" + # | "static_cast" "<" type-id ">" "(" expression ")" + # | "reinterpret_cast" "<" type-id ">" "(" expression ")" + # | "const_cast" "<" type-id ">" "(" expression ")" + # | "typeid" "(" expression ")" + # | "typeid" "(" type-id ")" + + prefixType = None + prefix = None # type: Any + self.skip_ws() + + cast = None + for c in _id_explicit_cast: + if self.skip_word_and_ws(c): + cast = c + break + if cast is not None: + prefixType = "cast" + if not self.skip_string("<"): + self.fail("Expected '<' afer '%s'." % cast) + typ = self._parse_type(False) + self.skip_ws() + if not self.skip_string_and_ws(">"): + self.fail("Expected '>' after type in '%s'." % cast) + if not self.skip_string("("): + self.fail("Expected '(' in '%s'." % cast) + + def parser() -> ASTExpression: + return self._parse_expression() + expr = self._parse_expression_fallback([')'], parser) + self.skip_ws() + if not self.skip_string(")"): + self.fail("Expected ')' to end '%s'." % cast) + prefix = ASTExplicitCast(cast, typ, expr) + elif self.skip_word_and_ws("typeid"): + prefixType = "typeid" + if not self.skip_string_and_ws('('): + self.fail("Expected '(' after 'typeid'.") + pos = self.pos + try: + typ = self._parse_type(False) + prefix = ASTTypeId(typ, isType=True) + if not self.skip_string(')'): + self.fail("Expected ')' to end 'typeid' of type.") + except DefinitionError as eType: + self.pos = pos + try: + + def parser() -> ASTExpression: + return self._parse_expression() + expr = self._parse_expression_fallback([')'], parser) + prefix = ASTTypeId(expr, isType=False) + if not self.skip_string(')'): + self.fail("Expected ')' to end 'typeid' of expression.") + except DefinitionError as eExpr: + self.pos = pos + header = "Error in 'typeid(...)'." + header += " Expected type or expression." + errors = [] + errors.append((eType, "If type")) + errors.append((eExpr, "If expression")) + raise self._make_multi_error(errors, header) + else: # a primary expression or a type + pos = self.pos + try: + prefix = self._parse_primary_expression() + prefixType = 'expr' + except DefinitionError as eOuter: + self.pos = pos + try: + # we are potentially casting, so save parens for us + # TODO: hmm, would we need to try both with operatorCast and with None? + prefix = self._parse_type(False, 'operatorCast') + prefixType = 'typeOperatorCast' + # | simple-type-specifier "(" expression-list [opt] ")" + # | simple-type-specifier braced-init-list + # | typename-specifier "(" expression-list [opt] ")" + # | typename-specifier braced-init-list + self.skip_ws() + if self.current_char != '(' and self.current_char != '{': + self.fail("Expecting '(' or '{' after type in cast expression.") + except DefinitionError as eInner: + self.pos = pos + header = "Error in postfix expression," + header += " expected primary expression or type." + errors = [] + errors.append((eOuter, "If primary expression")) + errors.append((eInner, "If type")) + raise self._make_multi_error(errors, header) + + # and now parse postfixes + postFixes = [] # type: List[ASTPostfixOp] + while True: + self.skip_ws() + if prefixType in ['expr', 'cast', 'typeid']: + if self.skip_string_and_ws('['): + expr = self._parse_expression() + self.skip_ws() + if not self.skip_string(']'): + self.fail("Expected ']' in end of postfix expression.") + postFixes.append(ASTPostfixArray(expr)) + continue + if self.skip_string('.'): + if self.skip_string('*'): + # don't steal the dot + self.pos -= 2 + elif self.skip_string('..'): + # don't steal the dot + self.pos -= 3 + else: + name = self._parse_nested_name() + postFixes.append(ASTPostfixMember(name)) + continue + if self.skip_string('->'): + if self.skip_string('*'): + # don't steal the arrow + self.pos -= 3 + else: + name = self._parse_nested_name() + postFixes.append(ASTPostfixMemberOfPointer(name)) + continue + if self.skip_string('++'): + postFixes.append(ASTPostfixInc()) + continue + if self.skip_string('--'): + postFixes.append(ASTPostfixDec()) + continue + lst = self._parse_expression_list_or_braced_init_list() + if lst is not None: + postFixes.append(ASTPostfixCallExpr(lst)) + continue + break + return ASTPostfixExpr(prefix, postFixes) + + def _parse_unary_expression(self) -> ASTExpression: + # -> postfix + # | "++" cast + # | "--" cast + # | unary-operator cast -> (* | & | + | - | ! | ~) cast + # The rest: + # | "sizeof" unary + # | "sizeof" "(" type-id ")" + # | "sizeof" "..." "(" identifier ")" + # | "alignof" "(" type-id ")" + # | noexcept-expression -> noexcept "(" expression ")" + # | new-expression + # | delete-expression + self.skip_ws() + for op in _expression_unary_ops: + # TODO: hmm, should we be able to backtrack here? + if op[0] in 'cn': + res = self.skip_word(op) + else: + res = self.skip_string(op) + if res: + expr = self._parse_cast_expression() + return ASTUnaryOpExpr(op, expr) + if self.skip_word_and_ws('sizeof'): + if self.skip_string_and_ws('...'): + if not self.skip_string_and_ws('('): + self.fail("Expecting '(' after 'sizeof...'.") + if not self.match(identifier_re): + self.fail("Expecting identifier for 'sizeof...'.") + ident = ASTIdentifier(self.matched_text) + self.skip_ws() + if not self.skip_string(")"): + self.fail("Expecting ')' to end 'sizeof...'.") + return ASTSizeofParamPack(ident) + if self.skip_string_and_ws('('): + typ = self._parse_type(named=False) + self.skip_ws() + if not self.skip_string(')'): + self.fail("Expecting ')' to end 'sizeof'.") + return ASTSizeofType(typ) + expr = self._parse_unary_expression() + return ASTSizeofExpr(expr) + if self.skip_word_and_ws('alignof'): + if not self.skip_string_and_ws('('): + self.fail("Expecting '(' after 'alignof'.") + typ = self._parse_type(named=False) + self.skip_ws() + if not self.skip_string(')'): + self.fail("Expecting ')' to end 'alignof'.") + return ASTAlignofExpr(typ) + if self.skip_word_and_ws('noexcept'): + if not self.skip_string_and_ws('('): + self.fail("Expecting '(' after 'noexcept'.") + expr = self._parse_expression() + self.skip_ws() + if not self.skip_string(')'): + self.fail("Expecting ')' to end 'noexcept'.") + return ASTNoexceptExpr(expr) + # new-expression + pos = self.pos + rooted = self.skip_string('::') + self.skip_ws() + if not self.skip_word_and_ws('new'): + self.pos = pos + else: + # new-placement[opt] new-type-id new-initializer[opt] + # new-placement[opt] ( type-id ) new-initializer[opt] + isNewTypeId = True + if self.skip_string_and_ws('('): + # either this is a new-placement or it's the second production + # without placement, and it's actually the ( type-id ) part + self.fail("Sorry, neither new-placement nor parenthesised type-id " + "in new-epression is supported yet.") + # set isNewTypeId = False if it's (type-id) + if isNewTypeId: + declSpecs = self._parse_decl_specs(outer=None) + decl = self._parse_declarator(named=False, paramMode="new") + else: + self.fail("Sorry, parenthesised type-id in new expression not yet supported.") + lst = self._parse_expression_list_or_braced_init_list() + return ASTNewExpr(rooted, isNewTypeId, ASTType(declSpecs, decl), lst) + # delete-expression + pos = self.pos + rooted = self.skip_string('::') + self.skip_ws() + if not self.skip_word_and_ws('delete'): + self.pos = pos + else: + array = self.skip_string_and_ws('[') + if array and not self.skip_string_and_ws(']'): + self.fail("Expected ']' in array delete-expression.") + expr = self._parse_cast_expression() + return ASTDeleteExpr(rooted, array, expr) + return self._parse_postfix_expression() + + def _parse_cast_expression(self) -> ASTExpression: + # -> unary | "(" type-id ")" cast + pos = self.pos + self.skip_ws() + if self.skip_string('('): + try: + typ = self._parse_type(False) + if not self.skip_string(')'): + self.fail("Expected ')' in cast expression.") + expr = self._parse_cast_expression() + return ASTCastExpr(typ, expr) + except DefinitionError as exCast: + self.pos = pos + try: + return self._parse_unary_expression() + except DefinitionError as exUnary: + errs = [] + errs.append((exCast, "If type cast expression")) + errs.append((exUnary, "If unary expression")) + raise self._make_multi_error(errs, "Error in cast expression.") + else: + return self._parse_unary_expression() + + def _parse_logical_or_expression(self, inTemplate: bool) -> ASTExpression: + # logical-or = logical-and || + # logical-and = inclusive-or && + # inclusive-or = exclusive-or | + # exclusive-or = and ^ + # and = equality & + # equality = relational ==, != + # relational = shift <, >, <=, >= + # shift = additive <<, >> + # additive = multiplicative +, - + # multiplicative = pm *, /, % + # pm = cast .*, ->* + def _parse_bin_op_expr(self: DefinitionParser, + opId: int, inTemplate: bool) -> ASTExpression: + if opId + 1 == len(_expression_bin_ops): + def parser(inTemplate: bool) -> ASTExpression: + return self._parse_cast_expression() + else: + def parser(inTemplate: bool) -> ASTExpression: + return _parse_bin_op_expr(self, opId + 1, inTemplate=inTemplate) + exprs = [] + ops = [] + exprs.append(parser(inTemplate=inTemplate)) + while True: + self.skip_ws() + if inTemplate and self.current_char == '>': + break + pos = self.pos + oneMore = False + for op in _expression_bin_ops[opId]: + if op[0] in 'abcnox': + if not self.skip_word(op): + continue + else: + if not self.skip_string(op): + continue + if op == '&' and self.current_char == '&': + # don't split the && 'token' + self.pos -= 1 + # and btw. && has lower precedence, so we are done + break + try: + expr = parser(inTemplate=inTemplate) + exprs.append(expr) + ops.append(op) + oneMore = True + break + except DefinitionError: + self.pos = pos + if not oneMore: + break + return ASTBinOpExpr(exprs, ops) + return _parse_bin_op_expr(self, 0, inTemplate=inTemplate) + + def _parse_conditional_expression_tail(self, orExprHead: Any) -> None: + # -> "?" expression ":" assignment-expression + return None + + def _parse_assignment_expression(self, inTemplate: bool) -> ASTExpression: + # -> conditional-expression + # | logical-or-expression assignment-operator initializer-clause + # | throw-expression + # TODO: parse throw-expression: "throw" assignment-expression [opt] + # if not a throw expression, then: + # -> conditional-expression -> + # logical-or-expression + # | logical-or-expression "?" expression ":" assignment-expression + # | logical-or-expression assignment-operator initializer-clause + exprs = [] # type: List[Union[ASTExpression, ASTBracedInitList]] + ops = [] + orExpr = self._parse_logical_or_expression(inTemplate=inTemplate) + exprs.append(orExpr) + # TODO: handle ternary with _parse_conditional_expression_tail + while True: + oneMore = False + self.skip_ws() + for op in _expression_assignment_ops: + if op[0] in 'anox': + if not self.skip_word(op): + continue + else: + if not self.skip_string(op): + continue + expr = self._parse_initializer_clause() + exprs.append(expr) + ops.append(op) + oneMore = True + if not oneMore: + break + if len(ops) == 0: + return orExpr + else: + return ASTAssignmentExpr(exprs, ops) + + def _parse_constant_expression(self, inTemplate: bool) -> ASTExpression: + # -> conditional-expression + orExpr = self._parse_logical_or_expression(inTemplate=inTemplate) + # TODO: use _parse_conditional_expression_tail + return orExpr + + def _parse_expression(self) -> ASTExpression: + # -> assignment-expression + # | expression "," assignment-expresion + exprs = [self._parse_assignment_expression(inTemplate=False)] + while True: + self.skip_ws() + if not self.skip_string(','): + break + exprs.append(self._parse_assignment_expression(inTemplate=False)) + if len(exprs) == 1: + return exprs[0] + else: + return ASTCommaExpr(exprs) + + def _parse_expression_fallback(self, end: List[str], + parser: Callable[[], ASTExpression], + allow: bool = True) -> ASTExpression: + # Stupidly "parse" an expression. + # 'end' should be a list of characters which ends the expression. + + # first try to use the provided parser + prevPos = self.pos + try: + return parser() + except DefinitionError as e: + # some places (e.g., template parameters) we really don't want to use fallback, + # and for testing we may want to globally disable it + if not allow or not self.allowFallbackExpressionParsing: + raise + self.warn("Parsing of expression failed. Using fallback parser." + " Error was:\n%s" % e) + self.pos = prevPos + # and then the fallback scanning + assert end is not None + self.skip_ws() + startPos = self.pos + if self.match(_string_re): + value = self.matched_text + else: + # TODO: add handling of more bracket-like things, and quote handling + brackets = {'(': ')', '{': '}', '[': ']', '<': '>'} + symbols = [] # type: List[str] + while not self.eof: + if (len(symbols) == 0 and self.current_char in end): + break + if self.current_char in brackets.keys(): + symbols.append(brackets[self.current_char]) + elif len(symbols) > 0 and self.current_char == symbols[-1]: + symbols.pop() + self.pos += 1 + if len(end) > 0 and self.eof: + self.fail("Could not find end of expression starting at %d." + % startPos) + value = self.definition[startPos:self.pos].strip() + return ASTFallbackExpr(value.strip()) + + # ========================================================================== + + def _parse_operator(self) -> ASTOperator: + self.skip_ws() + # adapted from the old code + # yay, a regular operator definition + if self.match(_operator_re): + return ASTOperatorBuildIn(self.matched_text) + + # new/delete operator? + for op in 'new', 'delete': + if not self.skip_word(op): + continue + self.skip_ws() + if self.skip_string('['): + self.skip_ws() + if not self.skip_string(']'): + self.fail('Expected "]" after "operator ' + op + '["') + op += '[]' + return ASTOperatorBuildIn(op) + + # user-defined literal? + if self.skip_string('""'): + self.skip_ws() + if not self.match(identifier_re): + self.fail("Expected user-defined literal suffix.") + identifier = ASTIdentifier(self.matched_text) + return ASTOperatorLiteral(identifier) + + # oh well, looks like a cast operator definition. + # In that case, eat another type. + type = self._parse_type(named=False, outer="operatorCast") + return ASTOperatorType(type) + + def _parse_template_argument_list(self) -> ASTTemplateArgs: + # template-argument-list: (but we include the < and > here + # template-argument ...[opt] + # template-argument-list, template-argument ...[opt] + # template-argument: + # constant-expression + # type-id + # id-expression + self.skip_ws() + if not self.skip_string_and_ws('<'): + return None + if self.skip_string('>'): + return ASTTemplateArgs([], False) + prevErrors = [] + templateArgs = [] # type: List[Union[ASTType, ASTTemplateArgConstant]] + packExpansion = False + while 1: + pos = self.pos + parsedComma = False + parsedEnd = False + try: + type = self._parse_type(named=False) + self.skip_ws() + if self.skip_string_and_ws('...'): + packExpansion = True + parsedEnd = True + if not self.skip_string('>'): + self.fail('Expected ">" after "..." in template argument list.') + elif self.skip_string('>'): + parsedEnd = True + elif self.skip_string(','): + parsedComma = True + else: + self.fail('Expected "...>", ">" or "," in template argument list.') + templateArgs.append(type) + except DefinitionError as e: + prevErrors.append((e, "If type argument")) + self.pos = pos + try: + value = self._parse_constant_expression(inTemplate=True) + self.skip_ws() + if self.skip_string_and_ws('...'): + packExpansion = True + parsedEnd = True + if not self.skip_string('>'): + self.fail('Expected ">" after "..." in template argument list.') + elif self.skip_string('>'): + parsedEnd = True + elif self.skip_string(','): + parsedComma = True + else: + self.fail('Expected "...>", ">" or "," in template argument list.') + templateArgs.append(ASTTemplateArgConstant(value)) + except DefinitionError as e: + self.pos = pos + prevErrors.append((e, "If non-type argument")) + header = "Error in parsing template argument list." + raise self._make_multi_error(prevErrors, header) + if parsedEnd: + assert not parsedComma + break + else: + assert not packExpansion + return ASTTemplateArgs(templateArgs, packExpansion) + + def _parse_nested_name(self, memberPointer: bool = False) -> ASTNestedName: + names = [] # type: List[ASTNestedNameElement] + templates = [] # type: List[bool] + + self.skip_ws() + rooted = False + if self.skip_string('::'): + rooted = True + while 1: + self.skip_ws() + if len(names) > 0: + template = self.skip_word_and_ws('template') + else: + template = False + templates.append(template) + identOrOp = None # type: Union[ASTIdentifier, ASTOperator] + if self.skip_word_and_ws('operator'): + identOrOp = self._parse_operator() + else: + if not self.match(identifier_re): + if memberPointer and len(names) > 0: + templates.pop() + break + self.fail("Expected identifier in nested name.") + identifier = self.matched_text + # make sure there isn't a keyword + if identifier in _keywords: + self.fail("Expected identifier in nested name, " + "got keyword: %s" % identifier) + identOrOp = ASTIdentifier(identifier) + # try greedily to get template arguments, + # but otherwise a < might be because we are in an expression + pos = self.pos + try: + templateArgs = self._parse_template_argument_list() + except DefinitionError as ex: + self.pos = pos + templateArgs = None + self.otherErrors.append(ex) + names.append(ASTNestedNameElement(identOrOp, templateArgs)) + + self.skip_ws() + if not self.skip_string('::'): + if memberPointer: + self.fail("Expected '::' in pointer to member (function).") + break + return ASTNestedName(names, templates, rooted) + + # ========================================================================== + + def _parse_trailing_type_spec(self) -> ASTTrailingTypeSpec: + # fundemental types + self.skip_ws() + for t in self._simple_fundemental_types: + if self.skip_word(t): + return ASTTrailingTypeSpecFundamental(t) + + # TODO: this could/should be more strict + elements = [] + if self.skip_word_and_ws('signed'): + elements.append('signed') + elif self.skip_word_and_ws('unsigned'): + elements.append('unsigned') + while 1: + if self.skip_word_and_ws('short'): + elements.append('short') + elif self.skip_word_and_ws('long'): + elements.append('long') + else: + break + if self.skip_word_and_ws('char'): + elements.append('char') + elif self.skip_word_and_ws('int'): + elements.append('int') + elif self.skip_word_and_ws('double'): + elements.append('double') + if len(elements) > 0: + return ASTTrailingTypeSpecFundamental(' '.join(elements)) + + # decltype + self.skip_ws() + if self.skip_word_and_ws('decltype'): + if not self.skip_string_and_ws('('): + self.fail("Expected '(' after 'decltype'.") + if self.skip_word_and_ws('auto'): + if not self.skip_string(')'): + self.fail("Expected ')' after 'decltype(auto'.") + return ASTTrailingTypeSpecDecltypeAuto() + expr = self._parse_expression() + self.skip_ws() + if not self.skip_string(')'): + self.fail("Expected ')' after 'decltype(<expr>'.") + return ASTTrailingTypeSpecDecltype(expr) + + # prefixed + prefix = None + self.skip_ws() + for k in self._prefix_keys: + if self.skip_word_and_ws(k): + prefix = k + break + nestedName = self._parse_nested_name() + return ASTTrailingTypeSpecName(prefix, nestedName) + + def _parse_parameters_and_qualifiers(self, paramMode: str) -> ASTParametersQualifiers: + if paramMode == 'new': + return None + self.skip_ws() + if not self.skip_string('('): + if paramMode == 'function': + self.fail('Expecting "(" in parameters-and-qualifiers.') + else: + return None + args = [] + self.skip_ws() + if not self.skip_string(')'): + while 1: + self.skip_ws() + if self.skip_string('...'): + args.append(ASTFunctionParameter(None, True)) + self.skip_ws() + if not self.skip_string(')'): + self.fail('Expected ")" after "..." in ' + 'parameters-and-qualifiers.') + break + # note: it seems that function arguments can always be named, + # even in function pointers and similar. + arg = self._parse_type_with_init(outer=None, named='single') + # TODO: parse default parameters # TODO: didn't we just do that? + args.append(ASTFunctionParameter(arg)) + + self.skip_ws() + if self.skip_string(','): + continue + elif self.skip_string(')'): + break + else: + self.fail( + 'Expecting "," or ")" in parameters-and-qualifiers, ' + 'got "%s".' % self.current_char) + + # TODO: why did we have this bail-out? + # does it hurt to parse the extra stuff? + # it's needed for pointer to member functions + if paramMode != 'function' and False: + return ASTParametersQualifiers( + args, None, None, None, None, None, None, None) + + self.skip_ws() + const = self.skip_word_and_ws('const') + volatile = self.skip_word_and_ws('volatile') + if not const: # the can be permuted + const = self.skip_word_and_ws('const') + + refQual = None + if self.skip_string('&&'): + refQual = '&&' + if not refQual and self.skip_string('&'): + refQual = '&' + + exceptionSpec = None + override = None + final = None + initializer = None + self.skip_ws() + if self.skip_string('noexcept'): + exceptionSpec = 'noexcept' + self.skip_ws() + if self.skip_string('('): + self.fail('Parameterised "noexcept" not yet implemented.') + + self.skip_ws() + override = self.skip_word_and_ws('override') + final = self.skip_word_and_ws('final') + if not override: + override = self.skip_word_and_ws( + 'override') # they can be permuted + + self.skip_ws() + if self.skip_string('='): + self.skip_ws() + valid = ('0', 'delete', 'default') + for w in valid: + if self.skip_word_and_ws(w): + initializer = w + break + if not initializer: + self.fail( + 'Expected "%s" in initializer-specifier.' + % '" or "'.join(valid)) + + return ASTParametersQualifiers( + args, volatile, const, refQual, exceptionSpec, override, final, + initializer) + + def _parse_decl_specs_simple(self, outer: str, typed: bool) -> ASTDeclSpecsSimple: + """Just parse the simple ones.""" + storage = None + threadLocal = None + inline = None + virtual = None + explicit = None + constexpr = None + volatile = None + const = None + friend = None + attrs = [] + while 1: # accept any permutation of a subset of some decl-specs + self.skip_ws() + if not storage: + if outer in ('member', 'function'): + if self.skip_word('static'): + storage = 'static' + continue + if self.skip_word('extern'): + storage = 'extern' + continue + if outer == 'member': + if self.skip_word('mutable'): + storage = 'mutable' + continue + if self.skip_word('register'): + storage = 'register' + continue + if not threadLocal and outer == 'member': + threadLocal = self.skip_word('thread_local') + if threadLocal: + continue + + if outer == 'function': + # function-specifiers + if not inline: + inline = self.skip_word('inline') + if inline: + continue + if not friend: + friend = self.skip_word('friend') + if friend: + continue + if not virtual: + virtual = self.skip_word('virtual') + if virtual: + continue + if not explicit: + explicit = self.skip_word('explicit') + if explicit: + continue + + if not constexpr and outer in ('member', 'function'): + constexpr = self.skip_word("constexpr") + if constexpr: + continue + if not volatile and typed: + volatile = self.skip_word('volatile') + if volatile: + continue + if not const and typed: + const = self.skip_word('const') + if const: + continue + attr = self._parse_attribute() + if attr: + attrs.append(attr) + continue + break + return ASTDeclSpecsSimple(storage, threadLocal, inline, virtual, + explicit, constexpr, volatile, const, + friend, attrs) + + def _parse_decl_specs(self, outer: str, typed: bool = True) -> ASTDeclSpecs: + if outer: + if outer not in ('type', 'member', 'function', 'templateParam'): + raise Exception('Internal error, unknown outer "%s".' % outer) + """ + storage-class-specifier function-specifier "constexpr" + "volatile" "const" trailing-type-specifier + + storage-class-specifier -> + "static" (only for member_object and function_object) + | "register" + + function-specifier -> "inline" | "virtual" | "explicit" (only for + function_object) + + "constexpr" (only for member_object and function_object) + """ + leftSpecs = self._parse_decl_specs_simple(outer, typed) + rightSpecs = None + + if typed: + trailing = self._parse_trailing_type_spec() + rightSpecs = self._parse_decl_specs_simple(outer, typed) + else: + trailing = None + return ASTDeclSpecs(outer, leftSpecs, rightSpecs, trailing) + + def _parse_declarator_name_suffix( + self, named: Union[bool, str], paramMode: str, typed: bool + ) -> Union[ASTDeclaratorNameParamQual, ASTDeclaratorNameBitField]: + # now we should parse the name, and then suffixes + if named == 'maybe': + pos = self.pos + try: + declId = self._parse_nested_name() + except DefinitionError: + self.pos = pos + declId = None + elif named == 'single': + if self.match(identifier_re): + identifier = ASTIdentifier(self.matched_text) + nne = ASTNestedNameElement(identifier, None) + declId = ASTNestedName([nne], [False], rooted=False) + # if it's a member pointer, we may have '::', which should be an error + self.skip_ws() + if self.current_char == ':': + self.fail("Unexpected ':' after identifier.") + else: + declId = None + elif named: + declId = self._parse_nested_name() + else: + declId = None + arrayOps = [] + while 1: + self.skip_ws() + if typed and self.skip_string('['): + self.skip_ws() + if self.skip_string(']'): + arrayOps.append(ASTArray(None)) + continue + + def parser() -> ASTExpression: + return self._parse_expression() + value = self._parse_expression_fallback([']'], parser) + if not self.skip_string(']'): + self.fail("Expected ']' in end of array operator.") + arrayOps.append(ASTArray(value)) + continue + else: + break + paramQual = self._parse_parameters_and_qualifiers(paramMode) + if paramQual is None and len(arrayOps) == 0: + # perhaps a bit-field + if named and paramMode == 'type' and typed: + self.skip_ws() + if self.skip_string(':'): + size = self._parse_constant_expression(inTemplate=False) + return ASTDeclaratorNameBitField(declId=declId, size=size) + return ASTDeclaratorNameParamQual(declId=declId, arrayOps=arrayOps, + paramQual=paramQual) + + def _parse_declarator(self, named: Union[bool, str], paramMode: str, + typed: bool = True + ) -> ASTDeclarator: + # 'typed' here means 'parse return type stuff' + if paramMode not in ('type', 'function', 'operatorCast', 'new'): + raise Exception( + "Internal error, unknown paramMode '%s'." % paramMode) + prevErrors = [] + self.skip_ws() + if typed and self.skip_string('*'): + self.skip_ws() + volatile = False + const = False + attrs = [] + while 1: + if not volatile: + volatile = self.skip_word_and_ws('volatile') + if volatile: + continue + if not const: + const = self.skip_word_and_ws('const') + if const: + continue + attr = self._parse_attribute() + if attr is not None: + attrs.append(attr) + continue + break + next = self._parse_declarator(named, paramMode, typed) + return ASTDeclaratorPtr(next=next, volatile=volatile, const=const, attrs=attrs) + # TODO: shouldn't we parse an R-value ref here first? + if typed and self.skip_string("&"): + attrs = [] + while 1: + attr = self._parse_attribute() + if attr is None: + break + attrs.append(attr) + next = self._parse_declarator(named, paramMode, typed) + return ASTDeclaratorRef(next=next, attrs=attrs) + if typed and self.skip_string("..."): + next = self._parse_declarator(named, paramMode, False) + return ASTDeclaratorParamPack(next=next) + if typed and self.current_char == '(': # note: peeking, not skipping + if paramMode == "operatorCast": + # TODO: we should be able to parse cast operators which return + # function pointers. For now, just hax it and ignore. + return ASTDeclaratorNameParamQual(declId=None, arrayOps=[], + paramQual=None) + # maybe this is the beginning of params and quals,try that first, + # otherwise assume it's noptr->declarator > ( ptr-declarator ) + pos = self.pos + try: + # assume this is params and quals + res = self._parse_declarator_name_suffix(named, paramMode, + typed) + return res + except DefinitionError as exParamQual: + prevErrors.append((exParamQual, + "If declarator-id with parameters-and-qualifiers")) + self.pos = pos + try: + assert self.current_char == '(' + self.skip_string('(') + # TODO: hmm, if there is a name, it must be in inner, right? + # TODO: hmm, if there must be parameters, they must be + # inside, right? + inner = self._parse_declarator(named, paramMode, typed) + if not self.skip_string(')'): + self.fail("Expected ')' in \"( ptr-declarator )\"") + next = self._parse_declarator(named=False, + paramMode="type", + typed=typed) + return ASTDeclaratorParen(inner=inner, next=next) + except DefinitionError as exNoPtrParen: + self.pos = pos + prevErrors.append((exNoPtrParen, "If parenthesis in noptr-declarator")) + header = "Error in declarator" + raise self._make_multi_error(prevErrors, header) + if typed: # pointer to member + pos = self.pos + try: + name = self._parse_nested_name(memberPointer=True) + self.skip_ws() + if not self.skip_string('*'): + self.fail("Expected '*' in pointer to member declarator.") + self.skip_ws() + except DefinitionError as e: + self.pos = pos + prevErrors.append((e, "If pointer to member declarator")) + else: + volatile = False + const = False + while 1: + if not volatile: + volatile = self.skip_word_and_ws('volatile') + if volatile: + continue + if not const: + const = self.skip_word_and_ws('const') + if const: + continue + break + next = self._parse_declarator(named, paramMode, typed) + return ASTDeclaratorMemPtr(name, const, volatile, next=next) + pos = self.pos + try: + res = self._parse_declarator_name_suffix(named, paramMode, typed) + # this is a heuristic for error messages, for when there is a < after a + # nested name, but it was not a successful template argument list + if self.current_char == '<': + self.otherErrors.append(self._make_multi_error(prevErrors, "")) + return res + except DefinitionError as e: + self.pos = pos + prevErrors.append((e, "If declarator-id")) + header = "Error in declarator or parameters-and-qualifiers" + raise self._make_multi_error(prevErrors, header) + + def _parse_initializer(self, outer: str = None, allowFallback: bool = True + ) -> ASTInitializer: + # initializer # global vars + # -> brace-or-equal-initializer + # | '(' expression-list ')' + # + # brace-or-equal-initializer # member vars + # -> '=' initializer-clause + # | braced-init-list + # + # initializer-clause # function params, non-type template params (with '=' in front) + # -> assignment-expression + # | braced-init-list + # + # we don't distinguish between global and member vars, so disallow paren: + # + # -> braced-init-list # var only + # | '=' assignment-expression + # | '=' braced-init-list + self.skip_ws() + if outer == 'member': + bracedInit = self._parse_braced_init_list() + if bracedInit is not None: + return ASTInitializer(bracedInit, hasAssign=False) + + if not self.skip_string('='): + return None + + bracedInit = self._parse_braced_init_list() + if bracedInit is not None: + return ASTInitializer(bracedInit) + + if outer == 'member': + fallbackEnd = [] # type: List[str] + elif outer == 'templateParam': + fallbackEnd = [',', '>'] + elif outer is None: # function parameter + fallbackEnd = [',', ')'] + else: + self.fail("Internal error, initializer for outer '%s' not " + "implemented." % outer) + + inTemplate = outer == 'templateParam' + + def parser() -> ASTExpression: + return self._parse_assignment_expression(inTemplate=inTemplate) + value = self._parse_expression_fallback(fallbackEnd, parser, allow=allowFallback) + return ASTInitializer(value) + + def _parse_type(self, named: Union[bool, str], outer: str = None) -> ASTType: + """ + named=False|'maybe'|True: 'maybe' is e.g., for function objects which + doesn't need to name the arguments + + outer == operatorCast: annoying case, we should not take the params + """ + if outer: # always named + if outer not in ('type', 'member', 'function', + 'operatorCast', 'templateParam'): + raise Exception('Internal error, unknown outer "%s".' % outer) + if outer != 'operatorCast': + assert named + if outer in ('type', 'function'): + # We allow type objects to just be a name. + # Some functions don't have normal return types: constructors, + # destrutors, cast operators + prevErrors = [] + startPos = self.pos + # first try without the type + try: + declSpecs = self._parse_decl_specs(outer=outer, typed=False) + decl = self._parse_declarator(named=True, paramMode=outer, + typed=False) + self.assert_end() + except DefinitionError as exUntyped: + if outer == 'type': + desc = "If just a name" + elif outer == 'function': + desc = "If the function has no return type" + else: + assert False + prevErrors.append((exUntyped, desc)) + self.pos = startPos + try: + declSpecs = self._parse_decl_specs(outer=outer) + decl = self._parse_declarator(named=True, paramMode=outer) + except DefinitionError as exTyped: + self.pos = startPos + if outer == 'type': + desc = "If typedef-like declaration" + elif outer == 'function': + desc = "If the function has a return type" + else: + assert False + prevErrors.append((exTyped, desc)) + # Retain the else branch for easier debugging. + # TODO: it would be nice to save the previous stacktrace + # and output it here. + if True: + if outer == 'type': + header = "Type must be either just a name or a " + header += "typedef-like declaration." + elif outer == 'function': + header = "Error when parsing function declaration." + else: + assert False + raise self._make_multi_error(prevErrors, header) + else: + # For testing purposes. + # do it again to get the proper traceback (how do you + # reliably save a traceback when an exception is + # constructed?) + self.pos = startPos + typed = True + declSpecs = self._parse_decl_specs(outer=outer, typed=typed) + decl = self._parse_declarator(named=True, paramMode=outer, + typed=typed) + else: + paramMode = 'type' + if outer == 'member': # i.e., member + named = True + elif outer == 'operatorCast': + paramMode = 'operatorCast' + outer = None + elif outer == 'templateParam': + named = 'single' + declSpecs = self._parse_decl_specs(outer=outer) + decl = self._parse_declarator(named=named, paramMode=paramMode) + return ASTType(declSpecs, decl) + + def _parse_type_with_init( + self, named: Union[bool, str], + outer: str) -> Union[ASTTypeWithInit, ASTTemplateParamConstrainedTypeWithInit]: + if outer: + assert outer in ('type', 'member', 'function', 'templateParam') + type = self._parse_type(outer=outer, named=named) + if outer != 'templateParam': + init = self._parse_initializer(outer=outer) + return ASTTypeWithInit(type, init) + # it could also be a constrained type parameter, e.g., C T = int& + pos = self.pos + eExpr = None + try: + init = self._parse_initializer(outer=outer, allowFallback=False) + # note: init may be None if there is no = + if init is None: + return ASTTypeWithInit(type, None) + # we parsed an expression, so we must have a , or a >, + # otherwise the expression didn't get everything + self.skip_ws() + if self.current_char != ',' and self.current_char != '>': + # pretend it didn't happen + self.pos = pos + init = None + else: + # we assume that it was indeed an expression + return ASTTypeWithInit(type, init) + except DefinitionError as e: + self.pos = pos + eExpr = e + if not self.skip_string("="): + return ASTTypeWithInit(type, None) + try: + typeInit = self._parse_type(named=False, outer=None) + return ASTTemplateParamConstrainedTypeWithInit(type, typeInit) + except DefinitionError as eType: + if eExpr is None: + raise eType + errs = [] + errs.append((eExpr, "If default template argument is an expression")) + errs.append((eType, "If default template argument is a type")) + msg = "Error in non-type template parameter" + msg += " or constrained template parameter." + raise self._make_multi_error(errs, msg) + + def _parse_type_using(self) -> ASTTypeUsing: + name = self._parse_nested_name() + self.skip_ws() + if not self.skip_string('='): + return ASTTypeUsing(name, None) + type = self._parse_type(False, None) + return ASTTypeUsing(name, type) + + def _parse_concept(self) -> ASTConcept: + nestedName = self._parse_nested_name() + self.skip_ws() + initializer = self._parse_initializer('member') + return ASTConcept(nestedName, initializer) + + def _parse_class(self) -> ASTClass: + name = self._parse_nested_name() + self.skip_ws() + final = self.skip_word_and_ws('final') + bases = [] + self.skip_ws() + if self.skip_string(':'): + while 1: + self.skip_ws() + visibility = None + virtual = False + pack = False + if self.skip_word_and_ws('virtual'): + virtual = True + if self.match(_visibility_re): + visibility = self.matched_text + self.skip_ws() + if not virtual and self.skip_word_and_ws('virtual'): + virtual = True + baseName = self._parse_nested_name() + self.skip_ws() + pack = self.skip_string('...') + bases.append(ASTBaseClass(baseName, visibility, virtual, pack)) + self.skip_ws() + if self.skip_string(','): + continue + else: + break + return ASTClass(name, final, bases) + + def _parse_union(self) -> ASTUnion: + name = self._parse_nested_name() + return ASTUnion(name) + + def _parse_enum(self) -> ASTEnum: + scoped = None # is set by CPPEnumObject + self.skip_ws() + name = self._parse_nested_name() + self.skip_ws() + underlyingType = None + if self.skip_string(':'): + underlyingType = self._parse_type(named=False) + return ASTEnum(name, scoped, underlyingType) + + def _parse_enumerator(self) -> ASTEnumerator: + name = self._parse_nested_name() + self.skip_ws() + init = None + if self.skip_string('='): + self.skip_ws() + + def parser() -> ASTExpression: + return self._parse_constant_expression(inTemplate=False) + initVal = self._parse_expression_fallback([], parser) + init = ASTInitializer(initVal) + return ASTEnumerator(name, init) + + # ========================================================================== + + def _parse_template_parameter_list(self) -> ASTTemplateParams: + # only: '<' parameter-list '>' + # we assume that 'template' has just been parsed + templateParams = [] # type: List[ASTTemplateParam] + self.skip_ws() + if not self.skip_string("<"): + self.fail("Expected '<' after 'template'") + prevErrors = [] + while 1: + self.skip_ws() + if self.skip_word('template'): + # declare a tenplate template parameter + nestedParams = self._parse_template_parameter_list() + else: + nestedParams = None + self.skip_ws() + key = None + if self.skip_word_and_ws('typename'): + key = 'typename' + elif self.skip_word_and_ws('class'): + key = 'class' + elif nestedParams: + self.fail("Expected 'typename' or 'class' after " + "template template parameter list.") + if key: + # declare a type or template type parameter + self.skip_ws() + parameterPack = self.skip_string('...') + self.skip_ws() + if self.match(identifier_re): + identifier = ASTIdentifier(self.matched_text) + else: + identifier = None + self.skip_ws() + if not parameterPack and self.skip_string('='): + default = self._parse_type(named=False, outer=None) + else: + default = None + data = ASTTemplateKeyParamPackIdDefault(key, identifier, + parameterPack, default) + if nestedParams: + # template type + templateParams.append( + ASTTemplateParamTemplateType(nestedParams, data)) + else: + # type + templateParams.append(ASTTemplateParamType(data)) + else: + # declare a non-type parameter, or constrained type parameter + pos = self.pos + try: + param = self._parse_type_with_init('maybe', 'templateParam') + templateParams.append(ASTTemplateParamNonType(param)) + except DefinitionError as e: + msg = "If non-type template parameter or constrained template parameter" + prevErrors.append((e, msg)) + self.pos = pos + self.skip_ws() + if self.skip_string('>'): + return ASTTemplateParams(templateParams) + elif self.skip_string(','): + prevErrors = [] + continue + else: + header = "Error in template parameter list." + try: + self.fail('Expected "=", ",", or ">".') + except DefinitionError as e: + prevErrors.append((e, "")) + raise self._make_multi_error(prevErrors, header) + + def _parse_template_introduction(self) -> ASTTemplateIntroduction: + pos = self.pos + try: + concept = self._parse_nested_name() + except Exception: + self.pos = pos + return None + self.skip_ws() + if not self.skip_string('{'): + self.pos = pos + return None + + # for sure it must be a template introduction now + params = [] + while 1: + self.skip_ws() + parameterPack = self.skip_string('...') + self.skip_ws() + if not self.match(identifier_re): + self.fail("Expected identifier in template introduction list.") + txt_identifier = self.matched_text + # make sure there isn't a keyword + if txt_identifier in _keywords: + self.fail("Expected identifier in template introduction list, " + "got keyword: %s" % txt_identifier) + identifier = ASTIdentifier(txt_identifier) + params.append(ASTTemplateIntroductionParameter(identifier, parameterPack)) + + self.skip_ws() + if self.skip_string('}'): + break + elif self.skip_string(','): + continue + else: + self.fail("Error in template introduction list. " + 'Expected ",", or "}".') + return ASTTemplateIntroduction(concept, params) + + def _parse_template_declaration_prefix(self, objectType: str + ) -> ASTTemplateDeclarationPrefix: + templates = [] # type: List[Union[ASTTemplateParams, ASTTemplateIntroduction]] + while 1: + self.skip_ws() + # the saved position is only used to provide a better error message + params = None # type: Union[ASTTemplateParams, ASTTemplateIntroduction] + pos = self.pos + if self.skip_word("template"): + try: + params = self._parse_template_parameter_list() + except DefinitionError as e: + if objectType == 'member' and len(templates) == 0: + return ASTTemplateDeclarationPrefix(None) + else: + raise e + else: + params = self._parse_template_introduction() + if not params: + break + if objectType == 'concept' and len(templates) > 0: + self.pos = pos + self.fail("More than 1 template parameter list for concept.") + templates.append(params) + if len(templates) == 0 and objectType == 'concept': + self.fail('Missing template parameter list for concept.') + if len(templates) == 0: + return None + else: + return ASTTemplateDeclarationPrefix(templates) + + def _check_template_consistency(self, nestedName: ASTNestedName, + templatePrefix: ASTTemplateDeclarationPrefix, + fullSpecShorthand: bool, isMember: bool = False + ) -> ASTTemplateDeclarationPrefix: + numArgs = nestedName.num_templates() + isMemberInstantiation = False + if not templatePrefix: + numParams = 0 + else: + if isMember and templatePrefix.templates is None: + numParams = 0 + isMemberInstantiation = True + else: + numParams = len(templatePrefix.templates) + if numArgs + 1 < numParams: + self.fail("Too few template argument lists comapred to parameter" + " lists. Argument lists: %d, Parameter lists: %d." + % (numArgs, numParams)) + if numArgs > numParams: + numExtra = numArgs - numParams + if not fullSpecShorthand and not isMemberInstantiation: + msg = "Too many template argument lists compared to parameter" \ + " lists. Argument lists: %d, Parameter lists: %d," \ + " Extra empty parameters lists prepended: %d." \ + % (numArgs, numParams, numExtra) + msg += " Declaration:\n\t" + if templatePrefix: + msg += "%s\n\t" % templatePrefix + msg += str(nestedName) + self.warn(msg) + + newTemplates = [] # type: List[Union[ASTTemplateParams, ASTTemplateIntroduction]] + for i in range(numExtra): + newTemplates.append(ASTTemplateParams([])) + if templatePrefix and not isMemberInstantiation: + newTemplates.extend(templatePrefix.templates) + templatePrefix = ASTTemplateDeclarationPrefix(newTemplates) + return templatePrefix + + def parse_declaration(self, objectType: str, directiveType: str) -> ASTDeclaration: + if objectType not in ('class', 'union', 'function', 'member', 'type', + 'concept', 'enum', 'enumerator'): + raise Exception('Internal error, unknown objectType "%s".' % objectType) + if directiveType not in ('class', 'struct', 'union', 'function', 'member', 'var', + 'type', 'concept', + 'enum', 'enum-struct', 'enum-class', 'enumerator'): + raise Exception('Internal error, unknown directiveType "%s".' % directiveType) + visibility = None + templatePrefix = None + declaration = None # type: Any + + self.skip_ws() + if self.match(_visibility_re): + visibility = self.matched_text + + if objectType in ('type', 'concept', 'member', 'function', 'class'): + templatePrefix = self._parse_template_declaration_prefix(objectType) + + if objectType == 'type': + prevErrors = [] + pos = self.pos + try: + if not templatePrefix: + declaration = self._parse_type(named=True, outer='type') + except DefinitionError as e: + prevErrors.append((e, "If typedef-like declaration")) + self.pos = pos + pos = self.pos + try: + if not declaration: + declaration = self._parse_type_using() + except DefinitionError as e: + self.pos = pos + prevErrors.append((e, "If type alias or template alias")) + header = "Error in type declaration." + raise self._make_multi_error(prevErrors, header) + elif objectType == 'concept': + declaration = self._parse_concept() + elif objectType == 'member': + declaration = self._parse_type_with_init(named=True, outer='member') + elif objectType == 'function': + declaration = self._parse_type(named=True, outer='function') + elif objectType == 'class': + declaration = self._parse_class() + elif objectType == 'union': + declaration = self._parse_union() + elif objectType == 'enum': + declaration = self._parse_enum() + elif objectType == 'enumerator': + declaration = self._parse_enumerator() + else: + assert False + templatePrefix = self._check_template_consistency(declaration.name, + templatePrefix, + fullSpecShorthand=False, + isMember=objectType == 'member') + return ASTDeclaration(objectType, directiveType, visibility, + templatePrefix, declaration) + + def parse_namespace_object(self) -> ASTNamespace: + templatePrefix = self._parse_template_declaration_prefix(objectType="namespace") + name = self._parse_nested_name() + templatePrefix = self._check_template_consistency(name, templatePrefix, + fullSpecShorthand=False) + res = ASTNamespace(name, templatePrefix) + res.objectType = 'namespace' # type: ignore + return res + + def parse_xref_object(self) -> Tuple[Union[ASTNamespace, ASTDeclaration], bool]: + pos = self.pos + try: + templatePrefix = self._parse_template_declaration_prefix(objectType="xref") + name = self._parse_nested_name() + # if there are '()' left, just skip them + self.skip_ws() + self.skip_string('()') + self.assert_end() + templatePrefix = self._check_template_consistency(name, templatePrefix, + fullSpecShorthand=True) + res1 = ASTNamespace(name, templatePrefix) + res1.objectType = 'xref' # type: ignore + return res1, True + except DefinitionError as e1: + try: + self.pos = pos + res2 = self.parse_declaration('function', 'function') + # if there are '()' left, just skip them + self.skip_ws() + self.skip_string('()') + self.assert_end() + return res2, False + except DefinitionError as e2: + errs = [] + errs.append((e1, "If shorthand ref")) + errs.append((e2, "If full function ref")) + msg = "Error in cross-reference." + raise self._make_multi_error(errs, msg) + + def parse_expression(self) -> Union[ASTExpression, ASTType]: + pos = self.pos + try: + expr = self._parse_expression() + self.skip_ws() + self.assert_end() + return expr + except DefinitionError as exExpr: + self.pos = pos + try: + typ = self._parse_type(False) + self.skip_ws() + self.assert_end() + return typ + except DefinitionError as exType: + header = "Error when parsing (type) expression." + errs = [] + errs.append((exExpr, "If expression")) + errs.append((exType, "If type")) + raise self._make_multi_error(errs, header) + + +def _make_phony_error_name() -> ASTNestedName: + nne = ASTNestedNameElement(ASTIdentifier("PhonyNameDueToError"), None) + return ASTNestedName([nne], [False], rooted=False) + + +class CPPObject(ObjectDescription): + """Description of a C++ language object.""" + + doc_field_types = [ + GroupedField('parameter', label=_('Parameters'), + names=('param', 'parameter', 'arg', 'argument'), + can_collapse=True), + GroupedField('template parameter', label=_('Template Parameters'), + names=('tparam', 'template parameter'), + can_collapse=True), + GroupedField('exceptions', label=_('Throws'), rolename='cpp:class', + names=('throws', 'throw', 'exception'), + can_collapse=True), + Field('returnvalue', label=_('Returns'), has_arg=False, + names=('returns', 'return')), + ] + + option_spec = dict(ObjectDescription.option_spec) + option_spec['tparam-line-spec'] = directives.flag + + def _add_enumerator_to_parent(self, ast: ASTDeclaration) -> None: + assert ast.objectType == 'enumerator' + # find the parent, if it exists && is an enum + # && it's unscoped, + # then add the name to the parent scope + symbol = ast.symbol + assert symbol + assert symbol.identOrOp is not None + assert symbol.templateParams is None + assert symbol.templateArgs is None + parentSymbol = symbol.parent + assert parentSymbol + if parentSymbol.parent is None: + # TODO: we could warn, but it is somewhat equivalent to unscoped + # enums, without the enum + return # no parent + parentDecl = parentSymbol.declaration + if parentDecl is None: + # the parent is not explicitly declared + # TODO: we could warn, but it could be a style to just assume + # enumerator parents to be scoped + return + if parentDecl.objectType != 'enum': + # TODO: maybe issue a warning, enumerators in non-enums is weird, + # but it is somewhat equivalent to unscoped enums, without the enum + return + if parentDecl.directiveType != 'enum': + return + + targetSymbol = parentSymbol.parent + s = targetSymbol.find_identifier(symbol.identOrOp, matchSelf=False, recurseInAnon=True, + searchInSiblings=False) + if s is not None: + # something is already declared with that name + return + declClone = symbol.declaration.clone() + declClone.enumeratorScopedSymbol = symbol + Symbol(parent=targetSymbol, identOrOp=symbol.identOrOp, + templateParams=None, templateArgs=None, + declaration=declClone, + docname=self.env.docname) + + def add_target_and_index(self, ast: ASTDeclaration, sig: str, + signode: TextElement) -> None: + # general note: name must be lstrip(':')'ed, to remove "::" + ids = [] + for i in range(1, _max_id + 1): + try: + id = ast.get_id(version=i) + ids.append(id) + except NoOldIdError: + assert i < _max_id + # let's keep the newest first + ids = list(reversed(ids)) + newestId = ids[0] + assert newestId # shouldn't be None + if not re.compile(r'^[a-zA-Z0-9_]*$').match(newestId): + logger.warning('Index id generation for C++ object "%s" failed, please ' + 'report as bug (id=%s).', ast, newestId, + location=self.get_source_info()) + + name = ast.symbol.get_full_nested_name().get_display_string().lstrip(':') + # Add index entry, but not if it's a declaration inside a concept + isInConcept = False + s = ast.symbol.parent + while s is not None: + decl = s.declaration + s = s.parent + if decl is None: + continue + if decl.objectType == 'concept': + isInConcept = True + break + if not isInConcept: + strippedName = name + for prefix in self.env.config.cpp_index_common_prefix: + if name.startswith(prefix): + strippedName = strippedName[len(prefix):] + break + indexText = self.get_index_text(strippedName) + self.indexnode['entries'].append(('single', indexText, newestId, '', None)) + + if newestId not in self.state.document.ids: + # if the name is not unique, the first one will win + names = self.env.domaindata['cpp']['names'] + if name not in names: + names[name] = ast.symbol.docname + # always add the newest id + assert newestId + signode['ids'].append(newestId) + # only add compatibility ids when there are no conflicts + for id in ids[1:]: + if not id: # is None when the element didn't exist in that version + continue + if id not in self.state.document.ids: + signode['ids'].append(id) + self.state.document.note_explicit_target(signode) + + @property + def object_type(self) -> str: + raise NotImplementedError() + + @property + def display_object_type(self) -> str: + return self.object_type + + def get_index_text(self, name: str) -> str: + return _('%s (C++ %s)') % (name, self.display_object_type) + + def parse_definition(self, parser: DefinitionParser) -> ASTDeclaration: + return parser.parse_declaration(self.object_type, self.objtype) + + def describe_signature(self, signode: desc_signature, + ast: ASTDeclaration, options: Dict) -> None: + ast.describe_signature(signode, 'lastIsName', self.env, options) + + def run(self) -> List[Node]: + env = self.state.document.settings.env # from ObjectDescription.run + if 'cpp:parent_symbol' not in env.temp_data: + root = env.domaindata['cpp']['root_symbol'] + env.temp_data['cpp:parent_symbol'] = root + env.ref_context['cpp:parent_key'] = root.get_lookup_key() + + # The lookup keys assume that no nested scopes exists inside overloaded functions. + # (see also #5191) + # Example: + # .. cpp:function:: void f(int) + # .. cpp:function:: void f(double) + # + # .. cpp:function:: void g() + # + # :cpp:any:`boom` + # + # So we disallow any signatures inside functions. + parentSymbol = env.temp_data['cpp:parent_symbol'] + parentDecl = parentSymbol.declaration + if parentDecl is not None and parentDecl.objectType == 'function': + logger.warning("C++ declarations inside functions are not supported." + + " Parent function is " + + str(parentSymbol.get_full_nested_name()), + location=self.get_source_info()) + name = _make_phony_error_name() + symbol = parentSymbol.add_name(name) + env.temp_data['cpp:last_symbol'] = symbol + return [] + # When multiple declarations are made in the same directive + # they need to know about each other to provide symbol lookup for function parameters. + # We use last_symbol to store the latest added declaration in a directive. + env.temp_data['cpp:last_symbol'] = None + return super().run() + + def handle_signature(self, sig: str, signode: desc_signature) -> ASTDeclaration: + parentSymbol = self.env.temp_data['cpp:parent_symbol'] + + parser = DefinitionParser(sig, location=signode, config=self.env.config) + try: + ast = self.parse_definition(parser) + parser.assert_end() + except DefinitionError as e: + logger.warning(e, location=signode) + # It is easier to assume some phony name than handling the error in + # the possibly inner declarations. + name = _make_phony_error_name() + symbol = parentSymbol.add_name(name) + self.env.temp_data['cpp:last_symbol'] = symbol + raise ValueError + + try: + symbol = parentSymbol.add_declaration(ast, docname=self.env.docname) + # append the new declaration to the sibling list + assert symbol.siblingAbove is None + assert symbol.siblingBelow is None + symbol.siblingAbove = self.env.temp_data['cpp:last_symbol'] + if symbol.siblingAbove is not None: + assert symbol.siblingAbove.siblingBelow is None + symbol.siblingAbove.siblingBelow = symbol + self.env.temp_data['cpp:last_symbol'] = symbol + except _DuplicateSymbolError as e: + # Assume we are actually in the old symbol, + # instead of the newly created duplicate. + self.env.temp_data['cpp:last_symbol'] = e.symbol + logger.warning("Duplicate declaration, %s", sig, location=signode) + + if ast.objectType == 'enumerator': + self._add_enumerator_to_parent(ast) + + # note: handle_signature may be called multiple time per directive, + # if it has multiple signatures, so don't mess with the original options. + options = dict(self.options) + options['tparam-line-spec'] = 'tparam-line-spec' in self.options + self.describe_signature(signode, ast, options) + return ast + + def before_content(self) -> None: + lastSymbol = self.env.temp_data['cpp:last_symbol'] # type: Symbol + assert lastSymbol + self.oldParentSymbol = self.env.temp_data['cpp:parent_symbol'] + self.oldParentKey = self.env.ref_context['cpp:parent_key'] # type: LookupKey + self.env.temp_data['cpp:parent_symbol'] = lastSymbol + self.env.ref_context['cpp:parent_key'] = lastSymbol.get_lookup_key() + + def after_content(self) -> None: + self.env.temp_data['cpp:parent_symbol'] = self.oldParentSymbol + self.env.ref_context['cpp:parent_key'] = self.oldParentKey + + +class CPPTypeObject(CPPObject): + object_type = 'type' + + +class CPPConceptObject(CPPObject): + object_type = 'concept' + + +class CPPMemberObject(CPPObject): + object_type = 'member' + + +class CPPFunctionObject(CPPObject): + object_type = 'function' + + +class CPPClassObject(CPPObject): + object_type = 'class' + + @property + def display_object_type(self) -> str: + # the distinction between class and struct is only cosmetic + assert self.objtype in ('class', 'struct') + return self.objtype + + +class CPPUnionObject(CPPObject): + object_type = 'union' + + +class CPPEnumObject(CPPObject): + object_type = 'enum' + + +class CPPEnumeratorObject(CPPObject): + object_type = 'enumerator' + + +class CPPNamespaceObject(SphinxDirective): + """ + This directive is just to tell Sphinx that we're documenting stuff in + namespace foo. + """ + + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + rootSymbol = self.env.domaindata['cpp']['root_symbol'] + if self.arguments[0].strip() in ('NULL', '0', 'nullptr'): + symbol = rootSymbol + stack = [] # type: List[Symbol] + else: + parser = DefinitionParser(self.arguments[0], + location=self.get_source_info(), + config=self.config) + try: + ast = parser.parse_namespace_object() + parser.assert_end() + except DefinitionError as e: + logger.warning(e, location=self.get_source_info()) + name = _make_phony_error_name() + ast = ASTNamespace(name, None) + symbol = rootSymbol.add_name(ast.nestedName, ast.templatePrefix) + stack = [symbol] + self.env.temp_data['cpp:parent_symbol'] = symbol + self.env.temp_data['cpp:namespace_stack'] = stack + self.env.ref_context['cpp:parent_key'] = symbol.get_lookup_key() + return [] + + +class CPPNamespacePushObject(SphinxDirective): + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + if self.arguments[0].strip() in ('NULL', '0', 'nullptr'): + return [] + parser = DefinitionParser(self.arguments[0], + location=self.get_source_info(), + config=self.config) + try: + ast = parser.parse_namespace_object() + parser.assert_end() + except DefinitionError as e: + logger.warning(e, location=self.get_source_info()) + name = _make_phony_error_name() + ast = ASTNamespace(name, None) + oldParent = self.env.temp_data.get('cpp:parent_symbol', None) + if not oldParent: + oldParent = self.env.domaindata['cpp']['root_symbol'] + symbol = oldParent.add_name(ast.nestedName, ast.templatePrefix) + stack = self.env.temp_data.get('cpp:namespace_stack', []) + stack.append(symbol) + self.env.temp_data['cpp:parent_symbol'] = symbol + self.env.temp_data['cpp:namespace_stack'] = stack + self.env.ref_context['cpp:parent_key'] = symbol.get_lookup_key() + return [] + + +class CPPNamespacePopObject(SphinxDirective): + has_content = False + required_arguments = 0 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + stack = self.env.temp_data.get('cpp:namespace_stack', None) + if not stack or len(stack) == 0: + logger.warning("C++ namespace pop on empty stack. Defaulting to gobal scope.", + location=self.get_source_info()) + stack = [] + else: + stack.pop() + if len(stack) > 0: + symbol = stack[-1] + else: + symbol = self.env.domaindata['cpp']['root_symbol'] + self.env.temp_data['cpp:parent_symbol'] = symbol + self.env.temp_data['cpp:namespace_stack'] = stack + self.env.ref_context['cpp:parent_key'] = symbol.get_lookup_key() + return [] + + +class AliasNode(nodes.Element): + def __init__(self, sig: str, env: "BuildEnvironment" = None, + parentKey: LookupKey = None) -> None: + super().__init__() + self.sig = sig + if env is not None: + if 'cpp:parent_symbol' not in env.temp_data: + root = env.domaindata['cpp']['root_symbol'] + env.temp_data['cpp:parent_symbol'] = root + self.parentKey = env.temp_data['cpp:parent_symbol'].get_lookup_key() + else: + assert parentKey is not None + self.parentKey = parentKey + + def copy(self: T) -> T: + return self.__class__(self.sig, env=None, parentKey=self.parentKey) # type: ignore + + +class AliasTransform(SphinxTransform): + default_priority = ReferencesResolver.default_priority - 1 + + def apply(self, **kwargs: Any) -> None: + for node in self.document.traverse(AliasNode): + sig = node.sig + parentKey = node.parentKey + try: + parser = DefinitionParser(sig, location=node, + config=self.env.config) + ast, isShorthand = parser.parse_xref_object() + parser.assert_end() + except DefinitionError as e: + logger.warning(e, location=node) + ast, isShorthand = None, None + + if ast is None: + # could not be parsed, so stop here + signode = addnodes.desc_signature(sig, '') + signode.clear() + signode += addnodes.desc_name(sig, sig) + node.replace_self(signode) + continue + + rootSymbol = self.env.domains['cpp'].data['root_symbol'] # type: Symbol + parentSymbol = rootSymbol.direct_lookup(parentKey) # type: Symbol + if not parentSymbol: + print("Target: ", sig) + print("ParentKey: ", parentKey) + print(rootSymbol.dump(1)) + assert parentSymbol # should be there + + symbols = [] # type: List[Symbol] + if isShorthand: + assert isinstance(ast, ASTNamespace) + ns = ast + name = ns.nestedName + if ns.templatePrefix: + templateDecls = ns.templatePrefix.templates + else: + templateDecls = [] + symbols, failReason = parentSymbol.find_name( + nestedName=name, + templateDecls=templateDecls, + typ='any', + templateShorthand=True, + matchSelf=True, recurseInAnon=True, + searchInSiblings=False) + if symbols is None: + symbols = [] + else: + assert isinstance(ast, ASTDeclaration) + decl = ast + name = decl.name + s = parentSymbol.find_declaration(decl, 'any', + templateShorthand=True, + matchSelf=True, recurseInAnon=True) + if s is not None: + symbols.append(s) + + symbols = [s for s in symbols if s.declaration is not None] + + if len(symbols) == 0: + signode = addnodes.desc_signature(sig, '') + node.append(signode) + signode.clear() + signode += addnodes.desc_name(sig, sig) + + logger.warning("Could not find C++ declaration for alias '%s'." % ast, + location=node) + node.replace_self(signode) + else: + nodes = [] + options = dict() + options['tparam-line-spec'] = False + for s in symbols: + signode = addnodes.desc_signature(sig, '') + nodes.append(signode) + s.declaration.describe_signature(signode, 'markName', self.env, options) + node.replace_self(nodes) + + +class CPPAliasObject(ObjectDescription): + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + """ + On purpose this doesn't call the ObjectDescription version, but is based on it. + Each alias signature may expand into multiple real signatures (an overload set). + The code is therefore based on the ObjectDescription version. + """ + if ':' in self.name: + self.domain, self.objtype = self.name.split(':', 1) + else: + self.domain, self.objtype = '', self.name + + node = addnodes.desc() + node.document = self.state.document + node['domain'] = self.domain + # 'desctype' is a backwards compatible attribute + node['objtype'] = node['desctype'] = self.objtype + node['noindex'] = True + + self.names = [] # type: List[str] + signatures = self.get_signatures() + for i, sig in enumerate(signatures): + node.append(AliasNode(sig, env=self.env)) + + contentnode = addnodes.desc_content() + node.append(contentnode) + self.before_content() + self.state.nested_parse(self.content, self.content_offset, contentnode) + self.env.temp_data['object'] = None + self.after_content() + return [node] + + +class CPPXRefRole(XRefRole): + def process_link(self, env: BuildEnvironment, refnode: Element, has_explicit_title: bool, + title: str, target: str) -> Tuple[str, str]: + refnode.attributes.update(env.ref_context) + + if not has_explicit_title: + # major hax: replace anon names via simple string manipulation. + # Can this actually fail? + title = anon_identifier_re.sub("[anonymous]", str(title)) + + if refnode['reftype'] == 'any': + # Assume the removal part of fix_parens for :any: refs. + # The addition part is done with the reference is resolved. + if not has_explicit_title and title.endswith('()'): + title = title[:-2] + if target.endswith('()'): + target = target[:-2] + # TODO: should this really be here? + if not has_explicit_title: + target = target.lstrip('~') # only has a meaning for the title + # if the first character is a tilde, don't display the module/class + # parts of the contents + if title[:1] == '~': + title = title[1:] + dcolon = title.rfind('::') + if dcolon != -1: + title = title[dcolon + 2:] + return title, target + + +class CPPExprRole(SphinxRole): + def __init__(self, asCode: bool) -> None: + super().__init__() + if asCode: + # render the expression as inline code + self.class_type = 'cpp-expr' + self.node_type = nodes.literal # type: Type[TextElement] + else: + # render the expression as inline text + self.class_type = 'cpp-texpr' + self.node_type = nodes.inline + + def run(self) -> Tuple[List[Node], List[system_message]]: + text = self.text.replace('\n', ' ') + parser = DefinitionParser(text, + location=self.get_source_info(), + config=self.config) + # attempt to mimic XRefRole classes, except that... + classes = ['xref', 'cpp', self.class_type] + try: + ast = parser.parse_expression() + except DefinitionError as ex: + logger.warning('Unparseable C++ expression: %r\n%s', text, ex, + location=self.get_source_info()) + # see below + return [self.node_type(text, text, classes=classes)], [] + parentSymbol = self.env.temp_data.get('cpp:parent_symbol', None) + if parentSymbol is None: + parentSymbol = self.env.domaindata['cpp']['root_symbol'] + # ...most if not all of these classes should really apply to the individual references, + # not the container node + signode = self.node_type(classes=classes) + ast.describe_signature(signode, 'markType', self.env, parentSymbol) + return [signode], [] + + +class CPPDomain(Domain): + """C++ language domain. + + There are two 'object type' attributes being used:: + + - Each object created from directives gets an assigned .objtype from ObjectDescription.run. + This is simply the directive name. + - Each declaration (see the distinction in the directives dict below) has a nested .ast of + type ASTDeclaration. That object has .objectType which corresponds to the keys in the + object_types dict below. They are the core different types of declarations in C++ that + one can document. + """ + name = 'cpp' + label = 'C++' + object_types = { + 'class': ObjType(_('class'), 'class', 'type', 'identifier'), + 'union': ObjType(_('union'), 'union', 'type', 'identifier'), + 'function': ObjType(_('function'), 'function', 'func', 'type', 'identifier'), + 'member': ObjType(_('member'), 'member', 'var'), + 'type': ObjType(_('type'), 'type', 'identifier'), + 'concept': ObjType(_('concept'), 'concept', 'identifier'), + 'enum': ObjType(_('enum'), 'enum', 'type', 'identifier'), + 'enumerator': ObjType(_('enumerator'), 'enumerator') + } + + directives = { + # declarations + 'class': CPPClassObject, + 'struct': CPPClassObject, + 'union': CPPUnionObject, + 'function': CPPFunctionObject, + 'member': CPPMemberObject, + 'var': CPPMemberObject, + 'type': CPPTypeObject, + 'concept': CPPConceptObject, + 'enum': CPPEnumObject, + 'enum-struct': CPPEnumObject, + 'enum-class': CPPEnumObject, + 'enumerator': CPPEnumeratorObject, + # scope control + 'namespace': CPPNamespaceObject, + 'namespace-push': CPPNamespacePushObject, + 'namespace-pop': CPPNamespacePopObject, + # other + 'alias': CPPAliasObject + } + roles = { + 'any': CPPXRefRole(), + 'class': CPPXRefRole(), + 'struct': CPPXRefRole(), + 'union': CPPXRefRole(), + 'func': CPPXRefRole(fix_parens=True), + 'member': CPPXRefRole(), + 'var': CPPXRefRole(), + 'type': CPPXRefRole(), + 'concept': CPPXRefRole(), + 'enum': CPPXRefRole(), + 'enumerator': CPPXRefRole(), + 'expr': CPPExprRole(asCode=True), + 'texpr': CPPExprRole(asCode=False) + } + initial_data = { + 'root_symbol': Symbol(None, None, None, None, None, None), + 'names': {} # full name for indexing -> docname + } + + def clear_doc(self, docname: str) -> None: + if Symbol.debug_show_tree: + print("clear_doc:", docname) + print("\tbefore:") + print(self.data['root_symbol'].dump(1)) + print("\tbefore end") + + rootSymbol = self.data['root_symbol'] + rootSymbol.clear_doc(docname) + + if Symbol.debug_show_tree: + print("\tafter:") + print(self.data['root_symbol'].dump(1)) + print("\tafter end") + print("clear_doc end:", docname) + for name, nDocname in list(self.data['names'].items()): + if nDocname == docname: + del self.data['names'][name] + + def process_doc(self, env: BuildEnvironment, docname: str, + document: nodes.document) -> None: + if Symbol.debug_show_tree: + print("process_doc:", docname) + print(self.data['root_symbol'].dump(0)) + print("process_doc end:", docname) + + def process_field_xref(self, pnode: pending_xref) -> None: + pnode.attributes.update(self.env.ref_context) + + def merge_domaindata(self, docnames: List[str], otherdata: Dict) -> None: + if Symbol.debug_show_tree: + print("merge_domaindata:") + print("\tself:") + print(self.data['root_symbol'].dump(1)) + print("\tself end") + print("\tother:") + print(otherdata['root_symbol'].dump(1)) + print("\tother end") + + self.data['root_symbol'].merge_with(otherdata['root_symbol'], + docnames, self.env) + ourNames = self.data['names'] + for name, docname in otherdata['names'].items(): + if docname in docnames: + if name in ourNames: + msg = __("Duplicate declaration, also defined in '%s'.\n" + "Name of declaration is '%s'.") + msg = msg % (ourNames[name], name) + logger.warning(msg, location=docname) + else: + ourNames[name] = docname + if Symbol.debug_show_tree: + print("\tresult:") + print(self.data['root_symbol'].dump(1)) + print("\tresult end") + print("merge_domaindata end") + + def _resolve_xref_inner(self, env: BuildEnvironment, fromdocname: str, builder: Builder, + typ: str, target: str, node: pending_xref, + contnode: Element) -> Tuple[Element, str]: + # add parens again for those that could be functions + if typ == 'any' or typ == 'func': + target += '()' + parser = DefinitionParser(target, location=node, config=env.config) + try: + ast, isShorthand = parser.parse_xref_object() + except DefinitionError as e: + # as arg to stop flake8 from complaining + def findWarning(e: Exception) -> Tuple[str, Exception]: + if typ != 'any' and typ != 'func': + return target, e + # hax on top of the paren hax to try to get correct errors + parser2 = DefinitionParser(target[:-2], + location=node, + config=env.config) + try: + parser2.parse_xref_object() + except DefinitionError as e2: + return target[:-2], e2 + # strange, that we don't get the error now, use the original + return target, e + t, ex = findWarning(e) + logger.warning('Unparseable C++ cross-reference: %r\n%s', t, ex, + location=node) + return None, None + parentKey = node.get("cpp:parent_key", None) # type: LookupKey + rootSymbol = self.data['root_symbol'] + if parentKey: + parentSymbol = rootSymbol.direct_lookup(parentKey) # type: Symbol + if not parentSymbol: + print("Target: ", target) + print("ParentKey: ", parentKey.data) + print(rootSymbol.dump(1)) + assert parentSymbol # should be there + else: + parentSymbol = rootSymbol + + if isShorthand: + assert isinstance(ast, ASTNamespace) + ns = ast + name = ns.nestedName + if ns.templatePrefix: + templateDecls = ns.templatePrefix.templates + else: + templateDecls = [] + # let's be conservative with the sibling lookup for now + searchInSiblings = (not name.rooted) and len(name.names) == 1 + symbols, failReason = parentSymbol.find_name( + name, templateDecls, typ, + templateShorthand=True, + matchSelf=True, recurseInAnon=True, + searchInSiblings=searchInSiblings) + if symbols is None: + if typ == 'identifier': + if failReason == 'templateParamInQualified': + # this is an xref we created as part of a signature, + # so don't warn for names nested in template parameters + raise NoUri(str(name), typ) + s = None + else: + # just refer to the arbitrarily first symbol + s = symbols[0] + else: + assert isinstance(ast, ASTDeclaration) + decl = ast + name = decl.name + s = parentSymbol.find_declaration(decl, typ, + templateShorthand=True, + matchSelf=True, recurseInAnon=True) + if s is None or s.declaration is None: + txtName = str(name) + if txtName.startswith('std::') or txtName == 'std': + raise NoUri(txtName, typ) + return None, None + + if typ.startswith('cpp:'): + typ = typ[4:] + origTyp = typ + if typ == 'func': + typ = 'function' + if typ == 'struct': + typ = 'class' + declTyp = s.declaration.objectType + + def checkType() -> bool: + if typ == 'any' or typ == 'identifier': + return True + if declTyp == 'templateParam': + # TODO: perhaps this should be strengthened one day + return True + if declTyp == 'functionParam': + if typ == 'var' or typ == 'member': + return True + objtypes = self.objtypes_for_role(typ) + if objtypes: + return declTyp in objtypes + print("Type is %s (originally: %s), declType is %s" % (typ, origTyp, declTyp)) + assert False + if not checkType(): + logger.warning("cpp:%s targets a %s (%s).", + origTyp, s.declaration.objectType, + s.get_full_nested_name(), + location=node) + + declaration = s.declaration + if isShorthand: + fullNestedName = s.get_full_nested_name() + displayName = fullNestedName.get_display_string().lstrip(':') + else: + displayName = decl.get_display_string() + docname = s.docname + assert docname + + # the non-identifier refs are cross-references, which should be processed: + # - fix parenthesis due to operator() and add_function_parentheses + if typ != "identifier": + title = contnode.pop(0).astext() + # If it's operator(), we need to add '()' if explicit function parens + # are requested. Then the Sphinx machinery will add another pair. + # Also, if it's an 'any' ref that resolves to a function, we need to add + # parens as well. + # However, if it's a non-shorthand function ref, for a function that + # takes no arguments, then we may need to add parens again as well. + addParen = 0 + if not node.get('refexplicit', False) and declaration.objectType == 'function': + if isShorthand: + # this is just the normal haxing for 'any' roles + if env.config.add_function_parentheses and typ == 'any': + addParen += 1 + # and now this stuff for operator() + if (env.config.add_function_parentheses and typ == 'function' and + title.endswith('operator()')): + addParen += 1 + if ((typ == 'any' or typ == 'function') and + title.endswith('operator') and + displayName.endswith('operator()')): + addParen += 1 + else: + # our job here is to essentially nullify add_function_parentheses + if env.config.add_function_parentheses: + if typ == 'any' and displayName.endswith('()'): + addParen += 1 + elif typ == 'function': + if title.endswith('()') and not displayName.endswith('()'): + title = title[:-2] + else: + if displayName.endswith('()'): + addParen += 1 + if addParen > 0: + title += '()' * addParen + # and reconstruct the title again + contnode += nodes.Text(title) + return make_refnode(builder, fromdocname, docname, + declaration.get_newest_id(), contnode, displayName + ), declaration.objectType + + def resolve_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder, + typ: str, target: str, node: pending_xref, contnode: Element + ) -> Element: + return self._resolve_xref_inner(env, fromdocname, builder, typ, + target, node, contnode)[0] + + def resolve_any_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder, + target: str, node: pending_xref, contnode: Element + ) -> List[Tuple[str, Element]]: + with logging.suppress_logging(): + retnode, objtype = self._resolve_xref_inner(env, fromdocname, builder, + 'any', target, node, contnode) + if retnode: + if objtype == 'templateParam': + return [('cpp:templateParam', retnode)] + else: + return [('cpp:' + self.role_for_objtype(objtype), retnode)] + return [] + + def get_objects(self) -> Iterator[Tuple[str, str, str, str, str, int]]: + rootSymbol = self.data['root_symbol'] + for symbol in rootSymbol.get_all_symbols(): + if symbol.declaration is None: + continue + assert symbol.docname + fullNestedName = symbol.get_full_nested_name() + name = str(fullNestedName).lstrip(':') + dispname = fullNestedName.get_display_string().lstrip(':') + objectType = symbol.declaration.objectType + docname = symbol.docname + newestId = symbol.declaration.get_newest_id() + yield (name, dispname, objectType, docname, newestId, 1) + + def get_full_qualified_name(self, node: Element) -> str: + target = node.get('reftarget', None) + if target is None: + return None + parentKey = node.get("cpp:parent_key", None) # type: LookupKey + if parentKey is None or len(parentKey.data) <= 0: + return None + + rootSymbol = self.data['root_symbol'] + parentSymbol = rootSymbol.direct_lookup(parentKey) + parentName = parentSymbol.get_full_nested_name() + return '::'.join([str(parentName), target]) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_domain(CPPDomain) + app.add_config_value("cpp_index_common_prefix", [], 'env') + app.add_config_value("cpp_id_attributes", [], 'env') + app.add_config_value("cpp_paren_attributes", [], 'env') + app.add_post_transform(AliasTransform) + + return { + 'version': 'builtin', + 'env_version': 2, + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/domains/index.py b/sphinx/sphinx/domains/index.py new file mode 100644 index 0000000..18a256b --- /dev/null +++ b/sphinx/sphinx/domains/index.py @@ -0,0 +1,129 @@ +""" + sphinx.domains.index + ~~~~~~~~~~~~~~~~~~~~ + + The index domain. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Any, Dict, Iterable, List, Tuple + +from docutils import nodes +from docutils.nodes import Node, system_message +from docutils.parsers.rst import directives + +from sphinx import addnodes +from sphinx.domains import Domain +from sphinx.environment import BuildEnvironment +from sphinx.util import logging +from sphinx.util import split_index_msg +from sphinx.util.docutils import ReferenceRole, SphinxDirective +from sphinx.util.nodes import process_index_entry + +if False: + # For type annotation + from sphinx.application import Sphinx + + +logger = logging.getLogger(__name__) + + +class IndexDomain(Domain): + """Mathematics domain.""" + name = 'index' + label = 'index' + + @property + def entries(self) -> Dict[str, List[Tuple[str, str, str, str, str]]]: + return self.data.setdefault('entries', {}) + + def clear_doc(self, docname: str) -> None: + self.entries.pop(docname, None) + + def merge_domaindata(self, docnames: Iterable[str], otherdata: Dict) -> None: + for docname in docnames: + self.entries[docname] = otherdata['entries'][docname] + + def process_doc(self, env: BuildEnvironment, docname: str, document: Node) -> None: + """Process a document after it is read by the environment.""" + entries = self.entries.setdefault(env.docname, []) + for node in document.traverse(addnodes.index): + try: + for entry in node['entries']: + split_index_msg(entry[0], entry[1]) + except ValueError as exc: + logger.warning(str(exc), location=node) + node.parent.remove(node) + else: + for entry in node['entries']: + entries.append(entry) + + +class IndexDirective(SphinxDirective): + """ + Directive to add entries to the index. + """ + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = { + 'name': directives.unchanged, + } + + def run(self) -> List[Node]: + arguments = self.arguments[0].split('\n') + + if 'name' in self.options: + targetname = self.options['name'] + targetnode = nodes.target('', '', names=[targetname]) + else: + targetid = 'index-%s' % self.env.new_serialno('index') + targetnode = nodes.target('', '', ids=[targetid]) + + self.state.document.note_explicit_target(targetnode) + indexnode = addnodes.index() + indexnode['entries'] = [] + indexnode['inline'] = False + self.set_source_info(indexnode) + for entry in arguments: + indexnode['entries'].extend(process_index_entry(entry, targetnode['ids'][0])) + return [indexnode, targetnode] + + +class IndexRole(ReferenceRole): + def run(self) -> Tuple[List[Node], List[system_message]]: + target_id = 'index-%s' % self.env.new_serialno('index') + if self.has_explicit_title: + # if an explicit target is given, process it as a full entry + title = self.title + entries = process_index_entry(self.target, target_id) + else: + # otherwise we just create a single entry + if self.target.startswith('!'): + title = self.title[1:] + entries = [('single', self.target[1:], target_id, 'main', None)] + else: + title = self.title + entries = [('single', self.target, target_id, '', None)] + + index = addnodes.index(entries=entries) + target = nodes.target('', '', ids=[target_id]) + text = nodes.Text(title, title) + self.set_source_info(index) + return [index, target, text], [] + + +def setup(app: "Sphinx") -> Dict[str, Any]: + app.add_domain(IndexDomain) + app.add_directive('index', IndexDirective) + app.add_role('index', IndexRole()) + + return { + 'version': 'builtin', + 'env_version': 1, + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/domains/javascript.py b/sphinx/sphinx/domains/javascript.py new file mode 100644 index 0000000..d510d79 --- /dev/null +++ b/sphinx/sphinx/domains/javascript.py @@ -0,0 +1,453 @@ +""" + sphinx.domains.javascript + ~~~~~~~~~~~~~~~~~~~~~~~~~ + + The JavaScript domain. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Any, Dict, Iterator, List, Tuple +from typing import cast + +from docutils import nodes +from docutils.nodes import Element, Node +from docutils.parsers.rst import directives + +from sphinx import addnodes +from sphinx.addnodes import desc_signature, pending_xref +from sphinx.application import Sphinx +from sphinx.builders import Builder +from sphinx.directives import ObjectDescription +from sphinx.domains import Domain, ObjType +from sphinx.domains.python import _pseudo_parse_arglist +from sphinx.environment import BuildEnvironment +from sphinx.locale import _, __ +from sphinx.roles import XRefRole +from sphinx.util import logging +from sphinx.util.docfields import Field, GroupedField, TypedField +from sphinx.util.docutils import SphinxDirective +from sphinx.util.nodes import make_id, make_refnode + + +logger = logging.getLogger(__name__) + + +class JSObject(ObjectDescription): + """ + Description of a JavaScript object. + """ + #: If set to ``True`` this object is callable and a `desc_parameterlist` is + #: added + has_arguments = False + + #: what is displayed right before the documentation entry + display_prefix = None # type: str + + #: If ``allow_nesting`` is ``True``, the object prefixes will be accumulated + #: based on directive nesting + allow_nesting = False + + def handle_signature(self, sig: str, signode: desc_signature) -> Tuple[str, str]: + """Breaks down construct signatures + + Parses out prefix and argument list from construct definition. The + namespace and class will be determined by the nesting of domain + directives. + """ + sig = sig.strip() + if '(' in sig and sig[-1:] == ')': + member, arglist = sig.split('(', 1) + member = member.strip() + arglist = arglist[:-1].strip() + else: + member = sig + arglist = None + # If construct is nested, prefix the current prefix + prefix = self.env.ref_context.get('js:object', None) + mod_name = self.env.ref_context.get('js:module') + name = member + try: + member_prefix, member_name = member.rsplit('.', 1) + except ValueError: + member_name = name + member_prefix = '' + finally: + name = member_name + if prefix and member_prefix: + prefix = '.'.join([prefix, member_prefix]) + elif prefix is None and member_prefix: + prefix = member_prefix + fullname = name + if prefix: + fullname = '.'.join([prefix, name]) + + signode['module'] = mod_name + signode['object'] = prefix + signode['fullname'] = fullname + + if self.display_prefix: + signode += addnodes.desc_annotation(self.display_prefix, + self.display_prefix) + if prefix: + signode += addnodes.desc_addname(prefix + '.', prefix + '.') + elif mod_name: + signode += addnodes.desc_addname(mod_name + '.', mod_name + '.') + signode += addnodes.desc_name(name, name) + if self.has_arguments: + if not arglist: + signode += addnodes.desc_parameterlist() + else: + _pseudo_parse_arglist(signode, arglist) + return fullname, prefix + + def add_target_and_index(self, name_obj: Tuple[str, str], sig: str, + signode: desc_signature) -> None: + mod_name = self.env.ref_context.get('js:module') + fullname = (mod_name + '.' if mod_name else '') + name_obj[0] + node_id = make_id(self.env, self.state.document, '', fullname) + signode['ids'].append(node_id) + + # Assign old styled node_id not to break old hyperlinks (if possible) + # Note: Will be removed in Sphinx-5.0 (RemovedInSphinx50Warning) + old_node_id = self.make_old_id(fullname) + if old_node_id not in self.state.document.ids and old_node_id not in signode['ids']: + signode['ids'].append(old_node_id) + + self.state.document.note_explicit_target(signode) + + domain = cast(JavaScriptDomain, self.env.get_domain('js')) + domain.note_object(fullname, self.objtype, node_id, location=signode) + + indextext = self.get_index_text(mod_name, name_obj) + if indextext: + self.indexnode['entries'].append(('single', indextext, node_id, '', None)) + + def get_index_text(self, objectname: str, name_obj: Tuple[str, str]) -> str: + name, obj = name_obj + if self.objtype == 'function': + if not obj: + return _('%s() (built-in function)') % name + return _('%s() (%s method)') % (name, obj) + elif self.objtype == 'class': + return _('%s() (class)') % name + elif self.objtype == 'data': + return _('%s (global variable or constant)') % name + elif self.objtype == 'attribute': + return _('%s (%s attribute)') % (name, obj) + return '' + + def before_content(self) -> None: + """Handle object nesting before content + + :py:class:`JSObject` represents JavaScript language constructs. For + constructs that are nestable, this method will build up a stack of the + nesting heirarchy so that it can be later de-nested correctly, in + :py:meth:`after_content`. + + For constructs that aren't nestable, the stack is bypassed, and instead + only the most recent object is tracked. This object prefix name will be + removed with :py:meth:`after_content`. + + The following keys are used in ``self.env.ref_context``: + + js:objects + Stores the object prefix history. With each nested element, we + add the object prefix to this list. When we exit that object's + nesting level, :py:meth:`after_content` is triggered and the + prefix is removed from the end of the list. + + js:object + Current object prefix. This should generally reflect the last + element in the prefix history + """ + prefix = None + if self.names: + (obj_name, obj_name_prefix) = self.names.pop() + prefix = obj_name_prefix.strip('.') if obj_name_prefix else None + if self.allow_nesting: + prefix = obj_name + if prefix: + self.env.ref_context['js:object'] = prefix + if self.allow_nesting: + objects = self.env.ref_context.setdefault('js:objects', []) + objects.append(prefix) + + def after_content(self) -> None: + """Handle object de-nesting after content + + If this class is a nestable object, removing the last nested class prefix + ends further nesting in the object. + + If this class is not a nestable object, the list of classes should not + be altered as we didn't affect the nesting levels in + :py:meth:`before_content`. + """ + objects = self.env.ref_context.setdefault('js:objects', []) + if self.allow_nesting: + try: + objects.pop() + except IndexError: + pass + self.env.ref_context['js:object'] = (objects[-1] if len(objects) > 0 + else None) + + def make_old_id(self, fullname: str) -> str: + """Generate old styled node_id for JS objects. + + .. note:: Old Styled node_id was used until Sphinx-3.0. + This will be removed in Sphinx-5.0. + """ + return fullname.replace('$', '_S_') + + +class JSCallable(JSObject): + """Description of a JavaScript function, method or constructor.""" + has_arguments = True + + doc_field_types = [ + TypedField('arguments', label=_('Arguments'), + names=('argument', 'arg', 'parameter', 'param'), + typerolename='func', typenames=('paramtype', 'type')), + GroupedField('errors', label=_('Throws'), rolename='err', + names=('throws', ), + can_collapse=True), + Field('returnvalue', label=_('Returns'), has_arg=False, + names=('returns', 'return')), + Field('returntype', label=_('Return type'), has_arg=False, + names=('rtype',)), + ] + + +class JSConstructor(JSCallable): + """Like a callable but with a different prefix.""" + display_prefix = 'class ' + allow_nesting = True + + +class JSModule(SphinxDirective): + """ + Directive to mark description of a new JavaScript module. + + This directive specifies the module name that will be used by objects that + follow this directive. + + Options + ------- + + noindex + If the ``noindex`` option is specified, no linkable elements will be + created, and the module won't be added to the global module index. This + is useful for splitting up the module definition across multiple + sections or files. + + :param mod_name: Module name + """ + + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = False + option_spec = { + 'noindex': directives.flag + } + + def run(self) -> List[Node]: + mod_name = self.arguments[0].strip() + self.env.ref_context['js:module'] = mod_name + noindex = 'noindex' in self.options + ret = [] # type: List[Node] + if not noindex: + domain = cast(JavaScriptDomain, self.env.get_domain('js')) + + node_id = make_id(self.env, self.state.document, 'module', mod_name) + domain.note_module(mod_name, node_id) + # Make a duplicate entry in 'objects' to facilitate searching for + # the module in JavaScriptDomain.find_obj() + domain.note_object(mod_name, 'module', node_id, + location=(self.env.docname, self.lineno)) + + target = nodes.target('', '', ids=[node_id], ismod=True) + + # Assign old styled node_id not to break old hyperlinks (if possible) + # Note: Will be removed in Sphinx-5.0 (RemovedInSphinx50Warning) + old_node_id = self.make_old_id(mod_name) + if old_node_id not in self.state.document.ids and old_node_id not in target['ids']: + target['ids'].append(old_node_id) + + self.state.document.note_explicit_target(target) + ret.append(target) + indextext = _('%s (module)') % mod_name + inode = addnodes.index(entries=[('single', indextext, node_id, '', None)]) + ret.append(inode) + return ret + + def make_old_id(self, modname: str) -> str: + """Generate old styled node_id for JS modules. + + .. note:: Old Styled node_id was used until Sphinx-3.0. + This will be removed in Sphinx-5.0. + """ + return 'module-' + modname + + +class JSXRefRole(XRefRole): + def process_link(self, env: BuildEnvironment, refnode: Element, + has_explicit_title: bool, title: str, target: str) -> Tuple[str, str]: + # basically what sphinx.domains.python.PyXRefRole does + refnode['js:object'] = env.ref_context.get('js:object') + refnode['js:module'] = env.ref_context.get('js:module') + if not has_explicit_title: + title = title.lstrip('.') + target = target.lstrip('~') + if title[0:1] == '~': + title = title[1:] + dot = title.rfind('.') + if dot != -1: + title = title[dot + 1:] + if target[0:1] == '.': + target = target[1:] + refnode['refspecific'] = True + return title, target + + +class JavaScriptDomain(Domain): + """JavaScript language domain.""" + name = 'js' + label = 'JavaScript' + # if you add a new object type make sure to edit JSObject.get_index_string + object_types = { + 'function': ObjType(_('function'), 'func'), + 'method': ObjType(_('method'), 'meth'), + 'class': ObjType(_('class'), 'class'), + 'data': ObjType(_('data'), 'data'), + 'attribute': ObjType(_('attribute'), 'attr'), + 'module': ObjType(_('module'), 'mod'), + } + directives = { + 'function': JSCallable, + 'method': JSCallable, + 'class': JSConstructor, + 'data': JSObject, + 'attribute': JSObject, + 'module': JSModule, + } + roles = { + 'func': JSXRefRole(fix_parens=True), + 'meth': JSXRefRole(fix_parens=True), + 'class': JSXRefRole(fix_parens=True), + 'data': JSXRefRole(), + 'attr': JSXRefRole(), + 'mod': JSXRefRole(), + } + initial_data = { + 'objects': {}, # fullname -> docname, node_id, objtype + 'modules': {}, # modname -> docname, node_id + } # type: Dict[str, Dict[str, Tuple[str, str]]] + + @property + def objects(self) -> Dict[str, Tuple[str, str, str]]: + return self.data.setdefault('objects', {}) # fullname -> docname, node_id, objtype + + def note_object(self, fullname: str, objtype: str, node_id: str, + location: Any = None) -> None: + if fullname in self.objects: + docname = self.objects[fullname][0] + logger.warning(__('duplicate %s description of %s, other %s in %s'), + objtype, fullname, objtype, docname, location=location) + self.objects[fullname] = (self.env.docname, node_id, objtype) + + @property + def modules(self) -> Dict[str, Tuple[str, str]]: + return self.data.setdefault('modules', {}) # modname -> docname, node_id + + def note_module(self, modname: str, node_id: str) -> None: + self.modules[modname] = (self.env.docname, node_id) + + def clear_doc(self, docname: str) -> None: + for fullname, (pkg_docname, node_id, _l) in list(self.objects.items()): + if pkg_docname == docname: + del self.objects[fullname] + for modname, (pkg_docname, node_id) in list(self.modules.items()): + if pkg_docname == docname: + del self.modules[modname] + + def merge_domaindata(self, docnames: List[str], otherdata: Dict) -> None: + # XXX check duplicates + for fullname, (fn, node_id, objtype) in otherdata['objects'].items(): + if fn in docnames: + self.objects[fullname] = (fn, node_id, objtype) + for mod_name, (pkg_docname, node_id) in otherdata['modules'].items(): + if pkg_docname in docnames: + self.modules[mod_name] = (pkg_docname, node_id) + + def find_obj(self, env: BuildEnvironment, mod_name: str, prefix: str, name: str, + typ: str, searchorder: int = 0) -> Tuple[str, Tuple[str, str, str]]: + if name[-2:] == '()': + name = name[:-2] + + searches = [] + if mod_name and prefix: + searches.append('.'.join([mod_name, prefix, name])) + if mod_name: + searches.append('.'.join([mod_name, name])) + if prefix: + searches.append('.'.join([prefix, name])) + searches.append(name) + + if searchorder == 0: + searches.reverse() + + newname = None + for search_name in searches: + if search_name in self.objects: + newname = search_name + + return newname, self.objects.get(newname) + + def resolve_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder, + typ: str, target: str, node: pending_xref, contnode: Element + ) -> Element: + mod_name = node.get('js:module') + prefix = node.get('js:object') + searchorder = 1 if node.hasattr('refspecific') else 0 + name, obj = self.find_obj(env, mod_name, prefix, target, typ, searchorder) + if not obj: + return None + return make_refnode(builder, fromdocname, obj[0], obj[1], contnode, name) + + def resolve_any_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder, + target: str, node: pending_xref, contnode: Element + ) -> List[Tuple[str, Element]]: + mod_name = node.get('js:module') + prefix = node.get('js:object') + name, obj = self.find_obj(env, mod_name, prefix, target, None, 1) + if not obj: + return [] + return [('js:' + self.role_for_objtype(obj[2]), + make_refnode(builder, fromdocname, obj[0], obj[1], contnode, name))] + + def get_objects(self) -> Iterator[Tuple[str, str, str, str, str, int]]: + for refname, (docname, node_id, typ) in list(self.objects.items()): + yield refname, refname, typ, docname, node_id, 1 + + def get_full_qualified_name(self, node: Element) -> str: + modname = node.get('js:module') + prefix = node.get('js:object') + target = node.get('reftarget') + if target is None: + return None + else: + return '.'.join(filter(None, [modname, prefix, target])) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_domain(JavaScriptDomain) + + return { + 'version': 'builtin', + 'env_version': 2, + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/domains/math.py b/sphinx/sphinx/domains/math.py new file mode 100644 index 0000000..88b6e4e --- /dev/null +++ b/sphinx/sphinx/domains/math.py @@ -0,0 +1,174 @@ +""" + sphinx.domains.math + ~~~~~~~~~~~~~~~~~~~ + + The math domain. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import warnings +from typing import Any, Dict, Iterable, List, Tuple + +from docutils import nodes +from docutils.nodes import Element, Node, system_message +from docutils.nodes import make_id + +from sphinx.addnodes import pending_xref +from sphinx.deprecation import RemovedInSphinx40Warning +from sphinx.domains import Domain +from sphinx.environment import BuildEnvironment +from sphinx.locale import __ +from sphinx.roles import XRefRole +from sphinx.util import logging +from sphinx.util.nodes import make_refnode + +if False: + # For type annotation + from sphinx.application import Sphinx + from sphinx.builders import Builder + + +logger = logging.getLogger(__name__) + + +class MathReferenceRole(XRefRole): + def result_nodes(self, document: nodes.document, env: BuildEnvironment, node: Element, + is_ref: bool) -> Tuple[List[Node], List[system_message]]: + node['refdomain'] = 'math' + return [node], [] + + +class MathDomain(Domain): + """Mathematics domain.""" + name = 'math' + label = 'mathematics' + + initial_data = { + 'objects': {}, # labelid -> (docname, eqno) + 'has_equations': {}, # docname -> bool + } # type: Dict + dangling_warnings = { + 'eq': 'equation not found: %(target)s', + } + enumerable_nodes = { # node_class -> (figtype, title_getter) + nodes.math_block: ('displaymath', None), + } + roles = { + 'numref': MathReferenceRole(), + } + + @property + def equations(self) -> Dict[str, Tuple[str, int]]: + return self.data.setdefault('objects', {}) # labelid -> (docname, eqno) + + def note_equation(self, docname: str, labelid: str, location: Any = None) -> None: + if labelid in self.equations: + other = self.equations[labelid][0] + logger.warning(__('duplicate label of equation %s, other instance in %s') % + (labelid, other), location=location) + + self.equations[labelid] = (docname, self.env.new_serialno('eqno') + 1) + + def get_equation_number_for(self, labelid: str) -> int: + if labelid in self.equations: + return self.equations[labelid][1] + else: + return None + + def process_doc(self, env: BuildEnvironment, docname: str, + document: nodes.document) -> None: + def math_node(node: Node) -> bool: + return isinstance(node, (nodes.math, nodes.math_block)) + + self.data['has_equations'][docname] = any(document.traverse(math_node)) + + def clear_doc(self, docname: str) -> None: + for equation_id, (doc, eqno) in list(self.equations.items()): + if doc == docname: + del self.equations[equation_id] + + self.data['has_equations'].pop(docname, None) + + def merge_domaindata(self, docnames: Iterable[str], otherdata: Dict) -> None: + for labelid, (doc, eqno) in otherdata['objects'].items(): + if doc in docnames: + self.equations[labelid] = (doc, eqno) + + for docname in docnames: + self.data['has_equations'][docname] = otherdata['has_equations'][docname] + + def resolve_xref(self, env: BuildEnvironment, fromdocname: str, builder: "Builder", + typ: str, target: str, node: pending_xref, contnode: Element + ) -> Element: + assert typ in ('eq', 'numref') + docname, number = self.equations.get(target, (None, None)) + if docname: + # TODO: perhaps use rather a sphinx-core provided prefix here? + node_id = make_id('equation-%s' % target) + if env.config.math_numfig and env.config.numfig: + if docname in env.toc_fignumbers: + numbers = env.toc_fignumbers[docname]['displaymath'].get(node_id, ()) + eqno = '.'.join(map(str, numbers)) + else: + eqno = '' + else: + eqno = str(number) + + try: + eqref_format = env.config.math_eqref_format or "({number})" + title = nodes.Text(eqref_format.format(number=eqno)) + except KeyError as exc: + logger.warning(__('Invalid math_eqref_format: %r'), exc, + location=node) + title = nodes.Text("(%d)" % number) + title = nodes.Text("(%d)" % number) + return make_refnode(builder, fromdocname, docname, node_id, title) + else: + return None + + def resolve_any_xref(self, env: BuildEnvironment, fromdocname: str, builder: "Builder", + target: str, node: pending_xref, contnode: Element + ) -> List[Tuple[str, Element]]: + refnode = self.resolve_xref(env, fromdocname, builder, 'eq', target, node, contnode) + if refnode is None: + return [] + else: + return [('eq', refnode)] + + def get_objects(self) -> List: + return [] + + def add_equation(self, env: BuildEnvironment, docname: str, labelid: str) -> int: + warnings.warn('MathDomain.add_equation() is deprecated.', + RemovedInSphinx40Warning) + if labelid in self.equations: + path = env.doc2path(self.equations[labelid][0]) + msg = __('duplicate label of equation %s, other instance in %s') % (labelid, path) + raise UserWarning(msg) + else: + eqno = self.get_next_equation_number(docname) + self.equations[labelid] = (docname, eqno) + return eqno + + def get_next_equation_number(self, docname: str) -> int: + warnings.warn('MathDomain.get_next_equation_number() is deprecated.', + RemovedInSphinx40Warning) + targets = [eq for eq in self.equations.values() if eq[0] == docname] + return len(targets) + 1 + + def has_equations(self) -> bool: + return any(self.data['has_equations'].values()) + + +def setup(app: "Sphinx") -> Dict[str, Any]: + app.add_domain(MathDomain) + app.add_role('eq', MathReferenceRole(warn_dangling=True)) + + return { + 'version': 'builtin', + 'env_version': 2, + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/domains/python.py b/sphinx/sphinx/domains/python.py new file mode 100644 index 0000000..52b670a --- /dev/null +++ b/sphinx/sphinx/domains/python.py @@ -0,0 +1,1361 @@ +""" + sphinx.domains.python + ~~~~~~~~~~~~~~~~~~~~~ + + The Python domain. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import builtins +import inspect +import re +import typing +import warnings +from inspect import Parameter +from typing import Any, Dict, Iterable, Iterator, List, NamedTuple, Tuple +from typing import cast + +from docutils import nodes +from docutils.nodes import Element, Node +from docutils.parsers.rst import directives + +from sphinx import addnodes +from sphinx.addnodes import pending_xref, desc_signature +from sphinx.application import Sphinx +from sphinx.builders import Builder +from sphinx.deprecation import RemovedInSphinx40Warning, RemovedInSphinx50Warning +from sphinx.directives import ObjectDescription +from sphinx.domains import Domain, ObjType, Index, IndexEntry +from sphinx.environment import BuildEnvironment +from sphinx.locale import _, __ +from sphinx.pycode.ast import ast, parse as ast_parse +from sphinx.roles import XRefRole +from sphinx.util import logging +from sphinx.util.docfields import Field, GroupedField, TypedField +from sphinx.util.docutils import SphinxDirective +from sphinx.util.inspect import signature_from_str +from sphinx.util.nodes import make_id, make_refnode +from sphinx.util.typing import TextlikeNode + +if False: + # For type annotation + from typing import Type # for python3.5.1 + + +logger = logging.getLogger(__name__) + + +# REs for Python signatures +py_sig_re = re.compile( + r'''^ ([\w.]*\.)? # class name(s) + (\w+) \s* # thing name + (?: \(\s*(.*)\s*\) # optional: arguments + (?:\s* -> \s* (.*))? # return annotation + )? $ # and nothing more + ''', re.VERBOSE) + + +pairindextypes = { + 'module': _('module'), + 'keyword': _('keyword'), + 'operator': _('operator'), + 'object': _('object'), + 'exception': _('exception'), + 'statement': _('statement'), + 'builtin': _('built-in function'), +} + +ObjectEntry = NamedTuple('ObjectEntry', [('docname', str), + ('node_id', str), + ('objtype', str)]) +ModuleEntry = NamedTuple('ModuleEntry', [('docname', str), + ('node_id', str), + ('synopsis', str), + ('platform', str), + ('deprecated', bool)]) + + +def _parse_annotation(annotation: str) -> List[Node]: + """Parse type annotation.""" + def make_xref(text: str) -> addnodes.pending_xref: + if text == 'None': + reftype = 'obj' + else: + reftype = 'class' + + return pending_xref('', nodes.Text(text), + refdomain='py', reftype=reftype, reftarget=text) + + def unparse(node: ast.AST) -> List[Node]: + if isinstance(node, ast.Attribute): + return [nodes.Text("%s.%s" % (unparse(node.value)[0], node.attr))] + elif isinstance(node, ast.Expr): + return unparse(node.value) + elif isinstance(node, ast.Index): + return unparse(node.value) + elif isinstance(node, ast.List): + result = [addnodes.desc_sig_punctuation('', '[')] # type: List[Node] + for elem in node.elts: + result.extend(unparse(elem)) + result.append(addnodes.desc_sig_punctuation('', ', ')) + result.pop() + result.append(addnodes.desc_sig_punctuation('', ']')) + return result + elif isinstance(node, ast.Module): + return sum((unparse(e) for e in node.body), []) + elif isinstance(node, ast.Name): + return [nodes.Text(node.id)] + elif isinstance(node, ast.Subscript): + result = unparse(node.value) + result.append(addnodes.desc_sig_punctuation('', '[')) + result.extend(unparse(node.slice)) + result.append(addnodes.desc_sig_punctuation('', ']')) + return result + elif isinstance(node, ast.Tuple): + if node.elts: + result = [] + for elem in node.elts: + result.extend(unparse(elem)) + result.append(addnodes.desc_sig_punctuation('', ', ')) + result.pop() + else: + result = [addnodes.desc_sig_punctuation('', '('), + addnodes.desc_sig_punctuation('', ')')] + + return result + else: + raise SyntaxError # unsupported syntax + + try: + tree = ast_parse(annotation) + result = unparse(tree) + for i, node in enumerate(result): + if isinstance(node, nodes.Text): + result[i] = make_xref(str(node)) + return result + except SyntaxError: + return [make_xref(annotation)] + + +def _parse_arglist(arglist: str) -> addnodes.desc_parameterlist: + """Parse a list of arguments using AST parser""" + params = addnodes.desc_parameterlist(arglist) + sig = signature_from_str('(%s)' % arglist) + last_kind = None + for param in sig.parameters.values(): + if param.kind != param.POSITIONAL_ONLY and last_kind == param.POSITIONAL_ONLY: + # PEP-570: Separator for Positional Only Parameter: / + params += addnodes.desc_parameter('', '', addnodes.desc_sig_operator('', '/')) + if param.kind == param.KEYWORD_ONLY and last_kind in (param.POSITIONAL_OR_KEYWORD, + param.POSITIONAL_ONLY, + None): + # PEP-3102: Separator for Keyword Only Parameter: * + params += addnodes.desc_parameter('', '', addnodes.desc_sig_operator('', '*')) + + node = addnodes.desc_parameter() + if param.kind == param.VAR_POSITIONAL: + node += addnodes.desc_sig_operator('', '*') + node += addnodes.desc_sig_name('', param.name) + elif param.kind == param.VAR_KEYWORD: + node += addnodes.desc_sig_operator('', '**') + node += addnodes.desc_sig_name('', param.name) + else: + node += addnodes.desc_sig_name('', param.name) + + if param.annotation is not param.empty: + children = _parse_annotation(param.annotation) + node += addnodes.desc_sig_punctuation('', ':') + node += nodes.Text(' ') + node += addnodes.desc_sig_name('', '', *children) # type: ignore + if param.default is not param.empty: + if param.annotation is not param.empty: + node += nodes.Text(' ') + node += addnodes.desc_sig_operator('', '=') + node += nodes.Text(' ') + else: + node += addnodes.desc_sig_operator('', '=') + node += nodes.inline('', param.default, classes=['default_value'], + support_smartquotes=False) + + params += node + last_kind = param.kind + + if last_kind == Parameter.POSITIONAL_ONLY: + # PEP-570: Separator for Positional Only Parameter: / + params += addnodes.desc_parameter('', '', addnodes.desc_sig_operator('', '/')) + + return params + + +def _pseudo_parse_arglist(signode: desc_signature, arglist: str) -> None: + """"Parse" a list of arguments separated by commas. + + Arguments can have "optional" annotations given by enclosing them in + brackets. Currently, this will split at any comma, even if it's inside a + string literal (e.g. default argument value). + """ + paramlist = addnodes.desc_parameterlist() + stack = [paramlist] # type: List[Element] + try: + for argument in arglist.split(','): + argument = argument.strip() + ends_open = ends_close = 0 + while argument.startswith('['): + stack.append(addnodes.desc_optional()) + stack[-2] += stack[-1] + argument = argument[1:].strip() + while argument.startswith(']'): + stack.pop() + argument = argument[1:].strip() + while argument.endswith(']') and not argument.endswith('[]'): + ends_close += 1 + argument = argument[:-1].strip() + while argument.endswith('['): + ends_open += 1 + argument = argument[:-1].strip() + if argument: + stack[-1] += addnodes.desc_parameter(argument, argument) + while ends_open: + stack.append(addnodes.desc_optional()) + stack[-2] += stack[-1] + ends_open -= 1 + while ends_close: + stack.pop() + ends_close -= 1 + if len(stack) != 1: + raise IndexError + except IndexError: + # if there are too few or too many elements on the stack, just give up + # and treat the whole argument list as one argument, discarding the + # already partially populated paramlist node + paramlist = addnodes.desc_parameterlist() + paramlist += addnodes.desc_parameter(arglist, arglist) + signode += paramlist + else: + signode += paramlist + + +# This override allows our inline type specifiers to behave like :class: link +# when it comes to handling "." and "~" prefixes. +class PyXrefMixin: + def make_xref(self, rolename: str, domain: str, target: str, + innernode: "Type[TextlikeNode]" = nodes.emphasis, + contnode: Node = None, env: BuildEnvironment = None) -> Node: + result = super().make_xref(rolename, domain, target, # type: ignore + innernode, contnode, env) + result['refspecific'] = True + if target.startswith(('.', '~')): + prefix, result['reftarget'] = target[0], target[1:] + if prefix == '.': + text = target[1:] + elif prefix == '~': + text = target.split('.')[-1] + for node in result.traverse(nodes.Text): + node.parent[node.parent.index(node)] = nodes.Text(text) + break + return result + + def make_xrefs(self, rolename: str, domain: str, target: str, + innernode: "Type[TextlikeNode]" = nodes.emphasis, + contnode: Node = None, env: BuildEnvironment = None) -> List[Node]: + delims = r'(\s*[\[\]\(\),](?:\s*or\s)?\s*|\s+or\s+)' + delims_re = re.compile(delims) + sub_targets = re.split(delims, target) + + split_contnode = bool(contnode and contnode.astext() == target) + + results = [] + for sub_target in filter(None, sub_targets): + if split_contnode: + contnode = nodes.Text(sub_target) + + if delims_re.match(sub_target): + results.append(contnode or innernode(sub_target, sub_target)) + else: + results.append(self.make_xref(rolename, domain, sub_target, + innernode, contnode, env)) + + return results + + +class PyField(PyXrefMixin, Field): + def make_xref(self, rolename: str, domain: str, target: str, + innernode: "Type[TextlikeNode]" = nodes.emphasis, + contnode: Node = None, env: BuildEnvironment = None) -> Node: + if rolename == 'class' and target == 'None': + # None is not a type, so use obj role instead. + rolename = 'obj' + + return super().make_xref(rolename, domain, target, innernode, contnode, env) + + +class PyGroupedField(PyXrefMixin, GroupedField): + pass + + +class PyTypedField(PyXrefMixin, TypedField): + def make_xref(self, rolename: str, domain: str, target: str, + innernode: "Type[TextlikeNode]" = nodes.emphasis, + contnode: Node = None, env: BuildEnvironment = None) -> Node: + if rolename == 'class' and target == 'None': + # None is not a type, so use obj role instead. + rolename = 'obj' + + return super().make_xref(rolename, domain, target, innernode, contnode, env) + + +class PyObject(ObjectDescription): + """ + Description of a general Python object. + + :cvar allow_nesting: Class is an object that allows for nested namespaces + :vartype allow_nesting: bool + """ + option_spec = { + 'noindex': directives.flag, + 'module': directives.unchanged, + 'annotation': directives.unchanged, + } + + doc_field_types = [ + PyTypedField('parameter', label=_('Parameters'), + names=('param', 'parameter', 'arg', 'argument', + 'keyword', 'kwarg', 'kwparam'), + typerolename='class', typenames=('paramtype', 'type'), + can_collapse=True), + PyTypedField('variable', label=_('Variables'), rolename='obj', + names=('var', 'ivar', 'cvar'), + typerolename='class', typenames=('vartype',), + can_collapse=True), + PyGroupedField('exceptions', label=_('Raises'), rolename='exc', + names=('raises', 'raise', 'exception', 'except'), + can_collapse=True), + Field('returnvalue', label=_('Returns'), has_arg=False, + names=('returns', 'return')), + PyField('returntype', label=_('Return type'), has_arg=False, + names=('rtype',), bodyrolename='class'), + ] + + allow_nesting = False + + def get_signature_prefix(self, sig: str) -> str: + """May return a prefix to put before the object name in the + signature. + """ + return '' + + def needs_arglist(self) -> bool: + """May return true if an empty argument list is to be generated even if + the document contains none. + """ + return False + + def handle_signature(self, sig: str, signode: desc_signature) -> Tuple[str, str]: + """Transform a Python signature into RST nodes. + + Return (fully qualified name of the thing, classname if any). + + If inside a class, the current class name is handled intelligently: + * it is stripped from the displayed name if present + * it is added to the full name (return value) if not present + """ + m = py_sig_re.match(sig) + if m is None: + raise ValueError + prefix, name, arglist, retann = m.groups() + + # determine module and class name (if applicable), as well as full name + modname = self.options.get('module', self.env.ref_context.get('py:module')) + classname = self.env.ref_context.get('py:class') + if classname: + add_module = False + if prefix and (prefix == classname or + prefix.startswith(classname + ".")): + fullname = prefix + name + # class name is given again in the signature + prefix = prefix[len(classname):].lstrip('.') + elif prefix: + # class name is given in the signature, but different + # (shouldn't happen) + fullname = classname + '.' + prefix + name + else: + # class name is not given in the signature + fullname = classname + '.' + name + else: + add_module = True + if prefix: + classname = prefix.rstrip('.') + fullname = prefix + name + else: + classname = '' + fullname = name + + signode['module'] = modname + signode['class'] = classname + signode['fullname'] = fullname + + sig_prefix = self.get_signature_prefix(sig) + if sig_prefix: + signode += addnodes.desc_annotation(sig_prefix, sig_prefix) + + if prefix: + signode += addnodes.desc_addname(prefix, prefix) + elif add_module and self.env.config.add_module_names: + if modname and modname != 'exceptions': + # exceptions are a special case, since they are documented in the + # 'exceptions' module. + nodetext = modname + '.' + signode += addnodes.desc_addname(nodetext, nodetext) + + signode += addnodes.desc_name(name, name) + if arglist: + try: + signode += _parse_arglist(arglist) + except SyntaxError: + # fallback to parse arglist original parser. + # it supports to represent optional arguments (ex. "func(foo [, bar])") + _pseudo_parse_arglist(signode, arglist) + except NotImplementedError as exc: + logger.warning("could not parse arglist (%r): %s", arglist, exc, + location=signode) + _pseudo_parse_arglist(signode, arglist) + else: + if self.needs_arglist(): + # for callables, add an empty parameter list + signode += addnodes.desc_parameterlist() + + if retann: + children = _parse_annotation(retann) + signode += addnodes.desc_returns(retann, '', *children) + + anno = self.options.get('annotation') + if anno: + signode += addnodes.desc_annotation(' ' + anno, ' ' + anno) + + return fullname, prefix + + def get_index_text(self, modname: str, name: Tuple[str, str]) -> str: + """Return the text for the index entry of the object.""" + raise NotImplementedError('must be implemented in subclasses') + + def add_target_and_index(self, name_cls: Tuple[str, str], sig: str, + signode: desc_signature) -> None: + modname = self.options.get('module', self.env.ref_context.get('py:module')) + fullname = (modname + '.' if modname else '') + name_cls[0] + node_id = make_id(self.env, self.state.document, '', fullname) + signode['ids'].append(node_id) + + # Assign old styled node_id(fullname) not to break old hyperlinks (if possible) + # Note: Will removed in Sphinx-5.0 (RemovedInSphinx50Warning) + if node_id != fullname and fullname not in self.state.document.ids: + signode['ids'].append(fullname) + + self.state.document.note_explicit_target(signode) + + domain = cast(PythonDomain, self.env.get_domain('py')) + domain.note_object(fullname, self.objtype, node_id, location=signode) + + indextext = self.get_index_text(modname, name_cls) + if indextext: + self.indexnode['entries'].append(('single', indextext, node_id, '', None)) + + def before_content(self) -> None: + """Handle object nesting before content + + :py:class:`PyObject` represents Python language constructs. For + constructs that are nestable, such as a Python classes, this method will + build up a stack of the nesting heirarchy so that it can be later + de-nested correctly, in :py:meth:`after_content`. + + For constructs that aren't nestable, the stack is bypassed, and instead + only the most recent object is tracked. This object prefix name will be + removed with :py:meth:`after_content`. + """ + prefix = None + if self.names: + # fullname and name_prefix come from the `handle_signature` method. + # fullname represents the full object name that is constructed using + # object nesting and explicit prefixes. `name_prefix` is the + # explicit prefix given in a signature + (fullname, name_prefix) = self.names[-1] + if self.allow_nesting: + prefix = fullname + elif name_prefix: + prefix = name_prefix.strip('.') + if prefix: + self.env.ref_context['py:class'] = prefix + if self.allow_nesting: + classes = self.env.ref_context.setdefault('py:classes', []) + classes.append(prefix) + if 'module' in self.options: + modules = self.env.ref_context.setdefault('py:modules', []) + modules.append(self.env.ref_context.get('py:module')) + self.env.ref_context['py:module'] = self.options['module'] + + def after_content(self) -> None: + """Handle object de-nesting after content + + If this class is a nestable object, removing the last nested class prefix + ends further nesting in the object. + + If this class is not a nestable object, the list of classes should not + be altered as we didn't affect the nesting levels in + :py:meth:`before_content`. + """ + classes = self.env.ref_context.setdefault('py:classes', []) + if self.allow_nesting: + try: + classes.pop() + except IndexError: + pass + self.env.ref_context['py:class'] = (classes[-1] if len(classes) > 0 + else None) + if 'module' in self.options: + modules = self.env.ref_context.setdefault('py:modules', []) + if modules: + self.env.ref_context['py:module'] = modules.pop() + else: + self.env.ref_context.pop('py:module') + + +class PyModulelevel(PyObject): + """ + Description of an object on module level (functions, data). + """ + + def run(self) -> List[Node]: + for cls in self.__class__.__mro__: + if cls.__name__ != 'DirectiveAdapter': + warnings.warn('PyModulelevel is deprecated. ' + 'Please check the implementation of %s' % cls, + RemovedInSphinx40Warning) + break + else: + warnings.warn('PyModulelevel is deprecated', RemovedInSphinx40Warning) + + return super().run() + + def needs_arglist(self) -> bool: + return self.objtype == 'function' + + def get_index_text(self, modname: str, name_cls: Tuple[str, str]) -> str: + if self.objtype == 'function': + if not modname: + return _('%s() (built-in function)') % name_cls[0] + return _('%s() (in module %s)') % (name_cls[0], modname) + elif self.objtype == 'data': + if not modname: + return _('%s (built-in variable)') % name_cls[0] + return _('%s (in module %s)') % (name_cls[0], modname) + else: + return '' + + +class PyFunction(PyObject): + """Description of a function.""" + + option_spec = PyObject.option_spec.copy() + option_spec.update({ + 'async': directives.flag, + }) + + def get_signature_prefix(self, sig: str) -> str: + if 'async' in self.options: + return 'async ' + else: + return '' + + def needs_arglist(self) -> bool: + return True + + def add_target_and_index(self, name_cls: Tuple[str, str], sig: str, + signode: desc_signature) -> None: + super().add_target_and_index(name_cls, sig, signode) + modname = self.options.get('module', self.env.ref_context.get('py:module')) + node_id = signode['ids'][0] + + name, cls = name_cls + if modname: + text = _('%s() (in module %s)') % (name, modname) + self.indexnode['entries'].append(('single', text, node_id, '', None)) + else: + text = '%s; %s()' % (pairindextypes['builtin'], name) + self.indexnode['entries'].append(('pair', text, node_id, '', None)) + + def get_index_text(self, modname: str, name_cls: Tuple[str, str]) -> str: + # add index in own add_target_and_index() instead. + return None + + +class PyDecoratorFunction(PyFunction): + """Description of a decorator.""" + + def run(self) -> List[Node]: + # a decorator function is a function after all + self.name = 'py:function' + return super().run() + + def handle_signature(self, sig: str, signode: desc_signature) -> Tuple[str, str]: + ret = super().handle_signature(sig, signode) + signode.insert(0, addnodes.desc_addname('@', '@')) + return ret + + def needs_arglist(self) -> bool: + return False + + +class PyVariable(PyObject): + """Description of a variable.""" + + option_spec = PyObject.option_spec.copy() + option_spec.update({ + 'type': directives.unchanged, + 'value': directives.unchanged, + }) + + def handle_signature(self, sig: str, signode: desc_signature) -> Tuple[str, str]: + fullname, prefix = super().handle_signature(sig, signode) + + typ = self.options.get('type') + if typ: + signode += addnodes.desc_annotation(typ, ': ' + typ) + + value = self.options.get('value') + if value: + signode += addnodes.desc_annotation(value, ' = ' + value) + + return fullname, prefix + + def get_index_text(self, modname: str, name_cls: Tuple[str, str]) -> str: + name, cls = name_cls + if modname: + return _('%s (in module %s)') % (name, modname) + else: + return _('%s (built-in variable)') % name + + +class PyClasslike(PyObject): + """ + Description of a class-like object (classes, interfaces, exceptions). + """ + + allow_nesting = True + + def get_signature_prefix(self, sig: str) -> str: + return self.objtype + ' ' + + def get_index_text(self, modname: str, name_cls: Tuple[str, str]) -> str: + if self.objtype == 'class': + if not modname: + return _('%s (built-in class)') % name_cls[0] + return _('%s (class in %s)') % (name_cls[0], modname) + elif self.objtype == 'exception': + return name_cls[0] + else: + return '' + + +class PyClassmember(PyObject): + """ + Description of a class member (methods, attributes). + """ + + def run(self) -> List[Node]: + for cls in self.__class__.__mro__: + if cls.__name__ != 'DirectiveAdapter': + warnings.warn('PyClassmember is deprecated. ' + 'Please check the implementation of %s' % cls, + RemovedInSphinx40Warning) + break + else: + warnings.warn('PyClassmember is deprecated', RemovedInSphinx40Warning) + + return super().run() + + def needs_arglist(self) -> bool: + return self.objtype.endswith('method') + + def get_signature_prefix(self, sig: str) -> str: + if self.objtype == 'staticmethod': + return 'static ' + elif self.objtype == 'classmethod': + return 'classmethod ' + return '' + + def get_index_text(self, modname: str, name_cls: Tuple[str, str]) -> str: + name, cls = name_cls + add_modules = self.env.config.add_module_names + if self.objtype == 'method': + try: + clsname, methname = name.rsplit('.', 1) + except ValueError: + if modname: + return _('%s() (in module %s)') % (name, modname) + else: + return '%s()' % name + if modname and add_modules: + return _('%s() (%s.%s method)') % (methname, modname, clsname) + else: + return _('%s() (%s method)') % (methname, clsname) + elif self.objtype == 'staticmethod': + try: + clsname, methname = name.rsplit('.', 1) + except ValueError: + if modname: + return _('%s() (in module %s)') % (name, modname) + else: + return '%s()' % name + if modname and add_modules: + return _('%s() (%s.%s static method)') % (methname, modname, + clsname) + else: + return _('%s() (%s static method)') % (methname, clsname) + elif self.objtype == 'classmethod': + try: + clsname, methname = name.rsplit('.', 1) + except ValueError: + if modname: + return _('%s() (in module %s)') % (name, modname) + else: + return '%s()' % name + if modname: + return _('%s() (%s.%s class method)') % (methname, modname, + clsname) + else: + return _('%s() (%s class method)') % (methname, clsname) + elif self.objtype == 'attribute': + try: + clsname, attrname = name.rsplit('.', 1) + except ValueError: + if modname: + return _('%s (in module %s)') % (name, modname) + else: + return name + if modname and add_modules: + return _('%s (%s.%s attribute)') % (attrname, modname, clsname) + else: + return _('%s (%s attribute)') % (attrname, clsname) + else: + return '' + + +class PyMethod(PyObject): + """Description of a method.""" + + option_spec = PyObject.option_spec.copy() + option_spec.update({ + 'abstractmethod': directives.flag, + 'async': directives.flag, + 'classmethod': directives.flag, + 'property': directives.flag, + 'staticmethod': directives.flag, + }) + + def needs_arglist(self) -> bool: + if 'property' in self.options: + return False + else: + return True + + def get_signature_prefix(self, sig: str) -> str: + prefix = [] + if 'abstractmethod' in self.options: + prefix.append('abstract') + if 'async' in self.options: + prefix.append('async') + if 'classmethod' in self.options: + prefix.append('classmethod') + if 'property' in self.options: + prefix.append('property') + if 'staticmethod' in self.options: + prefix.append('static') + + if prefix: + return ' '.join(prefix) + ' ' + else: + return '' + + def get_index_text(self, modname: str, name_cls: Tuple[str, str]) -> str: + name, cls = name_cls + try: + clsname, methname = name.rsplit('.', 1) + if modname and self.env.config.add_module_names: + clsname = '.'.join([modname, clsname]) + except ValueError: + if modname: + return _('%s() (in module %s)') % (name, modname) + else: + return '%s()' % name + + if 'classmethod' in self.options: + return _('%s() (%s class method)') % (methname, clsname) + elif 'property' in self.options: + return _('%s() (%s property)') % (methname, clsname) + elif 'staticmethod' in self.options: + return _('%s() (%s static method)') % (methname, clsname) + else: + return _('%s() (%s method)') % (methname, clsname) + + +class PyClassMethod(PyMethod): + """Description of a classmethod.""" + + option_spec = PyObject.option_spec.copy() + + def run(self) -> List[Node]: + self.name = 'py:method' + self.options['classmethod'] = True + + return super().run() + + +class PyStaticMethod(PyMethod): + """Description of a staticmethod.""" + + option_spec = PyObject.option_spec.copy() + + def run(self) -> List[Node]: + self.name = 'py:method' + self.options['staticmethod'] = True + + return super().run() + + +class PyDecoratorMethod(PyMethod): + """Description of a decoratormethod.""" + + def run(self) -> List[Node]: + self.name = 'py:method' + return super().run() + + def handle_signature(self, sig: str, signode: desc_signature) -> Tuple[str, str]: + ret = super().handle_signature(sig, signode) + signode.insert(0, addnodes.desc_addname('@', '@')) + return ret + + def needs_arglist(self) -> bool: + return False + + +class PyAttribute(PyObject): + """Description of an attribute.""" + + option_spec = PyObject.option_spec.copy() + option_spec.update({ + 'type': directives.unchanged, + 'value': directives.unchanged, + }) + + def handle_signature(self, sig: str, signode: desc_signature) -> Tuple[str, str]: + fullname, prefix = super().handle_signature(sig, signode) + + typ = self.options.get('type') + if typ: + signode += addnodes.desc_annotation(typ, ': ' + typ) + + value = self.options.get('value') + if value: + signode += addnodes.desc_annotation(value, ' = ' + value) + + return fullname, prefix + + def get_index_text(self, modname: str, name_cls: Tuple[str, str]) -> str: + name, cls = name_cls + try: + clsname, attrname = name.rsplit('.', 1) + if modname and self.env.config.add_module_names: + clsname = '.'.join([modname, clsname]) + except ValueError: + if modname: + return _('%s (in module %s)') % (name, modname) + else: + return name + + return _('%s (%s attribute)') % (attrname, clsname) + + +class PyDecoratorMixin: + """ + Mixin for decorator directives. + """ + def handle_signature(self, sig: str, signode: desc_signature) -> Tuple[str, str]: + for cls in self.__class__.__mro__: + if cls.__name__ != 'DirectiveAdapter': + warnings.warn('PyDecoratorMixin is deprecated. ' + 'Please check the implementation of %s' % cls, + RemovedInSphinx50Warning) + break + else: + warnings.warn('PyDecoratorMixin is deprecated', RemovedInSphinx50Warning) + + ret = super().handle_signature(sig, signode) # type: ignore + signode.insert(0, addnodes.desc_addname('@', '@')) + return ret + + def needs_arglist(self) -> bool: + return False + + +class PyModule(SphinxDirective): + """ + Directive to mark description of a new module. + """ + + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = False + option_spec = { + 'platform': lambda x: x, + 'synopsis': lambda x: x, + 'noindex': directives.flag, + 'deprecated': directives.flag, + } + + def run(self) -> List[Node]: + domain = cast(PythonDomain, self.env.get_domain('py')) + + modname = self.arguments[0].strip() + noindex = 'noindex' in self.options + self.env.ref_context['py:module'] = modname + ret = [] # type: List[Node] + if not noindex: + # note module to the domain + node_id = make_id(self.env, self.state.document, 'module', modname) + target = nodes.target('', '', ids=[node_id], ismod=True) + self.set_source_info(target) + + # Assign old styled node_id not to break old hyperlinks (if possible) + # Note: Will removed in Sphinx-5.0 (RemovedInSphinx50Warning) + old_node_id = self.make_old_id(modname) + if node_id != old_node_id and old_node_id not in self.state.document.ids: + target['ids'].append(old_node_id) + + self.state.document.note_explicit_target(target) + + domain.note_module(modname, + node_id, + self.options.get('synopsis', ''), + self.options.get('platform', ''), + 'deprecated' in self.options) + domain.note_object(modname, 'module', node_id, location=target) + + # the platform and synopsis aren't printed; in fact, they are only + # used in the modindex currently + ret.append(target) + indextext = '%s; %s' % (pairindextypes['module'], modname) + inode = addnodes.index(entries=[('pair', indextext, node_id, '', None)]) + ret.append(inode) + return ret + + def make_old_id(self, name: str) -> str: + """Generate old styled node_id. + + Old styled node_id is incompatible with docutils' node_id. + It can contain dots and hyphens. + + .. note:: Old styled node_id was mainly used until Sphinx-3.0. + """ + return 'module-%s' % name + + +class PyCurrentModule(SphinxDirective): + """ + This directive is just to tell Sphinx that we're documenting + stuff in module foo, but links to module foo won't lead here. + """ + + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = False + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + modname = self.arguments[0].strip() + if modname == 'None': + self.env.ref_context.pop('py:module', None) + else: + self.env.ref_context['py:module'] = modname + return [] + + +class PyXRefRole(XRefRole): + def process_link(self, env: BuildEnvironment, refnode: Element, + has_explicit_title: bool, title: str, target: str) -> Tuple[str, str]: + refnode['py:module'] = env.ref_context.get('py:module') + refnode['py:class'] = env.ref_context.get('py:class') + if not has_explicit_title: + title = title.lstrip('.') # only has a meaning for the target + target = target.lstrip('~') # only has a meaning for the title + # if the first character is a tilde, don't display the module/class + # parts of the contents + if title[0:1] == '~': + title = title[1:] + dot = title.rfind('.') + if dot != -1: + title = title[dot + 1:] + # if the first character is a dot, search more specific namespaces first + # else search builtins first + if target[0:1] == '.': + target = target[1:] + refnode['refspecific'] = True + return title, target + + +def filter_meta_fields(app: Sphinx, domain: str, objtype: str, content: Element) -> None: + """Filter ``:meta:`` field from its docstring.""" + if domain != 'py': + return + + for node in content: + if isinstance(node, nodes.field_list): + fields = cast(List[nodes.field], node) + for field in fields: + field_name = cast(nodes.field_body, field[0]).astext().strip() + if field_name == 'meta' or field_name.startswith('meta '): + node.remove(field) + break + + +class PythonModuleIndex(Index): + """ + Index subclass to provide the Python module index. + """ + + name = 'modindex' + localname = _('Python Module Index') + shortname = _('modules') + + def generate(self, docnames: Iterable[str] = None + ) -> Tuple[List[Tuple[str, List[IndexEntry]]], bool]: + content = {} # type: Dict[str, List[IndexEntry]] + # list of prefixes to ignore + ignores = None # type: List[str] + ignores = self.domain.env.config['modindex_common_prefix'] # type: ignore + ignores = sorted(ignores, key=len, reverse=True) + # list of all modules, sorted by module name + modules = sorted(self.domain.data['modules'].items(), + key=lambda x: x[0].lower()) + # sort out collapsable modules + prev_modname = '' + num_toplevels = 0 + for modname, (docname, node_id, synopsis, platforms, deprecated) in modules: + if docnames and docname not in docnames: + continue + + for ignore in ignores: + if modname.startswith(ignore): + modname = modname[len(ignore):] + stripped = ignore + break + else: + stripped = '' + + # we stripped the whole module name? + if not modname: + modname, stripped = stripped, '' + + entries = content.setdefault(modname[0].lower(), []) + + package = modname.split('.')[0] + if package != modname: + # it's a submodule + if prev_modname == package: + # first submodule - make parent a group head + if entries: + last = entries[-1] + entries[-1] = IndexEntry(last[0], 1, last[2], last[3], + last[4], last[5], last[6]) + elif not prev_modname.startswith(package): + # submodule without parent in list, add dummy entry + entries.append(IndexEntry(stripped + package, 1, '', '', '', '', '')) + subtype = 2 + else: + num_toplevels += 1 + subtype = 0 + + qualifier = _('Deprecated') if deprecated else '' + entries.append(IndexEntry(stripped + modname, subtype, docname, + node_id, platforms, qualifier, synopsis)) + prev_modname = modname + + # apply heuristics when to collapse modindex at page load: + # only collapse if number of toplevel modules is larger than + # number of submodules + collapse = len(modules) - num_toplevels < num_toplevels + + # sort by first letter + sorted_content = sorted(content.items()) + + return sorted_content, collapse + + +class PythonDomain(Domain): + """Python language domain.""" + name = 'py' + label = 'Python' + object_types = { + 'function': ObjType(_('function'), 'func', 'obj'), + 'data': ObjType(_('data'), 'data', 'obj'), + 'class': ObjType(_('class'), 'class', 'exc', 'obj'), + 'exception': ObjType(_('exception'), 'exc', 'class', 'obj'), + 'method': ObjType(_('method'), 'meth', 'obj'), + 'classmethod': ObjType(_('class method'), 'meth', 'obj'), + 'staticmethod': ObjType(_('static method'), 'meth', 'obj'), + 'attribute': ObjType(_('attribute'), 'attr', 'obj'), + 'module': ObjType(_('module'), 'mod', 'obj'), + } # type: Dict[str, ObjType] + + directives = { + 'function': PyFunction, + 'data': PyVariable, + 'class': PyClasslike, + 'exception': PyClasslike, + 'method': PyMethod, + 'classmethod': PyClassMethod, + 'staticmethod': PyStaticMethod, + 'attribute': PyAttribute, + 'module': PyModule, + 'currentmodule': PyCurrentModule, + 'decorator': PyDecoratorFunction, + 'decoratormethod': PyDecoratorMethod, + } + roles = { + 'data': PyXRefRole(), + 'exc': PyXRefRole(), + 'func': PyXRefRole(fix_parens=True), + 'class': PyXRefRole(), + 'const': PyXRefRole(), + 'attr': PyXRefRole(), + 'meth': PyXRefRole(fix_parens=True), + 'mod': PyXRefRole(), + 'obj': PyXRefRole(), + } + initial_data = { + 'objects': {}, # fullname -> docname, objtype + 'modules': {}, # modname -> docname, synopsis, platform, deprecated + } # type: Dict[str, Dict[str, Tuple[Any]]] + indices = [ + PythonModuleIndex, + ] + + @property + def objects(self) -> Dict[str, ObjectEntry]: + return self.data.setdefault('objects', {}) # fullname -> ObjectEntry + + def note_object(self, name: str, objtype: str, node_id: str, location: Any = None) -> None: + """Note a python object for cross reference. + + .. versionadded:: 2.1 + """ + if name in self.objects: + other = self.objects[name] + logger.warning(__('duplicate object description of %s, ' + 'other instance in %s, use :noindex: for one of them'), + name, other.docname, location=location) + self.objects[name] = ObjectEntry(self.env.docname, node_id, objtype) + + @property + def modules(self) -> Dict[str, ModuleEntry]: + return self.data.setdefault('modules', {}) # modname -> ModuleEntry + + def note_module(self, name: str, node_id: str, synopsis: str, + platform: str, deprecated: bool) -> None: + """Note a python module for cross reference. + + .. versionadded:: 2.1 + """ + self.modules[name] = ModuleEntry(self.env.docname, node_id, + synopsis, platform, deprecated) + + def clear_doc(self, docname: str) -> None: + for fullname, obj in list(self.objects.items()): + if obj.docname == docname: + del self.objects[fullname] + for modname, mod in list(self.modules.items()): + if mod.docname == docname: + del self.modules[modname] + + def merge_domaindata(self, docnames: List[str], otherdata: Dict) -> None: + # XXX check duplicates? + for fullname, obj in otherdata['objects'].items(): + if obj.docname in docnames: + self.objects[fullname] = obj + for modname, mod in otherdata['modules'].items(): + if mod.docname in docnames: + self.modules[modname] = mod + + def find_obj(self, env: BuildEnvironment, modname: str, classname: str, + name: str, type: str, searchmode: int = 0 + ) -> List[Tuple[str, ObjectEntry]]: + """Find a Python object for "name", perhaps using the given module + and/or classname. Returns a list of (name, object entry) tuples. + """ + # skip parens + if name[-2:] == '()': + name = name[:-2] + + if not name: + return [] + + matches = [] # type: List[Tuple[str, ObjectEntry]] + + newname = None + if searchmode == 1: + if type is None: + objtypes = list(self.object_types) + else: + objtypes = self.objtypes_for_role(type) + if objtypes is not None: + if modname and classname: + fullname = modname + '.' + classname + '.' + name + if fullname in self.objects and self.objects[fullname].objtype in objtypes: + newname = fullname + if not newname: + if modname and modname + '.' + name in self.objects and \ + self.objects[modname + '.' + name].objtype in objtypes: + newname = modname + '.' + name + elif name in self.objects and self.objects[name].objtype in objtypes: + newname = name + else: + # "fuzzy" searching mode + searchname = '.' + name + matches = [(oname, self.objects[oname]) for oname in self.objects + if oname.endswith(searchname) and + self.objects[oname].objtype in objtypes] + else: + # NOTE: searching for exact match, object type is not considered + if name in self.objects: + newname = name + elif type == 'mod': + # only exact matches allowed for modules + return [] + elif classname and classname + '.' + name in self.objects: + newname = classname + '.' + name + elif modname and modname + '.' + name in self.objects: + newname = modname + '.' + name + elif modname and classname and \ + modname + '.' + classname + '.' + name in self.objects: + newname = modname + '.' + classname + '.' + name + if newname is not None: + matches.append((newname, self.objects[newname])) + return matches + + def resolve_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder, + type: str, target: str, node: pending_xref, contnode: Element + ) -> Element: + modname = node.get('py:module') + clsname = node.get('py:class') + searchmode = 1 if node.hasattr('refspecific') else 0 + matches = self.find_obj(env, modname, clsname, target, + type, searchmode) + + if not matches and type == 'attr': + # fallback to meth (for property) + matches = self.find_obj(env, modname, clsname, target, 'meth', searchmode) + + if not matches: + return None + elif len(matches) > 1: + logger.warning(__('more than one target found for cross-reference %r: %s'), + target, ', '.join(match[0] for match in matches), + type='ref', subtype='python', location=node) + name, obj = matches[0] + + if obj[2] == 'module': + return self._make_module_refnode(builder, fromdocname, name, contnode) + else: + return make_refnode(builder, fromdocname, obj[0], obj[1], contnode, name) + + def resolve_any_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder, + target: str, node: pending_xref, contnode: Element + ) -> List[Tuple[str, Element]]: + modname = node.get('py:module') + clsname = node.get('py:class') + results = [] # type: List[Tuple[str, Element]] + + # always search in "refspecific" mode with the :any: role + matches = self.find_obj(env, modname, clsname, target, None, 1) + for name, obj in matches: + if obj[2] == 'module': + results.append(('py:mod', + self._make_module_refnode(builder, fromdocname, + name, contnode))) + else: + results.append(('py:' + self.role_for_objtype(obj[2]), + make_refnode(builder, fromdocname, obj[0], obj[1], + contnode, name))) + return results + + def _make_module_refnode(self, builder: Builder, fromdocname: str, name: str, + contnode: Node) -> Element: + # get additional info for modules + module = self.modules[name] + title = name + if module.synopsis: + title += ': ' + module.synopsis + if module.deprecated: + title += _(' (deprecated)') + if module.platform: + title += ' (' + module.platform + ')' + return make_refnode(builder, fromdocname, module.docname, module.node_id, + contnode, title) + + def get_objects(self) -> Iterator[Tuple[str, str, str, str, str, int]]: + for modname, mod in self.modules.items(): + yield (modname, modname, 'module', mod.docname, mod.node_id, 0) + for refname, obj in self.objects.items(): + if obj.objtype != 'module': # modules are already handled + yield (refname, refname, obj.objtype, obj.docname, obj.node_id, 1) + + def get_full_qualified_name(self, node: Element) -> str: + modname = node.get('py:module') + clsname = node.get('py:class') + target = node.get('reftarget') + if target is None: + return None + else: + return '.'.join(filter(None, [modname, clsname, target])) + + +def builtin_resolver(app: Sphinx, env: BuildEnvironment, + node: pending_xref, contnode: Element) -> Element: + """Do not emit nitpicky warnings for built-in types.""" + def istyping(s: str) -> bool: + if s.startswith('typing.'): + s = s.split('.', 1)[1] + + return s in typing.__all__ # type: ignore + + if node.get('refdomain') != 'py': + return None + elif node.get('reftype') in ('class', 'obj') and node.get('reftarget') == 'None': + return contnode + elif node.get('reftype') in ('class', 'exc'): + reftarget = node.get('reftarget') + if inspect.isclass(getattr(builtins, reftarget, None)): + # built-in class + return contnode + elif istyping(reftarget): + # typing class + return contnode + + return None + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.setup_extension('sphinx.directives') + + app.add_domain(PythonDomain) + app.connect('object-description-transform', filter_meta_fields) + app.connect('missing-reference', builtin_resolver, priority=900) + + return { + 'version': 'builtin', + 'env_version': 2, + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/domains/rst.py b/sphinx/sphinx/domains/rst.py new file mode 100644 index 0000000..e25b319 --- /dev/null +++ b/sphinx/sphinx/domains/rst.py @@ -0,0 +1,285 @@ +""" + sphinx.domains.rst + ~~~~~~~~~~~~~~~~~~ + + The reStructuredText domain. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re +from typing import Any, Dict, Iterator, List, Tuple +from typing import cast + +from docutils.nodes import Element +from docutils.parsers.rst import directives + +from sphinx import addnodes +from sphinx.addnodes import desc_signature, pending_xref +from sphinx.application import Sphinx +from sphinx.builders import Builder +from sphinx.directives import ObjectDescription +from sphinx.domains import Domain, ObjType +from sphinx.environment import BuildEnvironment +from sphinx.locale import _, __ +from sphinx.roles import XRefRole +from sphinx.util import logging +from sphinx.util.nodes import make_id, make_refnode + + +logger = logging.getLogger(__name__) + +dir_sig_re = re.compile(r'\.\. (.+?)::(.*)$') + + +class ReSTMarkup(ObjectDescription): + """ + Description of generic reST markup. + """ + + def add_target_and_index(self, name: str, sig: str, signode: desc_signature) -> None: + node_id = make_id(self.env, self.state.document, self.objtype, name) + signode['ids'].append(node_id) + + # Assign old styled node_id not to break old hyperlinks (if possible) + # Note: Will be removed in Sphinx-5.0 (RemovedInSphinx50Warning) + old_node_id = self.make_old_id(name) + if old_node_id not in self.state.document.ids and old_node_id not in signode['ids']: + signode['ids'].append(old_node_id) + + self.state.document.note_explicit_target(signode) + + domain = cast(ReSTDomain, self.env.get_domain('rst')) + domain.note_object(self.objtype, name, node_id, location=signode) + + indextext = self.get_index_text(self.objtype, name) + if indextext: + self.indexnode['entries'].append(('single', indextext, node_id, '', None)) + + def get_index_text(self, objectname: str, name: str) -> str: + return '' + + def make_old_id(self, name: str) -> str: + """Generate old styled node_id for reST markups. + + .. note:: Old Styled node_id was used until Sphinx-3.0. + This will be removed in Sphinx-5.0. + """ + return self.objtype + '-' + name + + +def parse_directive(d: str) -> Tuple[str, str]: + """Parse a directive signature. + + Returns (directive, arguments) string tuple. If no arguments are given, + returns (directive, ''). + """ + dir = d.strip() + if not dir.startswith('.'): + # Assume it is a directive without syntax + return (dir, '') + m = dir_sig_re.match(dir) + if not m: + return (dir, '') + parsed_dir, parsed_args = m.groups() + if parsed_args.strip(): + return (parsed_dir.strip(), ' ' + parsed_args.strip()) + else: + return (parsed_dir.strip(), '') + + +class ReSTDirective(ReSTMarkup): + """ + Description of a reST directive. + """ + def handle_signature(self, sig: str, signode: desc_signature) -> str: + name, args = parse_directive(sig) + desc_name = '.. %s::' % name + signode += addnodes.desc_name(desc_name, desc_name) + if len(args) > 0: + signode += addnodes.desc_addname(args, args) + return name + + def get_index_text(self, objectname: str, name: str) -> str: + return _('%s (directive)') % name + + def before_content(self) -> None: + if self.names: + directives = self.env.ref_context.setdefault('rst:directives', []) + directives.append(self.names[0]) + + def after_content(self) -> None: + directives = self.env.ref_context.setdefault('rst:directives', []) + if directives: + directives.pop() + + +class ReSTDirectiveOption(ReSTMarkup): + """ + Description of an option for reST directive. + """ + option_spec = ReSTMarkup.option_spec.copy() + option_spec.update({ + 'type': directives.unchanged, + }) + + def handle_signature(self, sig: str, signode: desc_signature) -> str: + try: + name, argument = re.split(r'\s*:\s+', sig.strip(), 1) + except ValueError: + name, argument = sig, None + + signode += addnodes.desc_name(':%s:' % name, ':%s:' % name) + if argument: + signode += addnodes.desc_annotation(' ' + argument, ' ' + argument) + if self.options.get('type'): + text = ' (%s)' % self.options['type'] + signode += addnodes.desc_annotation(text, text) + return name + + def add_target_and_index(self, name: str, sig: str, signode: desc_signature) -> None: + domain = cast(ReSTDomain, self.env.get_domain('rst')) + + directive_name = self.current_directive + if directive_name: + prefix = '-'.join([self.objtype, directive_name]) + objname = ':'.join([directive_name, name]) + else: + prefix = self.objtype + objname = name + + node_id = make_id(self.env, self.state.document, prefix, name) + signode['ids'].append(node_id) + + # Assign old styled node_id not to break old hyperlinks (if possible) + # Note: Will be removed in Sphinx-5.0 (RemovedInSphinx50Warning) + old_node_id = self.make_old_id(name) + if old_node_id not in self.state.document.ids and old_node_id not in signode['ids']: + signode['ids'].append(old_node_id) + + self.state.document.note_explicit_target(signode) + domain.note_object(self.objtype, objname, node_id, location=signode) + + if directive_name: + key = name[0].upper() + pair = [_('%s (directive)') % directive_name, + _(':%s: (directive option)') % name] + self.indexnode['entries'].append(('pair', '; '.join(pair), node_id, '', key)) + else: + key = name[0].upper() + text = _(':%s: (directive option)') % name + self.indexnode['entries'].append(('single', text, node_id, '', key)) + + @property + def current_directive(self) -> str: + directives = self.env.ref_context.get('rst:directives') + if directives: + return directives[-1] + else: + return '' + + def make_old_id(self, name: str) -> str: + """Generate old styled node_id for directive options. + + .. note:: Old Styled node_id was used until Sphinx-3.0. + This will be removed in Sphinx-5.0. + """ + return '-'.join([self.objtype, self.current_directive, name]) + + +class ReSTRole(ReSTMarkup): + """ + Description of a reST role. + """ + def handle_signature(self, sig: str, signode: desc_signature) -> str: + signode += addnodes.desc_name(':%s:' % sig, ':%s:' % sig) + return sig + + def get_index_text(self, objectname: str, name: str) -> str: + return _('%s (role)') % name + + +class ReSTDomain(Domain): + """ReStructuredText domain.""" + name = 'rst' + label = 'reStructuredText' + + object_types = { + 'directive': ObjType(_('directive'), 'dir'), + 'directive:option': ObjType(_('directive-option'), 'dir'), + 'role': ObjType(_('role'), 'role'), + } + directives = { + 'directive': ReSTDirective, + 'directive:option': ReSTDirectiveOption, + 'role': ReSTRole, + } + roles = { + 'dir': XRefRole(), + 'role': XRefRole(), + } + initial_data = { + 'objects': {}, # fullname -> docname, objtype + } # type: Dict[str, Dict[Tuple[str, str], str]] + + @property + def objects(self) -> Dict[Tuple[str, str], Tuple[str, str]]: + return self.data.setdefault('objects', {}) # (objtype, fullname) -> (docname, node_id) + + def note_object(self, objtype: str, name: str, node_id: str, location: Any = None) -> None: + if (objtype, name) in self.objects: + docname, node_id = self.objects[objtype, name] + logger.warning(__('duplicate description of %s %s, other instance in %s') % + (objtype, name, docname), location=location) + + self.objects[objtype, name] = (self.env.docname, node_id) + + def clear_doc(self, docname: str) -> None: + for (typ, name), (doc, node_id) in list(self.objects.items()): + if doc == docname: + del self.objects[typ, name] + + def merge_domaindata(self, docnames: List[str], otherdata: Dict) -> None: + # XXX check duplicates + for (typ, name), (doc, node_id) in otherdata['objects'].items(): + if doc in docnames: + self.objects[typ, name] = (doc, node_id) + + def resolve_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder, + typ: str, target: str, node: pending_xref, contnode: Element + ) -> Element: + objtypes = self.objtypes_for_role(typ) + for objtype in objtypes: + todocname, node_id = self.objects.get((objtype, target), (None, None)) + if todocname: + return make_refnode(builder, fromdocname, todocname, node_id, + contnode, target + ' ' + objtype) + return None + + def resolve_any_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder, + target: str, node: pending_xref, contnode: Element + ) -> List[Tuple[str, Element]]: + results = [] # type: List[Tuple[str, Element]] + for objtype in self.object_types: + todocname, node_id = self.objects.get((objtype, target), (None, None)) + if todocname: + results.append(('rst:' + self.role_for_objtype(objtype), + make_refnode(builder, fromdocname, todocname, node_id, + contnode, target + ' ' + objtype))) + return results + + def get_objects(self) -> Iterator[Tuple[str, str, str, str, str, int]]: + for (typ, name), (docname, node_id) in self.data['objects'].items(): + yield name, name, typ, docname, node_id, 1 + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_domain(ReSTDomain) + + return { + 'version': 'builtin', + 'env_version': 2, + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/domains/std.py b/sphinx/sphinx/domains/std.py new file mode 100644 index 0000000..52546fb --- /dev/null +++ b/sphinx/sphinx/domains/std.py @@ -0,0 +1,1080 @@ +""" + sphinx.domains.std + ~~~~~~~~~~~~~~~~~~ + + The standard domain. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re +import unicodedata +import warnings +from copy import copy +from typing import Any, Callable, Dict, Iterable, Iterator, List, Optional, Tuple, Union +from typing import cast + +from docutils import nodes +from docutils.nodes import Element, Node, system_message +from docutils.parsers.rst import Directive, directives +from docutils.statemachine import StringList + +from sphinx import addnodes +from sphinx.addnodes import desc_signature, pending_xref +from sphinx.deprecation import RemovedInSphinx40Warning, RemovedInSphinx50Warning +from sphinx.directives import ObjectDescription +from sphinx.domains import Domain, ObjType +from sphinx.locale import _, __ +from sphinx.roles import XRefRole +from sphinx.util import ws_re, logging, docname_join +from sphinx.util.docutils import SphinxDirective +from sphinx.util.nodes import clean_astext, make_id, make_refnode +from sphinx.util.typing import RoleFunction + +if False: + # For type annotation + from typing import Type # for python3.5.1 + from sphinx.application import Sphinx + from sphinx.builders import Builder + from sphinx.environment import BuildEnvironment + +logger = logging.getLogger(__name__) + + +# RE for option descriptions +option_desc_re = re.compile(r'((?:/|--|-|\+)?[^\s=]+)(=?\s*.*)') +# RE for grammar tokens +token_re = re.compile(r'`(\w+)`', re.U) + + +class GenericObject(ObjectDescription): + """ + A generic x-ref directive registered with Sphinx.add_object_type(). + """ + indextemplate = '' + parse_node = None # type: Callable[[GenericObject, BuildEnvironment, str, desc_signature], str] # NOQA + + def handle_signature(self, sig: str, signode: desc_signature) -> str: + if self.parse_node: + name = self.parse_node(self.env, sig, signode) + else: + signode.clear() + signode += addnodes.desc_name(sig, sig) + # normalize whitespace like XRefRole does + name = ws_re.sub(' ', sig) + return name + + def add_target_and_index(self, name: str, sig: str, signode: desc_signature) -> None: + node_id = make_id(self.env, self.state.document, self.objtype, name) + signode['ids'].append(node_id) + + # Assign old styled node_id not to break old hyperlinks (if possible) + # Note: Will be removed in Sphinx-5.0 (RemovedInSphinx50Warning) + old_node_id = self.make_old_id(name) + if old_node_id not in self.state.document.ids and old_node_id not in signode['ids']: + signode['ids'].append(old_node_id) + + self.state.document.note_explicit_target(signode) + + if self.indextemplate: + colon = self.indextemplate.find(':') + if colon != -1: + indextype = self.indextemplate[:colon].strip() + indexentry = self.indextemplate[colon + 1:].strip() % (name,) + else: + indextype = 'single' + indexentry = self.indextemplate % (name,) + self.indexnode['entries'].append((indextype, indexentry, node_id, '', None)) + + std = cast(StandardDomain, self.env.get_domain('std')) + std.note_object(self.objtype, name, node_id, location=signode) + + def make_old_id(self, name: str) -> str: + """Generate old styled node_id for generic objects. + + .. note:: Old Styled node_id was used until Sphinx-3.0. + This will be removed in Sphinx-5.0. + """ + return self.objtype + '-' + name + + +class EnvVar(GenericObject): + indextemplate = _('environment variable; %s') + + +class EnvVarXRefRole(XRefRole): + """ + Cross-referencing role for environment variables (adds an index entry). + """ + + def result_nodes(self, document: nodes.document, env: "BuildEnvironment", node: Element, + is_ref: bool) -> Tuple[List[Node], List[system_message]]: + if not is_ref: + return [node], [] + varname = node['reftarget'] + tgtid = 'index-%s' % env.new_serialno('index') + indexnode = addnodes.index() + indexnode['entries'] = [ + ('single', varname, tgtid, '', None), + ('single', _('environment variable; %s') % varname, tgtid, '', None) + ] + targetnode = nodes.target('', '', ids=[tgtid]) + document.note_explicit_target(targetnode) + return [indexnode, targetnode, node], [] + + +class Target(SphinxDirective): + """ + Generic target for user-defined cross-reference types. + """ + indextemplate = '' + + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + # normalize whitespace in fullname like XRefRole does + fullname = ws_re.sub(' ', self.arguments[0].strip()) + node_id = make_id(self.env, self.state.document, self.name, fullname) + node = nodes.target('', '', ids=[node_id]) + self.set_source_info(node) + + # Assign old styled node_id not to break old hyperlinks (if possible) + # Note: Will be removed in Sphinx-5.0 (RemovedInSphinx50Warning) + old_node_id = self.make_old_id(fullname) + if old_node_id not in self.state.document.ids and old_node_id not in node['ids']: + node['ids'].append(old_node_id) + + self.state.document.note_explicit_target(node) + ret = [node] # type: List[Node] + if self.indextemplate: + indexentry = self.indextemplate % (fullname,) + indextype = 'single' + colon = indexentry.find(':') + if colon != -1: + indextype = indexentry[:colon].strip() + indexentry = indexentry[colon + 1:].strip() + inode = addnodes.index(entries=[(indextype, indexentry, node_id, '', None)]) + ret.insert(0, inode) + name = self.name + if ':' in self.name: + _, name = self.name.split(':', 1) + + std = cast(StandardDomain, self.env.get_domain('std')) + std.note_object(name, fullname, node_id, location=node) + + return ret + + def make_old_id(self, name: str) -> str: + """Generate old styled node_id for targets. + + .. note:: Old Styled node_id was used until Sphinx-3.0. + This will be removed in Sphinx-5.0. + """ + return self.name + '-' + name + + +class Cmdoption(ObjectDescription): + """ + Description of a command-line option (.. option). + """ + + def handle_signature(self, sig: str, signode: desc_signature) -> str: + """Transform an option description into RST nodes.""" + count = 0 + firstname = '' + for potential_option in sig.split(', '): + potential_option = potential_option.strip() + m = option_desc_re.match(potential_option) + if not m: + logger.warning(__('Malformed option description %r, should ' + 'look like "opt", "-opt args", "--opt args", ' + '"/opt args" or "+opt args"'), potential_option, + location=signode) + continue + optname, args = m.groups() + if count: + signode += addnodes.desc_addname(', ', ', ') + signode += addnodes.desc_name(optname, optname) + signode += addnodes.desc_addname(args, args) + if not count: + firstname = optname + signode['allnames'] = [optname] + else: + signode['allnames'].append(optname) + count += 1 + if not firstname: + raise ValueError + return firstname + + def add_target_and_index(self, firstname: str, sig: str, signode: desc_signature) -> None: + currprogram = self.env.ref_context.get('std:program') + for optname in signode.get('allnames', []): + prefixes = ['cmdoption'] + if currprogram: + prefixes.append(currprogram) + if not optname.startswith(('-', '/')): + prefixes.append('arg') + prefix = '-'.join(prefixes) + node_id = make_id(self.env, self.state.document, prefix, optname) + signode['ids'].append(node_id) + + self.state.document.note_explicit_target(signode) + + domain = cast(StandardDomain, self.env.get_domain('std')) + for optname in signode.get('allnames', []): + domain.add_program_option(currprogram, optname, + self.env.docname, signode['ids'][0]) + + # create an index entry + if currprogram: + descr = _('%s command line option') % currprogram + else: + descr = _('command line option') + for option in sig.split(', '): + entry = '; '.join([descr, option]) + self.indexnode['entries'].append(('pair', entry, signode['ids'][0], '', None)) + + +class Program(SphinxDirective): + """ + Directive to name the program for which options are documented. + """ + + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + program = ws_re.sub('-', self.arguments[0].strip()) + if program == 'None': + self.env.ref_context.pop('std:program', None) + else: + self.env.ref_context['std:program'] = program + return [] + + +class OptionXRefRole(XRefRole): + def process_link(self, env: "BuildEnvironment", refnode: Element, has_explicit_title: bool, + title: str, target: str) -> Tuple[str, str]: + refnode['std:program'] = env.ref_context.get('std:program') + return title, target + + +def split_term_classifiers(line: str) -> List[Optional[str]]: + # split line into a term and classifiers. if no classifier, None is used.. + parts = re.split(' +: +', line) + [None] + return parts + + +def make_glossary_term(env: "BuildEnvironment", textnodes: Iterable[Node], index_key: str, + source: str, lineno: int, node_id: str = None, + document: nodes.document = None) -> nodes.term: + # get a text-only representation of the term and register it + # as a cross-reference target + term = nodes.term('', '', *textnodes) + term.source = source + term.line = lineno + termtext = term.astext() + + if node_id: + # node_id is given from outside (mainly i18n module), use it forcedly + term['ids'].append(node_id) + elif document: + node_id = make_id(env, document, 'term', termtext) + term['ids'].append(node_id) + document.note_explicit_target(term) + else: + warnings.warn('make_glossary_term() expects document is passed as an argument.', + RemovedInSphinx40Warning) + gloss_entries = env.temp_data.setdefault('gloss_entries', set()) + node_id = nodes.make_id('term-' + termtext) + if node_id == 'term': + # "term" is not good for node_id. Generate it by sequence number instead. + node_id = 'term-%d' % env.new_serialno('glossary') + + while node_id in gloss_entries: + node_id = 'term-%d' % env.new_serialno('glossary') + gloss_entries.add(node_id) + term['ids'].append(node_id) + + std = cast(StandardDomain, env.get_domain('std')) + std.note_object('term', termtext, node_id, location=term) + + # add an index entry too + indexnode = addnodes.index() + indexnode['entries'] = [('single', termtext, node_id, 'main', index_key)] + indexnode.source, indexnode.line = term.source, term.line + term.append(indexnode) + + return term + + +class Glossary(SphinxDirective): + """ + Directive to create a glossary with cross-reference targets for :term: + roles. + """ + + has_content = True + required_arguments = 0 + optional_arguments = 0 + final_argument_whitespace = False + option_spec = { + 'sorted': directives.flag, + } + + def run(self) -> List[Node]: + node = addnodes.glossary() + node.document = self.state.document + + # This directive implements a custom format of the reST definition list + # that allows multiple lines of terms before the definition. This is + # easy to parse since we know that the contents of the glossary *must + # be* a definition list. + + # first, collect single entries + entries = [] # type: List[Tuple[List[Tuple[str, str, int]], StringList]] + in_definition = True + in_comment = False + was_empty = True + messages = [] # type: List[Node] + for line, (source, lineno) in zip(self.content, self.content.items): + # empty line -> add to last definition + if not line: + if in_definition and entries: + entries[-1][1].append('', source, lineno) + was_empty = True + continue + # unindented line -> a term + if line and not line[0].isspace(): + # enable comments + if line.startswith('.. '): + in_comment = True + continue + else: + in_comment = False + + # first term of definition + if in_definition: + if not was_empty: + messages.append(self.state.reporter.warning( + _('glossary term must be preceded by empty line'), + source=source, line=lineno)) + entries.append(([(line, source, lineno)], StringList())) + in_definition = False + # second term and following + else: + if was_empty: + messages.append(self.state.reporter.warning( + _('glossary terms must not be separated by empty lines'), + source=source, line=lineno)) + if entries: + entries[-1][0].append((line, source, lineno)) + else: + messages.append(self.state.reporter.warning( + _('glossary seems to be misformatted, check indentation'), + source=source, line=lineno)) + elif in_comment: + pass + else: + if not in_definition: + # first line of definition, determines indentation + in_definition = True + indent_len = len(line) - len(line.lstrip()) + if entries: + entries[-1][1].append(line[indent_len:], source, lineno) + else: + messages.append(self.state.reporter.warning( + _('glossary seems to be misformatted, check indentation'), + source=source, line=lineno)) + was_empty = False + + # now, parse all the entries into a big definition list + items = [] + for terms, definition in entries: + termtexts = [] # type: List[str] + termnodes = [] # type: List[Node] + system_messages = [] # type: List[Node] + for line, source, lineno in terms: + parts = split_term_classifiers(line) + # parse the term with inline markup + # classifiers (parts[1:]) will not be shown on doctree + textnodes, sysmsg = self.state.inline_text(parts[0], lineno) + + # use first classifier as a index key + term = make_glossary_term(self.env, textnodes, parts[1], source, lineno, + document=self.state.document) + term.rawsource = line + system_messages.extend(sysmsg) + termtexts.append(term.astext()) + termnodes.append(term) + + termnodes.extend(system_messages) + + defnode = nodes.definition() + if definition: + self.state.nested_parse(definition, definition.items[0][1], + defnode) + termnodes.append(defnode) + items.append((termtexts, + nodes.definition_list_item('', *termnodes))) + + if 'sorted' in self.options: + items.sort(key=lambda x: + unicodedata.normalize('NFD', x[0][0].lower())) + + dlist = nodes.definition_list() + dlist['classes'].append('glossary') + dlist.extend(item[1] for item in items) + node += dlist + return messages + [node] + + +def token_xrefs(text: str, productionGroup: str = '') -> List[Node]: + if len(productionGroup) != 0: + productionGroup += ':' + retnodes = [] # type: List[Node] + pos = 0 + for m in token_re.finditer(text): + if m.start() > pos: + txt = text[pos:m.start()] + retnodes.append(nodes.Text(txt, txt)) + refnode = pending_xref(m.group(1), reftype='token', refdomain='std', + reftarget=productionGroup + m.group(1)) + refnode += nodes.literal(m.group(1), m.group(1), classes=['xref']) + retnodes.append(refnode) + pos = m.end() + if pos < len(text): + retnodes.append(nodes.Text(text[pos:], text[pos:])) + return retnodes + + +class ProductionList(SphinxDirective): + """ + Directive to list grammar productions. + """ + + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + domain = cast(StandardDomain, self.env.get_domain('std')) + node = addnodes.productionlist() # type: Element + self.set_source_info(node) + # The backslash handling is from ObjectDescription.get_signatures + nl_escape_re = re.compile(r'\\\n') + lines = nl_escape_re.sub('', self.arguments[0]).split('\n') + + productionGroup = "" + i = 0 + for rule in lines: + if i == 0 and ':' not in rule: + productionGroup = rule.strip() + continue + i += 1 + try: + name, tokens = rule.split(':', 1) + except ValueError: + break + subnode = addnodes.production(rule) + subnode['tokenname'] = name.strip() + if subnode['tokenname']: + prefix = 'grammar-token-%s' % productionGroup + node_id = make_id(self.env, self.state.document, prefix, name) + subnode['ids'].append(node_id) + + # Assign old styled node_id not to break old hyperlinks (if possible) + # Note: Will be removed in Sphinx-5.0 (RemovedInSphinx50Warning) + old_node_id = self.make_old_id(name) + if (old_node_id not in self.state.document.ids and + old_node_id not in subnode['ids']): + subnode['ids'].append(old_node_id) + + self.state.document.note_implicit_target(subnode, subnode) + + if len(productionGroup) != 0: + objName = "%s:%s" % (productionGroup, name) + else: + objName = name + domain.note_object('token', objName, node_id, location=node) + subnode.extend(token_xrefs(tokens, productionGroup)) + node.append(subnode) + return [node] + + def make_old_id(self, token: str) -> str: + """Generate old styled node_id for tokens. + + .. note:: Old Styled node_id was used until Sphinx-3.0. + This will be removed in Sphinx-5.0. + """ + return nodes.make_id('grammar-token-' + token) + + +class TokenXRefRole(XRefRole): + def process_link(self, env: "BuildEnvironment", refnode: Element, has_explicit_title: bool, + title: str, target: str) -> Tuple[str, str]: + target = target.lstrip('~') # a title-specific thing + if not self.has_explicit_title and title[0] == '~': + if ':' in title: + _, title = title.split(':') + else: + title = title[1:] + return title, target + + +class StandardDomain(Domain): + """ + Domain for all objects that don't fit into another domain or are added + via the application interface. + """ + + name = 'std' + label = 'Default' + + object_types = { + 'term': ObjType(_('glossary term'), 'term', searchprio=-1), + 'token': ObjType(_('grammar token'), 'token', searchprio=-1), + 'label': ObjType(_('reference label'), 'ref', 'keyword', + searchprio=-1), + 'envvar': ObjType(_('environment variable'), 'envvar'), + 'cmdoption': ObjType(_('program option'), 'option'), + 'doc': ObjType(_('document'), 'doc', searchprio=-1) + } # type: Dict[str, ObjType] + + directives = { + 'program': Program, + 'cmdoption': Cmdoption, # old name for backwards compatibility + 'option': Cmdoption, + 'envvar': EnvVar, + 'glossary': Glossary, + 'productionlist': ProductionList, + } # type: Dict[str, Type[Directive]] + roles = { + 'option': OptionXRefRole(warn_dangling=True), + 'envvar': EnvVarXRefRole(), + # links to tokens in grammar productions + 'token': TokenXRefRole(), + # links to terms in glossary + 'term': XRefRole(innernodeclass=nodes.inline, + warn_dangling=True), + # links to headings or arbitrary labels + 'ref': XRefRole(lowercase=True, innernodeclass=nodes.inline, + warn_dangling=True), + # links to labels of numbered figures, tables and code-blocks + 'numref': XRefRole(lowercase=True, + warn_dangling=True), + # links to labels, without a different title + 'keyword': XRefRole(warn_dangling=True), + # links to documents + 'doc': XRefRole(warn_dangling=True, innernodeclass=nodes.inline), + } # type: Dict[str, Union[RoleFunction, XRefRole]] + + initial_data = { + 'progoptions': {}, # (program, name) -> docname, labelid + 'objects': {}, # (type, name) -> docname, labelid + 'labels': { # labelname -> docname, labelid, sectionname + 'genindex': ('genindex', '', _('Index')), + 'modindex': ('py-modindex', '', _('Module Index')), + 'search': ('search', '', _('Search Page')), + }, + 'anonlabels': { # labelname -> docname, labelid + 'genindex': ('genindex', ''), + 'modindex': ('py-modindex', ''), + 'search': ('search', ''), + }, + } + + dangling_warnings = { + 'term': 'term not in glossary: %(target)s', + 'ref': 'undefined label: %(target)s (if the link has no caption ' + 'the label must precede a section header)', + 'numref': 'undefined label: %(target)s', + 'keyword': 'unknown keyword: %(target)s', + 'doc': 'unknown document: %(target)s', + 'option': 'unknown option: %(target)s', + } + + enumerable_nodes = { # node_class -> (figtype, title_getter) + nodes.figure: ('figure', None), + nodes.table: ('table', None), + nodes.container: ('code-block', None), + } # type: Dict[Type[Node], Tuple[str, Callable]] + + def __init__(self, env: "BuildEnvironment") -> None: + super().__init__(env) + + # set up enumerable nodes + self.enumerable_nodes = copy(self.enumerable_nodes) # create a copy for this instance + for node, settings in env.app.registry.enumerable_nodes.items(): + self.enumerable_nodes[node] = settings + + def note_hyperlink_target(self, name: str, docname: str, node_id: str, + title: str = '') -> None: + """Add a hyperlink target for cross reference. + + .. warning:: + + This is only for internal use. Please don't use this from your extension. + ``document.note_explicit_target()`` or ``note_implicit_target()`` are recommended to + add a hyperlink target to the document. + + This only adds a hyperlink target to the StandardDomain. And this does not add a + node_id to node. Therefore, it is very fragile to calling this without + understanding hyperlink target framework in both docutils and Sphinx. + + .. versionadded:: 3.0 + """ + if name in self.anonlabels and self.anonlabels[name] != (docname, node_id): + logger.warning(__('duplicate label %s, other instance in %s'), + name, self.env.doc2path(self.anonlabels[name][0])) + + self.anonlabels[name] = (docname, node_id) + if title: + self.labels[name] = (docname, node_id, title) + + @property + def objects(self) -> Dict[Tuple[str, str], Tuple[str, str]]: + return self.data.setdefault('objects', {}) # (objtype, name) -> docname, labelid + + def note_object(self, objtype: str, name: str, labelid: str, location: Any = None + ) -> None: + """Note a generic object for cross reference. + + .. versionadded:: 3.0 + """ + if (objtype, name) in self.objects: + docname = self.objects[objtype, name][0] + logger.warning(__('duplicate %s description of %s, other instance in %s'), + objtype, name, docname, location=location) + self.objects[objtype, name] = (self.env.docname, labelid) + + def add_object(self, objtype: str, name: str, docname: str, labelid: str) -> None: + warnings.warn('StandardDomain.add_object() is deprecated.', + RemovedInSphinx50Warning) + self.objects[objtype, name] = (docname, labelid) + + @property + def progoptions(self) -> Dict[Tuple[str, str], Tuple[str, str]]: + return self.data.setdefault('progoptions', {}) # (program, name) -> docname, labelid + + @property + def labels(self) -> Dict[str, Tuple[str, str, str]]: + return self.data.setdefault('labels', {}) # labelname -> docname, labelid, sectionname + + @property + def anonlabels(self) -> Dict[str, Tuple[str, str]]: + return self.data.setdefault('anonlabels', {}) # labelname -> docname, labelid + + def clear_doc(self, docname: str) -> None: + key = None # type: Any + for key, (fn, _l) in list(self.progoptions.items()): + if fn == docname: + del self.progoptions[key] + for key, (fn, _l) in list(self.objects.items()): + if fn == docname: + del self.objects[key] + for key, (fn, _l, _l) in list(self.labels.items()): + if fn == docname: + del self.labels[key] + for key, (fn, _l) in list(self.anonlabels.items()): + if fn == docname: + del self.anonlabels[key] + + def merge_domaindata(self, docnames: List[str], otherdata: Dict) -> None: + # XXX duplicates? + for key, data in otherdata['progoptions'].items(): + if data[0] in docnames: + self.progoptions[key] = data + for key, data in otherdata['objects'].items(): + if data[0] in docnames: + self.objects[key] = data + for key, data in otherdata['labels'].items(): + if data[0] in docnames: + self.labels[key] = data + for key, data in otherdata['anonlabels'].items(): + if data[0] in docnames: + self.anonlabels[key] = data + + def process_doc(self, env: "BuildEnvironment", docname: str, document: nodes.document) -> None: # NOQA + for name, explicit in document.nametypes.items(): + if not explicit: + continue + labelid = document.nameids[name] + if labelid is None: + continue + node = document.ids[labelid] + if isinstance(node, nodes.target) and 'refid' in node: + # indirect hyperlink targets + node = document.ids.get(node['refid']) + labelid = node['names'][0] + if (node.tagname == 'footnote' or + 'refuri' in node or + node.tagname.startswith('desc_')): + # ignore footnote labels, labels automatically generated from a + # link and object descriptions + continue + if name in self.labels: + logger.warning(__('duplicate label %s, other instance in %s'), + name, env.doc2path(self.labels[name][0]), + location=node) + self.anonlabels[name] = docname, labelid + if node.tagname in ('section', 'rubric'): + title = cast(nodes.title, node[0]) + sectname = clean_astext(title) + elif self.is_enumerable_node(node): + sectname = self.get_numfig_title(node) + if not sectname: + continue + else: + toctree = next(iter(node.traverse(addnodes.toctree)), None) + if toctree and toctree.get('caption'): + sectname = toctree.get('caption') + else: + # anonymous-only labels + continue + self.labels[name] = docname, labelid, sectname + + def add_program_option(self, program: str, name: str, docname: str, labelid: str) -> None: + self.progoptions[program, name] = (docname, labelid) + + def build_reference_node(self, fromdocname: str, builder: "Builder", docname: str, + labelid: str, sectname: str, rolename: str, **options: Any + ) -> Element: + nodeclass = options.pop('nodeclass', nodes.reference) + newnode = nodeclass('', '', internal=True, **options) + innernode = nodes.inline(sectname, sectname) + if innernode.get('classes') is not None: + innernode['classes'].append('std') + innernode['classes'].append('std-' + rolename) + if docname == fromdocname: + newnode['refid'] = labelid + else: + # set more info in contnode; in case the + # get_relative_uri call raises NoUri, + # the builder will then have to resolve these + contnode = pending_xref('') + contnode['refdocname'] = docname + contnode['refsectname'] = sectname + newnode['refuri'] = builder.get_relative_uri( + fromdocname, docname) + if labelid: + newnode['refuri'] += '#' + labelid + newnode.append(innernode) + return newnode + + def resolve_xref(self, env: "BuildEnvironment", fromdocname: str, builder: "Builder", + typ: str, target: str, node: pending_xref, contnode: Element) -> Element: + if typ == 'ref': + resolver = self._resolve_ref_xref + elif typ == 'numref': + resolver = self._resolve_numref_xref + elif typ == 'keyword': + resolver = self._resolve_keyword_xref + elif typ == 'doc': + resolver = self._resolve_doc_xref + elif typ == 'option': + resolver = self._resolve_option_xref + elif typ == 'citation': + warnings.warn('pending_xref(domain=std, type=citation) is deprecated: %r' % node, + RemovedInSphinx40Warning) + domain = env.get_domain('citation') + return domain.resolve_xref(env, fromdocname, builder, typ, target, node, contnode) + else: + resolver = self._resolve_obj_xref + + return resolver(env, fromdocname, builder, typ, target, node, contnode) + + def _resolve_ref_xref(self, env: "BuildEnvironment", fromdocname: str, + builder: "Builder", typ: str, target: str, node: pending_xref, + contnode: Element) -> Element: + if node['refexplicit']: + # reference to anonymous label; the reference uses + # the supplied link caption + docname, labelid = self.anonlabels.get(target, ('', '')) + sectname = node.astext() + else: + # reference to named label; the final node will + # contain the section name after the label + docname, labelid, sectname = self.labels.get(target, ('', '', '')) + if not docname: + return None + + return self.build_reference_node(fromdocname, builder, + docname, labelid, sectname, 'ref') + + def _resolve_numref_xref(self, env: "BuildEnvironment", fromdocname: str, + builder: "Builder", typ: str, target: str, + node: pending_xref, contnode: Element) -> Element: + if target in self.labels: + docname, labelid, figname = self.labels.get(target, ('', '', '')) + else: + docname, labelid = self.anonlabels.get(target, ('', '')) + figname = None + + if not docname: + return None + + target_node = env.get_doctree(docname).ids.get(labelid) + figtype = self.get_enumerable_node_type(target_node) + if figtype is None: + return None + + if figtype != 'section' and env.config.numfig is False: + logger.warning(__('numfig is disabled. :numref: is ignored.'), location=node) + return contnode + + try: + fignumber = self.get_fignumber(env, builder, figtype, docname, target_node) + if fignumber is None: + return contnode + except ValueError: + logger.warning(__("no number is assigned for %s: %s"), figtype, labelid, + location=node) + return contnode + + try: + if node['refexplicit']: + title = contnode.astext() + else: + title = env.config.numfig_format.get(figtype, '') + + if figname is None and '{name}' in title: + logger.warning(__('the link has no caption: %s'), title, location=node) + return contnode + else: + fignum = '.'.join(map(str, fignumber)) + if '{name}' in title or 'number' in title: + # new style format (cf. "Fig.{number}") + if figname: + newtitle = title.format(name=figname, number=fignum) + else: + newtitle = title.format(number=fignum) + else: + # old style format (cf. "Fig.%s") + newtitle = title % fignum + except KeyError as exc: + logger.warning(__('invalid numfig_format: %s (%r)'), title, exc, location=node) + return contnode + except TypeError: + logger.warning(__('invalid numfig_format: %s'), title, location=node) + return contnode + + return self.build_reference_node(fromdocname, builder, + docname, labelid, newtitle, 'numref', + nodeclass=addnodes.number_reference, + title=title) + + def _resolve_keyword_xref(self, env: "BuildEnvironment", fromdocname: str, + builder: "Builder", typ: str, target: str, + node: pending_xref, contnode: Element) -> Element: + # keywords are oddballs: they are referenced by named labels + docname, labelid, _ = self.labels.get(target, ('', '', '')) + if not docname: + return None + return make_refnode(builder, fromdocname, docname, + labelid, contnode) + + def _resolve_doc_xref(self, env: "BuildEnvironment", fromdocname: str, + builder: "Builder", typ: str, target: str, + node: pending_xref, contnode: Element) -> Element: + # directly reference to document by source name; can be absolute or relative + refdoc = node.get('refdoc', fromdocname) + docname = docname_join(refdoc, node['reftarget']) + if docname not in env.all_docs: + return None + else: + if node['refexplicit']: + # reference with explicit title + caption = node.astext() + else: + caption = clean_astext(env.titles[docname]) + innernode = nodes.inline(caption, caption, classes=['doc']) + return make_refnode(builder, fromdocname, docname, None, innernode) + + def _resolve_option_xref(self, env: "BuildEnvironment", fromdocname: str, + builder: "Builder", typ: str, target: str, + node: pending_xref, contnode: Element) -> Element: + progname = node.get('std:program') + target = target.strip() + docname, labelid = self.progoptions.get((progname, target), ('', '')) + if not docname: + commands = [] + while ws_re.search(target): + subcommand, target = ws_re.split(target, 1) + commands.append(subcommand) + progname = "-".join(commands) + + docname, labelid = self.progoptions.get((progname, target), ('', '')) + if docname: + break + else: + return None + + return make_refnode(builder, fromdocname, docname, + labelid, contnode) + + def _resolve_obj_xref(self, env: "BuildEnvironment", fromdocname: str, + builder: "Builder", typ: str, target: str, + node: pending_xref, contnode: Element) -> Element: + objtypes = self.objtypes_for_role(typ) or [] + for objtype in objtypes: + if (objtype, target) in self.objects: + docname, labelid = self.objects[objtype, target] + break + else: + docname, labelid = '', '' + if not docname: + return None + return make_refnode(builder, fromdocname, docname, + labelid, contnode) + + def resolve_any_xref(self, env: "BuildEnvironment", fromdocname: str, + builder: "Builder", target: str, node: pending_xref, + contnode: Element) -> List[Tuple[str, Element]]: + results = [] # type: List[Tuple[str, Element]] + ltarget = target.lower() # :ref: lowercases its target automatically + for role in ('ref', 'option'): # do not try "keyword" + res = self.resolve_xref(env, fromdocname, builder, role, + ltarget if role == 'ref' else target, + node, contnode) + if res: + results.append(('std:' + role, res)) + # all others + for objtype in self.object_types: + key = (objtype, target) + if objtype == 'term': + key = (objtype, ltarget) + if key in self.objects: + docname, labelid = self.objects[key] + results.append(('std:' + self.role_for_objtype(objtype), + make_refnode(builder, fromdocname, docname, + labelid, contnode))) + return results + + def get_objects(self) -> Iterator[Tuple[str, str, str, str, str, int]]: + # handle the special 'doc' reference here + for doc in self.env.all_docs: + yield (doc, clean_astext(self.env.titles[doc]), 'doc', doc, '', -1) + for (prog, option), info in self.progoptions.items(): + if prog: + fullname = ".".join([prog, option]) + yield (fullname, fullname, 'cmdoption', info[0], info[1], 1) + else: + yield (option, option, 'cmdoption', info[0], info[1], 1) + for (type, name), info in self.objects.items(): + yield (name, name, type, info[0], info[1], + self.object_types[type].attrs['searchprio']) + for name, (docname, labelid, sectionname) in self.labels.items(): + yield (name, sectionname, 'label', docname, labelid, -1) + # add anonymous-only labels as well + non_anon_labels = set(self.labels) + for name, (docname, labelid) in self.anonlabels.items(): + if name not in non_anon_labels: + yield (name, name, 'label', docname, labelid, -1) + + def get_type_name(self, type: ObjType, primary: bool = False) -> str: + # never prepend "Default" + return type.lname + + def is_enumerable_node(self, node: Node) -> bool: + return node.__class__ in self.enumerable_nodes + + def get_numfig_title(self, node: Node) -> str: + """Get the title of enumerable nodes to refer them using its title""" + if self.is_enumerable_node(node): + elem = cast(Element, node) + _, title_getter = self.enumerable_nodes.get(elem.__class__, (None, None)) + if title_getter: + return title_getter(elem) + else: + for subnode in elem: + if isinstance(subnode, (nodes.caption, nodes.title)): + return clean_astext(subnode) + + return None + + def get_enumerable_node_type(self, node: Node) -> str: + """Get type of enumerable nodes.""" + def has_child(node: Element, cls: "Type") -> bool: + return any(isinstance(child, cls) for child in node) + + if isinstance(node, nodes.section): + return 'section' + elif (isinstance(node, nodes.container) and + 'literal_block' in node and + has_child(node, nodes.literal_block)): + # given node is a code-block having caption + return 'code-block' + else: + figtype, _ = self.enumerable_nodes.get(node.__class__, (None, None)) + return figtype + + def get_fignumber(self, env: "BuildEnvironment", builder: "Builder", + figtype: str, docname: str, target_node: Element) -> Tuple[int, ...]: + if figtype == 'section': + if builder.name == 'latex': + return tuple() + elif docname not in env.toc_secnumbers: + raise ValueError # no number assigned + else: + anchorname = '#' + target_node['ids'][0] + if anchorname not in env.toc_secnumbers[docname]: + # try first heading which has no anchor + return env.toc_secnumbers[docname].get('') + else: + return env.toc_secnumbers[docname].get(anchorname) + else: + try: + figure_id = target_node['ids'][0] + return env.toc_fignumbers[docname][figtype][figure_id] + except (KeyError, IndexError): + # target_node is found, but fignumber is not assigned. + # Maybe it is defined in orphaned document. + raise ValueError + + def get_full_qualified_name(self, node: Element) -> str: + if node.get('reftype') == 'option': + progname = node.get('std:program') + command = ws_re.split(node.get('reftarget')) + if progname: + command.insert(0, progname) + option = command.pop() + if command: + return '.'.join(['-'.join(command), option]) + else: + return None + else: + return None + + def note_citations(self, env: "BuildEnvironment", docname: str, document: nodes.document) -> None: # NOQA + warnings.warn('StandardDomain.note_citations() is deprecated.', + RemovedInSphinx40Warning) + + def note_citation_refs(self, env: "BuildEnvironment", docname: str, document: nodes.document) -> None: # NOQA + warnings.warn('StandardDomain.note_citation_refs() is deprecated.', + RemovedInSphinx40Warning) + + def note_labels(self, env: "BuildEnvironment", docname: str, document: nodes.document) -> None: # NOQA + warnings.warn('StandardDomain.note_labels() is deprecated.', + RemovedInSphinx40Warning) + + +def setup(app: "Sphinx") -> Dict[str, Any]: + app.add_domain(StandardDomain) + + return { + 'version': 'builtin', + 'env_version': 1, + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/environment/__init__.py b/sphinx/sphinx/environment/__init__.py new file mode 100644 index 0000000..c873546 --- /dev/null +++ b/sphinx/sphinx/environment/__init__.py @@ -0,0 +1,658 @@ +""" + sphinx.environment + ~~~~~~~~~~~~~~~~~~ + + Global creation environment. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import os +import pickle +import warnings +from collections import defaultdict +from copy import copy +from os import path +from typing import Any, Callable, Dict, Generator, Iterator, List, Set, Tuple, Union +from typing import cast + +from docutils import nodes +from docutils.nodes import Node + +from sphinx import addnodes +from sphinx.config import Config +from sphinx.deprecation import RemovedInSphinx40Warning +from sphinx.domains import Domain +from sphinx.environment.adapters.toctree import TocTree +from sphinx.errors import SphinxError, BuildEnvironmentError, DocumentError, ExtensionError +from sphinx.events import EventManager +from sphinx.locale import __ +from sphinx.project import Project +from sphinx.transforms import SphinxTransformer +from sphinx.util import DownloadFiles, FilenameUniqDict +from sphinx.util import logging +from sphinx.util.docutils import LoggingReporter +from sphinx.util.i18n import CatalogRepository, docname_to_domain +from sphinx.util.nodes import is_translatable + +if False: + # For type annotation + from sphinx.application import Sphinx + from sphinx.builders import Builder + + +logger = logging.getLogger(__name__) + +default_settings = { + 'embed_stylesheet': False, + 'cloak_email_addresses': True, + 'pep_base_url': 'https://www.python.org/dev/peps/', + 'pep_references': None, + 'rfc_base_url': 'https://tools.ietf.org/html/', + 'rfc_references': None, + 'input_encoding': 'utf-8-sig', + 'doctitle_xform': False, + 'sectsubtitle_xform': False, + 'halt_level': 5, + 'file_insertion_enabled': True, + 'smartquotes_locales': [], +} # type: Dict[str, Any] + +# This is increased every time an environment attribute is added +# or changed to properly invalidate pickle files. +ENV_VERSION = 56 + +# config status +CONFIG_OK = 1 +CONFIG_NEW = 2 +CONFIG_CHANGED = 3 +CONFIG_EXTENSIONS_CHANGED = 4 + +CONFIG_CHANGED_REASON = { + CONFIG_NEW: __('new config'), + CONFIG_CHANGED: __('config changed'), + CONFIG_EXTENSIONS_CHANGED: __('extensions changed'), +} + + +versioning_conditions = { + 'none': False, + 'text': is_translatable, +} # type: Dict[str, Union[bool, Callable]] + + +class BuildEnvironment: + """ + The environment in which the ReST files are translated. + Stores an inventory of cross-file targets and provides doctree + transformations to resolve links to them. + """ + + domains = None # type: Dict[str, Domain] + + # --------- ENVIRONMENT INITIALIZATION ------------------------------------- + + def __init__(self, app: "Sphinx" = None): + self.app = None # type: Sphinx + self.doctreedir = None # type: str + self.srcdir = None # type: str + self.config = None # type: Config + self.config_status = None # type: int + self.config_status_extra = None # type: str + self.events = None # type: EventManager + self.project = None # type: Project + self.version = None # type: Dict[str, str] + + # the method of doctree versioning; see set_versioning_method + self.versioning_condition = None # type: Union[bool, Callable] + self.versioning_compare = None # type: bool + + # all the registered domains, set by the application + self.domains = {} + + # the docutils settings for building + self.settings = default_settings.copy() + self.settings['env'] = self + + # All "docnames" here are /-separated and relative and exclude + # the source suffix. + + self.all_docs = {} # type: Dict[str, float] + # docname -> mtime at the time of reading + # contains all read docnames + self.dependencies = defaultdict(set) # type: Dict[str, Set[str]] + # docname -> set of dependent file + # names, relative to documentation root + self.included = defaultdict(set) # type: Dict[str, Set[str]] + # docname -> set of included file + # docnames included from other documents + self.reread_always = set() # type: Set[str] + # docnames to re-read unconditionally on + # next build + + # File metadata + self.metadata = defaultdict(dict) # type: Dict[str, Dict[str, Any]] + # docname -> dict of metadata items + + # TOC inventory + self.titles = {} # type: Dict[str, nodes.title] + # docname -> title node + self.longtitles = {} # type: Dict[str, nodes.title] + # docname -> title node; only different if + # set differently with title directive + self.tocs = {} # type: Dict[str, nodes.bullet_list] + # docname -> table of contents nodetree + self.toc_num_entries = {} # type: Dict[str, int] + # docname -> number of real entries + + # used to determine when to show the TOC + # in a sidebar (don't show if it's only one item) + self.toc_secnumbers = {} # type: Dict[str, Dict[str, Tuple[int, ...]]] + # docname -> dict of sectionid -> number + self.toc_fignumbers = {} # type: Dict[str, Dict[str, Dict[str, Tuple[int, ...]]]] + # docname -> dict of figtype -> + # dict of figureid -> number + + self.toctree_includes = {} # type: Dict[str, List[str]] + # docname -> list of toctree includefiles + self.files_to_rebuild = {} # type: Dict[str, Set[str]] + # docname -> set of files + # (containing its TOCs) to rebuild too + self.glob_toctrees = set() # type: Set[str] + # docnames that have :glob: toctrees + self.numbered_toctrees = set() # type: Set[str] + # docnames that have :numbered: toctrees + + # domain-specific inventories, here to be pickled + self.domaindata = {} # type: Dict[str, Dict] + # domainname -> domain-specific dict + + # these map absolute path -> (docnames, unique filename) + self.images = FilenameUniqDict() # type: FilenameUniqDict + self.dlfiles = DownloadFiles() # type: DownloadFiles + # filename -> (set of docnames, destination) + + # the original URI for images + self.original_image_uri = {} # type: Dict[str, str] + + # temporary data storage while reading a document + self.temp_data = {} # type: Dict[str, Any] + # context for cross-references (e.g. current module or class) + # this is similar to temp_data, but will for example be copied to + # attributes of "any" cross references + self.ref_context = {} # type: Dict[str, Any] + + # set up environment + if app: + self.setup(app) + + def __getstate__(self) -> Dict: + """Obtains serializable data for pickling.""" + __dict__ = self.__dict__.copy() + __dict__.update(app=None, domains={}, events=None) # clear unpickable attributes + return __dict__ + + def __setstate__(self, state: Dict) -> None: + self.__dict__.update(state) + + def setup(self, app: "Sphinx") -> None: + """Set up BuildEnvironment object.""" + if self.version and self.version != app.registry.get_envversion(app): + raise BuildEnvironmentError(__('build environment version not current')) + elif self.srcdir and self.srcdir != app.srcdir: + raise BuildEnvironmentError(__('source directory has changed')) + + if self.project: + app.project.restore(self.project) + + self.app = app + self.doctreedir = app.doctreedir + self.events = app.events + self.srcdir = app.srcdir + self.project = app.project + self.version = app.registry.get_envversion(app) + + # initialize domains + self.domains = {} + for domain in app.registry.create_domains(self): + self.domains[domain.name] = domain + + # setup domains (must do after all initialization) + for domain in self.domains.values(): + domain.setup() + + # initialize config + self._update_config(app.config) + + # initialie settings + self._update_settings(app.config) + + def _update_config(self, config: Config) -> None: + """Update configurations by new one.""" + self.config_status = CONFIG_OK + self.config_status_extra = '' + if self.config is None: + self.config_status = CONFIG_NEW + elif self.config.extensions != config.extensions: + self.config_status = CONFIG_EXTENSIONS_CHANGED + extensions = sorted( + set(self.config.extensions) ^ set(config.extensions)) + if len(extensions) == 1: + extension = extensions[0] + else: + extension = '%d' % (len(extensions),) + self.config_status_extra = ' (%r)' % (extension,) + else: + # check if a config value was changed that affects how + # doctrees are read + for item in config.filter('env'): + if self.config[item.name] != item.value: + self.config_status = CONFIG_CHANGED + self.config_status_extra = ' (%r)' % (item.name,) + break + + self.config = config + + def _update_settings(self, config: Config) -> None: + """Update settings by new config.""" + self.settings['input_encoding'] = config.source_encoding + self.settings['trim_footnote_reference_space'] = config.trim_footnote_reference_space + self.settings['language_code'] = config.language or 'en' + + # Allow to disable by 3rd party extension (workaround) + self.settings.setdefault('smart_quotes', True) + + def set_versioning_method(self, method: Union[str, Callable], compare: bool) -> None: + """This sets the doctree versioning method for this environment. + + Versioning methods are a builder property; only builders with the same + versioning method can share the same doctree directory. Therefore, we + raise an exception if the user tries to use an environment with an + incompatible versioning method. + """ + condition = None # type: Union[bool, Callable] + if callable(method): + condition = method + else: + if method not in versioning_conditions: + raise ValueError('invalid versioning method: %r' % method) + condition = versioning_conditions[method] + + if self.versioning_condition not in (None, condition): + raise SphinxError(__('This environment is incompatible with the ' + 'selected builder, please choose another ' + 'doctree directory.')) + self.versioning_condition = condition + self.versioning_compare = compare + + def clear_doc(self, docname: str) -> None: + """Remove all traces of a source file in the inventory.""" + if docname in self.all_docs: + self.all_docs.pop(docname, None) + self.included.pop(docname, None) + self.reread_always.discard(docname) + + for domain in self.domains.values(): + domain.clear_doc(docname) + + def merge_info_from(self, docnames: List[str], other: "BuildEnvironment", + app: "Sphinx") -> None: + """Merge global information gathered about *docnames* while reading them + from the *other* environment. + + This possibly comes from a parallel build process. + """ + docnames = set(docnames) # type: ignore + for docname in docnames: + self.all_docs[docname] = other.all_docs[docname] + self.included[docname] = other.included[docname] + if docname in other.reread_always: + self.reread_always.add(docname) + + for domainname, domain in self.domains.items(): + domain.merge_domaindata(docnames, other.domaindata[domainname]) + self.events.emit('env-merge-info', self, docnames, other) + + def path2doc(self, filename: str) -> str: + """Return the docname for the filename if the file is document. + + *filename* should be absolute or relative to the source directory. + """ + return self.project.path2doc(filename) + + def doc2path(self, docname: str, base: Union[bool, str] = True, suffix: str = None) -> str: + """Return the filename for the document name. + + If *base* is True, return absolute path under self.srcdir. + If *base* is None, return relative path to self.srcdir. + If *base* is a path string, return absolute path under that. + If *suffix* is not None, add it instead of config.source_suffix. + """ + if suffix: + warnings.warn('The suffix argument for doc2path() is deprecated.', + RemovedInSphinx40Warning) + if base not in (True, False, None): + warnings.warn('The string style base argument for doc2path() is deprecated.', + RemovedInSphinx40Warning) + + pathname = self.project.doc2path(docname, base is True) + if suffix: + filename, _ = path.splitext(pathname) + pathname = filename + suffix + if base and base is not True: + pathname = path.join(base, pathname) # type: ignore + return pathname + + def relfn2path(self, filename: str, docname: str = None) -> Tuple[str, str]: + """Return paths to a file referenced from a document, relative to + documentation root and absolute. + + In the input "filename", absolute filenames are taken as relative to the + source dir, while relative filenames are relative to the dir of the + containing document. + """ + if filename.startswith('/') or filename.startswith(os.sep): + rel_fn = filename[1:] + else: + docdir = path.dirname(self.doc2path(docname or self.docname, + base=None)) + rel_fn = path.join(docdir, filename) + # the path.abspath() might seem redundant, but otherwise artifacts + # such as ".." will remain in the path + return rel_fn, path.abspath(path.join(self.srcdir, rel_fn)) + + @property + def found_docs(self) -> Set[str]: + """contains all existing docnames.""" + return self.project.docnames + + def find_files(self, config: Config, builder: "Builder") -> None: + """Find all source files in the source dir and put them in + self.found_docs. + """ + try: + exclude_paths = (self.config.exclude_patterns + + self.config.templates_path + + builder.get_asset_paths()) + self.project.discover(exclude_paths) + + # Current implementation is applying translated messages in the reading + # phase.Therefore, in order to apply the updated message catalog, it is + # necessary to re-process from the reading phase. Here, if dependency + # is set for the doc source and the mo file, it is processed again from + # the reading phase when mo is updated. In the future, we would like to + # move i18n process into the writing phase, and remove these lines. + if builder.use_message_catalog: + # add catalog mo file dependency + repo = CatalogRepository(self.srcdir, self.config.locale_dirs, + self.config.language, self.config.source_encoding) + for docname in self.found_docs: + domain = docname_to_domain(docname, self.config.gettext_compact) + for catalog in repo.catalogs: + if catalog.domain == domain: + self.dependencies[docname].add(catalog.mo_path) + except OSError as exc: + raise DocumentError(__('Failed to scan documents in %s: %r') % (self.srcdir, exc)) + + def get_outdated_files(self, config_changed: bool) -> Tuple[Set[str], Set[str], Set[str]]: + """Return (added, changed, removed) sets.""" + # clear all files no longer present + removed = set(self.all_docs) - self.found_docs + + added = set() # type: Set[str] + changed = set() # type: Set[str] + + if config_changed: + # config values affect e.g. substitutions + added = self.found_docs + else: + for docname in self.found_docs: + if docname not in self.all_docs: + added.add(docname) + continue + # if the doctree file is not there, rebuild + filename = path.join(self.doctreedir, docname + '.doctree') + if not path.isfile(filename): + changed.add(docname) + continue + # check the "reread always" list + if docname in self.reread_always: + changed.add(docname) + continue + # check the mtime of the document + mtime = self.all_docs[docname] + newmtime = path.getmtime(self.doc2path(docname)) + if newmtime > mtime: + changed.add(docname) + continue + # finally, check the mtime of dependencies + for dep in self.dependencies[docname]: + try: + # this will do the right thing when dep is absolute too + deppath = path.join(self.srcdir, dep) + if not path.isfile(deppath): + changed.add(docname) + break + depmtime = path.getmtime(deppath) + if depmtime > mtime: + changed.add(docname) + break + except OSError: + # give it another chance + changed.add(docname) + break + + return added, changed, removed + + def check_dependents(self, app: "Sphinx", already: Set[str]) -> Generator[str, None, None]: + to_rewrite = [] # type: List[str] + for docnames in self.events.emit('env-get-updated', self): + to_rewrite.extend(docnames) + for docname in set(to_rewrite): + if docname not in already: + yield docname + + # --------- SINGLE FILE READING -------------------------------------------- + + def prepare_settings(self, docname: str) -> None: + """Prepare to set up environment for reading.""" + self.temp_data['docname'] = docname + # defaults to the global default, but can be re-set in a document + self.temp_data['default_role'] = self.config.default_role + self.temp_data['default_domain'] = \ + self.domains.get(self.config.primary_domain) + + # utilities to use while reading a document + + @property + def docname(self) -> str: + """Returns the docname of the document currently being parsed.""" + return self.temp_data['docname'] + + def new_serialno(self, category: str = '') -> int: + """Return a serial number, e.g. for index entry targets. + + The number is guaranteed to be unique in the current document. + """ + key = category + 'serialno' + cur = self.temp_data.get(key, 0) + self.temp_data[key] = cur + 1 + return cur + + def note_dependency(self, filename: str) -> None: + """Add *filename* as a dependency of the current document. + + This means that the document will be rebuilt if this file changes. + + *filename* should be absolute or relative to the source directory. + """ + self.dependencies[self.docname].add(filename) + + def note_included(self, filename: str) -> None: + """Add *filename* as a included from other document. + + This means the document is not orphaned. + + *filename* should be absolute or relative to the source directory. + """ + self.included[self.docname].add(self.path2doc(filename)) + + def note_reread(self) -> None: + """Add the current document to the list of documents that will + automatically be re-read at the next build. + """ + self.reread_always.add(self.docname) + + def get_domain(self, domainname: str) -> Domain: + """Return the domain instance with the specified name. + + Raises an ExtensionError if the domain is not registered. + """ + try: + return self.domains[domainname] + except KeyError: + raise ExtensionError(__('Domain %r is not registered') % domainname) + + # --------- RESOLVING REFERENCES AND TOCTREES ------------------------------ + + def get_doctree(self, docname: str) -> nodes.document: + """Read the doctree for a file from the pickle and return it.""" + filename = path.join(self.doctreedir, docname + '.doctree') + with open(filename, 'rb') as f: + doctree = pickle.load(f) + doctree.settings.env = self + doctree.reporter = LoggingReporter(self.doc2path(docname)) + return doctree + + def get_and_resolve_doctree(self, docname: str, builder: "Builder", + doctree: nodes.document = None, prune_toctrees: bool = True, + includehidden: bool = False) -> nodes.document: + """Read the doctree from the pickle, resolve cross-references and + toctrees and return it. + """ + if doctree is None: + doctree = self.get_doctree(docname) + + # resolve all pending cross-references + self.apply_post_transforms(doctree, docname) + + # now, resolve all toctree nodes + for toctreenode in doctree.traverse(addnodes.toctree): + result = TocTree(self).resolve(docname, builder, toctreenode, + prune=prune_toctrees, + includehidden=includehidden) + if result is None: + toctreenode.replace_self([]) + else: + toctreenode.replace_self(result) + + return doctree + + def resolve_toctree(self, docname: str, builder: "Builder", toctree: addnodes.toctree, + prune: bool = True, maxdepth: int = 0, titles_only: bool = False, + collapse: bool = False, includehidden: bool = False) -> Node: + """Resolve a *toctree* node into individual bullet lists with titles + as items, returning None (if no containing titles are found) or + a new node. + + If *prune* is True, the tree is pruned to *maxdepth*, or if that is 0, + to the value of the *maxdepth* option on the *toctree* node. + If *titles_only* is True, only toplevel document titles will be in the + resulting tree. + If *collapse* is True, all branches not containing docname will + be collapsed. + """ + return TocTree(self).resolve(docname, builder, toctree, prune, + maxdepth, titles_only, collapse, + includehidden) + + def resolve_references(self, doctree: nodes.document, fromdocname: str, + builder: "Builder") -> None: + self.apply_post_transforms(doctree, fromdocname) + + def apply_post_transforms(self, doctree: nodes.document, docname: str) -> None: + """Apply all post-transforms.""" + try: + # set env.docname during applying post-transforms + backup = copy(self.temp_data) + self.temp_data['docname'] = docname + + transformer = SphinxTransformer(doctree) + transformer.set_environment(self) + transformer.add_transforms(self.app.registry.get_post_transforms()) + transformer.apply_transforms() + finally: + self.temp_data = backup + + # allow custom references to be resolved + self.events.emit('doctree-resolved', doctree, docname) + + def collect_relations(self) -> Dict[str, List[str]]: + traversed = set() + + def traverse_toctree(parent: str, docname: str) -> Iterator[Tuple[str, str]]: + if parent == docname: + logger.warning(__('self referenced toctree found. Ignored.'), location=docname) + return + + # traverse toctree by pre-order + yield parent, docname + traversed.add(docname) + + for child in (self.toctree_includes.get(docname) or []): + for subparent, subdocname in traverse_toctree(docname, child): + if subdocname not in traversed: + yield subparent, subdocname + traversed.add(subdocname) + + relations = {} + docnames = traverse_toctree(None, self.config.master_doc) + prevdoc = None + parent, docname = next(docnames) + for nextparent, nextdoc in docnames: + relations[docname] = [parent, prevdoc, nextdoc] + prevdoc = docname + docname = nextdoc + parent = nextparent + + relations[docname] = [parent, prevdoc, None] + + return relations + + def check_consistency(self) -> None: + """Do consistency checks.""" + included = set().union(*self.included.values()) # type: ignore + for docname in sorted(self.all_docs): + if docname not in self.files_to_rebuild: + if docname == self.config.master_doc: + # the master file is not included anywhere ;) + continue + if docname in included: + # the document is included from other documents + continue + if 'orphan' in self.metadata[docname]: + continue + logger.warning(__('document isn\'t included in any toctree'), + location=docname) + + # call check-consistency for all extensions + for domain in self.domains.values(): + domain.check_consistency() + self.events.emit('env-check-consistency', self) + + @property + def indexentries(self) -> Dict[str, List[Tuple[str, str, str, str, str]]]: + warnings.warn('env.indexentries() is deprecated. Please use IndexDomain instead.', + RemovedInSphinx40Warning, stacklevel=2) + from sphinx.domains.index import IndexDomain + domain = cast(IndexDomain, self.get_domain('index')) + return domain.entries + + @indexentries.setter + def indexentries(self, entries: Dict[str, List[Tuple[str, str, str, str, str]]]) -> None: + warnings.warn('env.indexentries() is deprecated. Please use IndexDomain instead.', + RemovedInSphinx40Warning, stacklevel=2) + from sphinx.domains.index import IndexDomain + domain = cast(IndexDomain, self.get_domain('index')) + domain.data['entries'] = entries diff --git a/sphinx/sphinx/environment/adapters/__init__.py b/sphinx/sphinx/environment/adapters/__init__.py new file mode 100644 index 0000000..c9cde63 --- /dev/null +++ b/sphinx/sphinx/environment/adapters/__init__.py @@ -0,0 +1,9 @@ +""" + sphinx.environment.adapters + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Sphinx environment adapters + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" diff --git a/sphinx/sphinx/environment/adapters/asset.py b/sphinx/sphinx/environment/adapters/asset.py new file mode 100644 index 0000000..38e4eb0 --- /dev/null +++ b/sphinx/sphinx/environment/adapters/asset.py @@ -0,0 +1,23 @@ +""" + sphinx.environment.adapters.asset + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Assets adapter for sphinx.environment. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from sphinx.environment import BuildEnvironment + + +class ImageAdapter: + def __init__(self, env: BuildEnvironment) -> None: + self.env = env + + def get_original_image_uri(self, name: str) -> str: + """Get the original image URI.""" + while name in self.env.original_image_uri: + name = self.env.original_image_uri[name] + + return name diff --git a/sphinx/sphinx/environment/adapters/indexentries.py b/sphinx/sphinx/environment/adapters/indexentries.py new file mode 100644 index 0000000..5af2139 --- /dev/null +++ b/sphinx/sphinx/environment/adapters/indexentries.py @@ -0,0 +1,176 @@ +""" + sphinx.environment.adapters.indexentries + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Index entries adapters for sphinx.environment. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re +import unicodedata +from itertools import groupby +from typing import Any, Dict, Pattern, List, Tuple +from typing import cast + +from sphinx.builders import Builder +from sphinx.domains.index import IndexDomain +from sphinx.environment import BuildEnvironment +from sphinx.errors import NoUri +from sphinx.locale import _, __ +from sphinx.util import split_into, logging + + +logger = logging.getLogger(__name__) + + +class IndexEntries: + def __init__(self, env: BuildEnvironment) -> None: + self.env = env + + def create_index(self, builder: Builder, group_entries: bool = True, + _fixre: Pattern = re.compile(r'(.*) ([(][^()]*[)])') + ) -> List[Tuple[str, List[Tuple[str, Any]]]]: + """Create the real index from the collected index entries.""" + new = {} # type: Dict[str, List] + + def add_entry(word: str, subword: str, main: str, link: bool = True, + dic: Dict = new, key: str = None) -> None: + # Force the word to be unicode if it's a ASCII bytestring. + # This will solve problems with unicode normalization later. + # For instance the RFC role will add bytestrings at the moment + word = str(word) + entry = dic.get(word) + if not entry: + dic[word] = entry = [[], {}, key] + if subword: + add_entry(subword, '', main, link=link, dic=entry[1], key=key) + elif link: + try: + uri = builder.get_relative_uri('genindex', fn) + '#' + tid + except NoUri: + pass + else: + entry[0].append((main, uri)) + + domain = cast(IndexDomain, self.env.get_domain('index')) + for fn, entries in domain.entries.items(): + # new entry types must be listed in directives/other.py! + for type, value, tid, main, index_key in entries: + try: + if type == 'single': + try: + entry, subentry = split_into(2, 'single', value) + except ValueError: + entry, = split_into(1, 'single', value) + subentry = '' + add_entry(entry, subentry, main, key=index_key) + elif type == 'pair': + first, second = split_into(2, 'pair', value) + add_entry(first, second, main, key=index_key) + add_entry(second, first, main, key=index_key) + elif type == 'triple': + first, second, third = split_into(3, 'triple', value) + add_entry(first, second + ' ' + third, main, key=index_key) + add_entry(second, third + ', ' + first, main, key=index_key) + add_entry(third, first + ' ' + second, main, key=index_key) + elif type == 'see': + first, second = split_into(2, 'see', value) + add_entry(first, _('see %s') % second, None, + link=False, key=index_key) + elif type == 'seealso': + first, second = split_into(2, 'see', value) + add_entry(first, _('see also %s') % second, None, + link=False, key=index_key) + else: + logger.warning(__('unknown index entry type %r'), type, location=fn) + except ValueError as err: + logger.warning(str(err), location=fn) + + # sort the index entries for same keyword. + def keyfunc0(entry: Tuple[str, str]) -> Tuple[bool, str]: + main, uri = entry + return (not main, uri) # show main entries at first + + for indexentry in new.values(): + indexentry[0].sort(key=keyfunc0) + for subentry in indexentry[1].values(): + subentry[0].sort(key=keyfunc0) # type: ignore + + # sort the index entries; put all symbols at the front, even those + # following the letters in ASCII, this is where the chr(127) comes from + def keyfunc(entry: Tuple[str, List]) -> Tuple[str, str]: + key, (void, void, category_key) = entry + if category_key: + # using specified category key to sort + key = category_key + lckey = unicodedata.normalize('NFD', key.lower()) + if lckey.startswith('\N{RIGHT-TO-LEFT MARK}'): + lckey = lckey[1:] + if lckey[0:1].isalpha() or lckey.startswith('_'): + lckey = chr(127) + lckey + # ensure a determinstic order *within* letters by also sorting on + # the entry itself + return (lckey, entry[0]) + newlist = sorted(new.items(), key=keyfunc) + + if group_entries: + # fixup entries: transform + # func() (in module foo) + # func() (in module bar) + # into + # func() + # (in module foo) + # (in module bar) + oldkey = '' + oldsubitems = None # type: Dict[str, List] + i = 0 + while i < len(newlist): + key, (targets, subitems, _key) = newlist[i] + # cannot move if it has subitems; structure gets too complex + if not subitems: + m = _fixre.match(key) + if m: + if oldkey == m.group(1): + # prefixes match: add entry as subitem of the + # previous entry + oldsubitems.setdefault(m.group(2), [[], {}, _key])[0].\ + extend(targets) + del newlist[i] + continue + oldkey = m.group(1) + else: + oldkey = key + oldsubitems = subitems + i += 1 + + # sort the sub-index entries + def keyfunc2(entry: Tuple[str, List]) -> str: + key = unicodedata.normalize('NFD', entry[0].lower()) + if key.startswith('\N{RIGHT-TO-LEFT MARK}'): + key = key[1:] + if key[0:1].isalpha() or key.startswith('_'): + key = chr(127) + key + return key + + # group the entries by letter + def keyfunc3(item: Tuple[str, List]) -> str: + # hack: mutating the subitems dicts to a list in the keyfunc + k, v = item + v[1] = sorted(((si, se) for (si, (se, void, void)) in v[1].items()), + key=keyfunc2) + if v[2] is None: + # now calculate the key + if k.startswith('\N{RIGHT-TO-LEFT MARK}'): + k = k[1:] + letter = unicodedata.normalize('NFD', k[0])[0].upper() + if letter.isalpha() or letter == '_': + return letter + else: + # get all other symbols under one heading + return _('Symbols') + else: + return v[2] + return [(key_, list(group)) + for (key_, group) in groupby(newlist, keyfunc3)] diff --git a/sphinx/sphinx/environment/adapters/toctree.py b/sphinx/sphinx/environment/adapters/toctree.py new file mode 100644 index 0000000..9a1ef73 --- /dev/null +++ b/sphinx/sphinx/environment/adapters/toctree.py @@ -0,0 +1,336 @@ +""" + sphinx.environment.adapters.toctree + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Toctree adapter for sphinx.environment. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Any, Iterable, List +from typing import cast + +from docutils import nodes +from docutils.nodes import Element, Node + +from sphinx import addnodes +from sphinx.locale import __ +from sphinx.util import url_re, logging +from sphinx.util.matching import Matcher +from sphinx.util.nodes import clean_astext, process_only_nodes + +if False: + # For type annotation + from sphinx.builders import Builder + from sphinx.environment import BuildEnvironment + + +logger = logging.getLogger(__name__) + + +class TocTree: + def __init__(self, env: "BuildEnvironment") -> None: + self.env = env + + def note(self, docname: str, toctreenode: addnodes.toctree) -> None: + """Note a TOC tree directive in a document and gather information about + file relations from it. + """ + if toctreenode['glob']: + self.env.glob_toctrees.add(docname) + if toctreenode.get('numbered'): + self.env.numbered_toctrees.add(docname) + includefiles = toctreenode['includefiles'] + for includefile in includefiles: + # note that if the included file is rebuilt, this one must be + # too (since the TOC of the included file could have changed) + self.env.files_to_rebuild.setdefault(includefile, set()).add(docname) + self.env.toctree_includes.setdefault(docname, []).extend(includefiles) + + def resolve(self, docname: str, builder: "Builder", toctree: addnodes.toctree, + prune: bool = True, maxdepth: int = 0, titles_only: bool = False, + collapse: bool = False, includehidden: bool = False) -> Element: + """Resolve a *toctree* node into individual bullet lists with titles + as items, returning None (if no containing titles are found) or + a new node. + + If *prune* is True, the tree is pruned to *maxdepth*, or if that is 0, + to the value of the *maxdepth* option on the *toctree* node. + If *titles_only* is True, only toplevel document titles will be in the + resulting tree. + If *collapse* is True, all branches not containing docname will + be collapsed. + """ + if toctree.get('hidden', False) and not includehidden: + return None + + # For reading the following two helper function, it is useful to keep + # in mind the node structure of a toctree (using HTML-like node names + # for brevity): + # + # <ul> + # <li> + # <p><a></p> + # <p><a></p> + # ... + # <ul> + # ... + # </ul> + # </li> + # </ul> + # + # The transformation is made in two passes in order to avoid + # interactions between marking and pruning the tree (see bug #1046). + + toctree_ancestors = self.get_toctree_ancestors(docname) + excluded = Matcher(self.env.config.exclude_patterns) + + def _toctree_add_classes(node: Element, depth: int) -> None: + """Add 'toctree-l%d' and 'current' classes to the toctree.""" + for subnode in node.children: + if isinstance(subnode, (addnodes.compact_paragraph, + nodes.list_item)): + # for <p> and <li>, indicate the depth level and recurse + subnode['classes'].append('toctree-l%d' % (depth - 1)) + _toctree_add_classes(subnode, depth) + elif isinstance(subnode, nodes.bullet_list): + # for <ul>, just recurse + _toctree_add_classes(subnode, depth + 1) + elif isinstance(subnode, nodes.reference): + # for <a>, identify which entries point to the current + # document and therefore may not be collapsed + if subnode['refuri'] == docname: + if not subnode['anchorname']: + # give the whole branch a 'current' class + # (useful for styling it differently) + branchnode = subnode # type: Element + while branchnode: + branchnode['classes'].append('current') + branchnode = branchnode.parent + # mark the list_item as "on current page" + if subnode.parent.parent.get('iscurrent'): + # but only if it's not already done + return + while subnode: + subnode['iscurrent'] = True + subnode = subnode.parent + + def _entries_from_toctree(toctreenode: addnodes.toctree, parents: List[str], + separate: bool = False, subtree: bool = False + ) -> List[Element]: + """Return TOC entries for a toctree node.""" + refs = [(e[0], e[1]) for e in toctreenode['entries']] + entries = [] # type: List[Element] + for (title, ref) in refs: + try: + refdoc = None + if url_re.match(ref): + if title is None: + title = ref + reference = nodes.reference('', '', internal=False, + refuri=ref, anchorname='', + *[nodes.Text(title)]) + para = addnodes.compact_paragraph('', '', reference) + item = nodes.list_item('', para) + toc = nodes.bullet_list('', item) + elif ref == 'self': + # 'self' refers to the document from which this + # toctree originates + ref = toctreenode['parent'] + if not title: + title = clean_astext(self.env.titles[ref]) + reference = nodes.reference('', '', internal=True, + refuri=ref, + anchorname='', + *[nodes.Text(title)]) + para = addnodes.compact_paragraph('', '', reference) + item = nodes.list_item('', para) + # don't show subitems + toc = nodes.bullet_list('', item) + else: + if ref in parents: + logger.warning(__('circular toctree references ' + 'detected, ignoring: %s <- %s'), + ref, ' <- '.join(parents), + location=ref, type='toc', subtype='circular') + continue + refdoc = ref + toc = self.env.tocs[ref].deepcopy() + maxdepth = self.env.metadata[ref].get('tocdepth', 0) + if ref not in toctree_ancestors or (prune and maxdepth > 0): + self._toctree_prune(toc, 2, maxdepth, collapse) + process_only_nodes(toc, builder.tags) + if title and toc.children and len(toc.children) == 1: + child = toc.children[0] + for refnode in child.traverse(nodes.reference): + if refnode['refuri'] == ref and \ + not refnode['anchorname']: + refnode.children = [nodes.Text(title)] + if not toc.children: + # empty toc means: no titles will show up in the toctree + logger.warning(__('toctree contains reference to document %r that ' + 'doesn\'t have a title: no link will be generated'), + ref, location=toctreenode) + except KeyError: + # this is raised if the included file does not exist + if excluded(self.env.doc2path(ref, None)): + message = __('toctree contains reference to excluded document %r') + else: + message = __('toctree contains reference to nonexisting document %r') + + logger.warning(message, ref, location=toctreenode) + else: + # if titles_only is given, only keep the main title and + # sub-toctrees + if titles_only: + # children of toc are: + # - list_item + compact_paragraph + (reference and subtoc) + # - only + subtoc + # - toctree + children = cast(Iterable[nodes.Element], toc) + + # delete everything but the toplevel title(s) + # and toctrees + for toplevel in children: + # nodes with length 1 don't have any children anyway + if len(toplevel) > 1: + subtrees = toplevel.traverse(addnodes.toctree) + if subtrees: + toplevel[1][:] = subtrees # type: ignore + else: + toplevel.pop(1) + # resolve all sub-toctrees + for subtocnode in toc.traverse(addnodes.toctree): + if not (subtocnode.get('hidden', False) and + not includehidden): + i = subtocnode.parent.index(subtocnode) + 1 + for entry in _entries_from_toctree( + subtocnode, [refdoc] + parents, + subtree=True): + subtocnode.parent.insert(i, entry) + i += 1 + subtocnode.parent.remove(subtocnode) + if separate: + entries.append(toc) + else: + children = cast(Iterable[nodes.Element], toc) + entries.extend(children) + if not subtree and not separate: + ret = nodes.bullet_list() + ret += entries + return [ret] + return entries + + maxdepth = maxdepth or toctree.get('maxdepth', -1) + if not titles_only and toctree.get('titlesonly', False): + titles_only = True + if not includehidden and toctree.get('includehidden', False): + includehidden = True + + # NOTE: previously, this was separate=True, but that leads to artificial + # separation when two or more toctree entries form a logical unit, so + # separating mode is no longer used -- it's kept here for history's sake + tocentries = _entries_from_toctree(toctree, [], separate=False) + if not tocentries: + return None + + newnode = addnodes.compact_paragraph('', '') + caption = toctree.attributes.get('caption') + if caption: + caption_node = nodes.caption(caption, '', *[nodes.Text(caption)]) + caption_node.line = toctree.line + caption_node.source = toctree.source + caption_node.rawsource = toctree['rawcaption'] + if hasattr(toctree, 'uid'): + # move uid to caption_node to translate it + caption_node.uid = toctree.uid # type: ignore + del toctree.uid # type: ignore + newnode += caption_node + newnode.extend(tocentries) + newnode['toctree'] = True + + # prune the tree to maxdepth, also set toc depth and current classes + _toctree_add_classes(newnode, 1) + self._toctree_prune(newnode, 1, maxdepth if prune else 0, collapse) + + if isinstance(newnode[-1], nodes.Element) and len(newnode[-1]) == 0: # No titles found + return None + + # set the target paths in the toctrees (they are not known at TOC + # generation time) + for refnode in newnode.traverse(nodes.reference): + if not url_re.match(refnode['refuri']): + refnode['refuri'] = builder.get_relative_uri( + docname, refnode['refuri']) + refnode['anchorname'] + return newnode + + def get_toctree_ancestors(self, docname: str) -> List[str]: + parent = {} + for p, children in self.env.toctree_includes.items(): + for child in children: + parent[child] = p + ancestors = [] # type: List[str] + d = docname + while d in parent and d not in ancestors: + ancestors.append(d) + d = parent[d] + return ancestors + + def _toctree_prune(self, node: Element, depth: int, maxdepth: int, collapse: bool = False + ) -> None: + """Utility: Cut a TOC at a specified depth.""" + for subnode in node.children[:]: + if isinstance(subnode, (addnodes.compact_paragraph, + nodes.list_item)): + # for <p> and <li>, just recurse + self._toctree_prune(subnode, depth, maxdepth, collapse) + elif isinstance(subnode, nodes.bullet_list): + # for <ul>, determine if the depth is too large or if the + # entry is to be collapsed + if maxdepth > 0 and depth > maxdepth: + subnode.parent.replace(subnode, []) + else: + # cull sub-entries whose parents aren't 'current' + if (collapse and depth > 1 and + 'iscurrent' not in subnode.parent): + subnode.parent.remove(subnode) + else: + # recurse on visible children + self._toctree_prune(subnode, depth + 1, maxdepth, collapse) + + def get_toc_for(self, docname: str, builder: "Builder") -> Node: + """Return a TOC nodetree -- for use on the same page only!""" + tocdepth = self.env.metadata[docname].get('tocdepth', 0) + try: + toc = self.env.tocs[docname].deepcopy() + self._toctree_prune(toc, 2, tocdepth) + except KeyError: + # the document does not exist anymore: return a dummy node that + # renders to nothing + return nodes.paragraph() + process_only_nodes(toc, builder.tags) + for node in toc.traverse(nodes.reference): + node['refuri'] = node['anchorname'] or '#' + return toc + + def get_toctree_for(self, docname: str, builder: "Builder", collapse: bool, + **kwargs: Any) -> Element: + """Return the global TOC nodetree.""" + doctree = self.env.get_doctree(self.env.config.master_doc) + toctrees = [] # type: List[Element] + if 'includehidden' not in kwargs: + kwargs['includehidden'] = True + if 'maxdepth' not in kwargs: + kwargs['maxdepth'] = 0 + kwargs['collapse'] = collapse + for toctreenode in doctree.traverse(addnodes.toctree): + toctree = self.resolve(docname, builder, toctreenode, prune=True, **kwargs) + if toctree: + toctrees.append(toctree) + if not toctrees: + return None + result = toctrees[0] + for toctree in toctrees[1:]: + result.extend(toctree.children) + return result diff --git a/sphinx/sphinx/environment/collectors/__init__.py b/sphinx/sphinx/environment/collectors/__init__.py new file mode 100644 index 0000000..53e3a1c --- /dev/null +++ b/sphinx/sphinx/environment/collectors/__init__.py @@ -0,0 +1,80 @@ +""" + sphinx.environment.collectors + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + The data collector components for sphinx.environment. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Dict, List, Set + +from docutils import nodes + +from sphinx.environment import BuildEnvironment + +if False: + # For type annotation + from sphinx.application import Sphinx + + +class EnvironmentCollector: + """An EnvironmentCollector is a specific data collector from each document. + + It gathers data and stores :py:class:`BuildEnvironment + <sphinx.environment.BuildEnvironment>` as a database. Examples of specific + data would be images, download files, section titles, metadatas, index + entries and toctrees, etc. + """ + + listener_ids = None # type: Dict[str, int] + + def enable(self, app: "Sphinx") -> None: + assert self.listener_ids is None + self.listener_ids = { + 'doctree-read': app.connect('doctree-read', self.process_doc), + 'env-merge-info': app.connect('env-merge-info', self.merge_other), + 'env-purge-doc': app.connect('env-purge-doc', self.clear_doc), + 'env-get-updated': app.connect('env-get-updated', self.get_updated_docs), + 'env-get-outdated': app.connect('env-get-outdated', self.get_outdated_docs), + } + + def disable(self, app: "Sphinx") -> None: + assert self.listener_ids is not None + for listener_id in self.listener_ids.values(): + app.disconnect(listener_id) + self.listener_ids = None + + def clear_doc(self, app: "Sphinx", env: BuildEnvironment, docname: str) -> None: + """Remove specified data of a document. + + This method is called on the removal of the document.""" + raise NotImplementedError + + def merge_other(self, app: "Sphinx", env: BuildEnvironment, + docnames: Set[str], other: BuildEnvironment) -> None: + """Merge in specified data regarding docnames from a different `BuildEnvironment` + object which coming from a subprocess in parallel builds.""" + raise NotImplementedError + + def process_doc(self, app: "Sphinx", doctree: nodes.document) -> None: + """Process a document and gather specific data from it. + + This method is called after the document is read.""" + raise NotImplementedError + + def get_updated_docs(self, app: "Sphinx", env: BuildEnvironment) -> List[str]: + """Return a list of docnames to re-read. + + This methods is called after reading the whole of documents (experimental). + """ + return [] + + def get_outdated_docs(self, app: "Sphinx", env: BuildEnvironment, + added: Set[str], changed: Set[str], removed: Set[str]) -> List[str]: + """Return a list of docnames to re-read. + + This methods is called before reading the documents. + """ + return [] diff --git a/sphinx/sphinx/environment/collectors/asset.py b/sphinx/sphinx/environment/collectors/asset.py new file mode 100644 index 0000000..06a0d51 --- /dev/null +++ b/sphinx/sphinx/environment/collectors/asset.py @@ -0,0 +1,146 @@ +""" + sphinx.environment.collectors.asset + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + The image collector for sphinx.environment. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import os +from glob import glob +from os import path +from typing import Any, Dict, List, Set + +from docutils import nodes +from docutils.nodes import Node +from docutils.utils import relative_path + +from sphinx import addnodes +from sphinx.application import Sphinx +from sphinx.environment import BuildEnvironment +from sphinx.environment.collectors import EnvironmentCollector +from sphinx.locale import __ +from sphinx.util import logging +from sphinx.util.i18n import get_image_filename_for_language, search_image_for_language +from sphinx.util.images import guess_mimetype + + +logger = logging.getLogger(__name__) + + +class ImageCollector(EnvironmentCollector): + """Image files collector for sphinx.environment.""" + + def clear_doc(self, app: Sphinx, env: BuildEnvironment, docname: str) -> None: + env.images.purge_doc(docname) + + def merge_other(self, app: Sphinx, env: BuildEnvironment, + docnames: Set[str], other: BuildEnvironment) -> None: + env.images.merge_other(docnames, other.images) + + def process_doc(self, app: Sphinx, doctree: nodes.document) -> None: + """Process and rewrite image URIs.""" + docname = app.env.docname + + for node in doctree.traverse(nodes.image): + # Map the mimetype to the corresponding image. The writer may + # choose the best image from these candidates. The special key * is + # set if there is only single candidate to be used by a writer. + # The special key ? is set for nonlocal URIs. + candidates = {} # type: Dict[str, str] + node['candidates'] = candidates + imguri = node['uri'] + if imguri.startswith('data:'): + candidates['?'] = imguri + continue + elif imguri.find('://') != -1: + candidates['?'] = imguri + continue + rel_imgpath, full_imgpath = app.env.relfn2path(imguri, docname) + if app.config.language: + # substitute figures (ex. foo.png -> foo.en.png) + i18n_full_imgpath = search_image_for_language(full_imgpath, app.env) + if i18n_full_imgpath != full_imgpath: + full_imgpath = i18n_full_imgpath + rel_imgpath = relative_path(path.join(app.srcdir, 'dummy'), + i18n_full_imgpath) + # set imgpath as default URI + node['uri'] = rel_imgpath + if rel_imgpath.endswith(os.extsep + '*'): + if app.config.language: + # Search language-specific figures at first + i18n_imguri = get_image_filename_for_language(imguri, app.env) + _, full_i18n_imgpath = app.env.relfn2path(i18n_imguri, docname) + self.collect_candidates(app.env, full_i18n_imgpath, candidates, node) + + self.collect_candidates(app.env, full_imgpath, candidates, node) + else: + candidates['*'] = rel_imgpath + + # map image paths to unique image names (so that they can be put + # into a single directory) + for imgpath in candidates.values(): + app.env.dependencies[docname].add(imgpath) + if not os.access(path.join(app.srcdir, imgpath), os.R_OK): + logger.warning(__('image file not readable: %s') % imgpath, + location=node, type='image', subtype='not_readable') + continue + app.env.images.add_file(docname, imgpath) + + def collect_candidates(self, env: BuildEnvironment, imgpath: str, + candidates: Dict[str, str], node: Node) -> None: + globbed = {} # type: Dict[str, List[str]] + for filename in glob(imgpath): + new_imgpath = relative_path(path.join(env.srcdir, 'dummy'), + filename) + try: + mimetype = guess_mimetype(filename) + if mimetype is None: + basename, suffix = path.splitext(filename) + mimetype = 'image/x-' + suffix[1:] + if mimetype not in candidates: + globbed.setdefault(mimetype, []).append(new_imgpath) + except OSError as err: + logger.warning(__('image file %s not readable: %s') % (filename, err), + location=node, type='image', subtype='not_readable') + for key, files in globbed.items(): + candidates[key] = sorted(files, key=len)[0] # select by similarity + + +class DownloadFileCollector(EnvironmentCollector): + """Download files collector for sphinx.environment.""" + + def clear_doc(self, app: Sphinx, env: BuildEnvironment, docname: str) -> None: + env.dlfiles.purge_doc(docname) + + def merge_other(self, app: Sphinx, env: BuildEnvironment, + docnames: Set[str], other: BuildEnvironment) -> None: + env.dlfiles.merge_other(docnames, other.dlfiles) + + def process_doc(self, app: Sphinx, doctree: nodes.document) -> None: + """Process downloadable file paths. """ + for node in doctree.traverse(addnodes.download_reference): + targetname = node['reftarget'] + if '://' in targetname: + node['refuri'] = targetname + else: + rel_filename, filename = app.env.relfn2path(targetname, app.env.docname) + app.env.dependencies[app.env.docname].add(rel_filename) + if not os.access(filename, os.R_OK): + logger.warning(__('download file not readable: %s') % filename, + location=node, type='download', subtype='not_readable') + continue + node['filename'] = app.env.dlfiles.add_file(app.env.docname, rel_filename) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_env_collector(ImageCollector) + app.add_env_collector(DownloadFileCollector) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/environment/collectors/dependencies.py b/sphinx/sphinx/environment/collectors/dependencies.py new file mode 100644 index 0000000..cc0af03 --- /dev/null +++ b/sphinx/sphinx/environment/collectors/dependencies.py @@ -0,0 +1,60 @@ +""" + sphinx.environment.collectors.dependencies + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + The dependencies collector components for sphinx.environment. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import os +from os import path +from typing import Any, Dict, Set + +from docutils import nodes +from docutils.utils import relative_path + +from sphinx.application import Sphinx +from sphinx.environment import BuildEnvironment +from sphinx.environment.collectors import EnvironmentCollector +from sphinx.util.osutil import fs_encoding + + +class DependenciesCollector(EnvironmentCollector): + """dependencies collector for sphinx.environment.""" + + def clear_doc(self, app: Sphinx, env: BuildEnvironment, docname: str) -> None: + env.dependencies.pop(docname, None) + + def merge_other(self, app: Sphinx, env: BuildEnvironment, + docnames: Set[str], other: BuildEnvironment) -> None: + for docname in docnames: + if docname in other.dependencies: + env.dependencies[docname] = other.dependencies[docname] + + def process_doc(self, app: Sphinx, doctree: nodes.document) -> None: + """Process docutils-generated dependency info.""" + cwd = os.getcwd() + frompath = path.join(path.normpath(app.srcdir), 'dummy') + deps = doctree.settings.record_dependencies + if not deps: + return + for dep in deps.list: + # the dependency path is relative to the working dir, so get + # one relative to the srcdir + if isinstance(dep, bytes): + dep = dep.decode(fs_encoding) + relpath = relative_path(frompath, + path.normpath(path.join(cwd, dep))) + app.env.dependencies[app.env.docname].add(relpath) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_env_collector(DependenciesCollector) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/environment/collectors/indexentries.py b/sphinx/sphinx/environment/collectors/indexentries.py new file mode 100644 index 0000000..2ef5990 --- /dev/null +++ b/sphinx/sphinx/environment/collectors/indexentries.py @@ -0,0 +1,64 @@ +""" + sphinx.environment.collectors.indexentries + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Index entries collector for sphinx.environment. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import warnings +from typing import Any, Dict, Set + +from docutils import nodes + +from sphinx import addnodes +from sphinx.application import Sphinx +from sphinx.deprecation import RemovedInSphinx40Warning +from sphinx.environment import BuildEnvironment +from sphinx.environment.collectors import EnvironmentCollector +from sphinx.util import split_index_msg, logging + + +logger = logging.getLogger(__name__) + + +class IndexEntriesCollector(EnvironmentCollector): + name = 'indices' + + def __init__(self) -> None: + warnings.warn('IndexEntriesCollector is deprecated.', + RemovedInSphinx40Warning) + + def clear_doc(self, app: Sphinx, env: BuildEnvironment, docname: str) -> None: + env.indexentries.pop(docname, None) + + def merge_other(self, app: Sphinx, env: BuildEnvironment, + docnames: Set[str], other: BuildEnvironment) -> None: + for docname in docnames: + env.indexentries[docname] = other.indexentries[docname] + + def process_doc(self, app: Sphinx, doctree: nodes.document) -> None: + docname = app.env.docname + entries = app.env.indexentries[docname] = [] + for node in doctree.traverse(addnodes.index): + try: + for entry in node['entries']: + split_index_msg(entry[0], entry[1]) + except ValueError as exc: + logger.warning(str(exc), location=node) + node.parent.remove(node) + else: + for entry in node['entries']: + entries.append(entry) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_env_collector(IndexEntriesCollector) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/environment/collectors/metadata.py b/sphinx/sphinx/environment/collectors/metadata.py new file mode 100644 index 0000000..bcff1f2 --- /dev/null +++ b/sphinx/sphinx/environment/collectors/metadata.py @@ -0,0 +1,72 @@ +""" + sphinx.environment.collectors.metadata + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + The metadata collector components for sphinx.environment. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Any, Dict, List, Set +from typing import cast + +from docutils import nodes + +from sphinx.application import Sphinx +from sphinx.environment import BuildEnvironment +from sphinx.environment.collectors import EnvironmentCollector + + +class MetadataCollector(EnvironmentCollector): + """metadata collector for sphinx.environment.""" + + def clear_doc(self, app: Sphinx, env: BuildEnvironment, docname: str) -> None: + env.metadata.pop(docname, None) + + def merge_other(self, app: Sphinx, env: BuildEnvironment, + docnames: Set[str], other: BuildEnvironment) -> None: + for docname in docnames: + env.metadata[docname] = other.metadata[docname] + + def process_doc(self, app: Sphinx, doctree: nodes.document) -> None: + """Process the docinfo part of the doctree as metadata. + + Keep processing minimal -- just return what docutils says. + """ + if len(doctree) > 0 and isinstance(doctree[0], nodes.docinfo): + md = app.env.metadata[app.env.docname] + for node in doctree[0]: + # nodes are multiply inherited... + if isinstance(node, nodes.authors): + authors = cast(List[nodes.author], node) + md['authors'] = [author.astext() for author in authors] + elif isinstance(node, nodes.field): + assert len(node) == 2 + field_name = cast(nodes.field_name, node[0]) + field_body = cast(nodes.field_body, node[1]) + md[field_name.astext()] = field_body.astext() + elif isinstance(node, nodes.TextElement): + # other children must be TextElement + # see: http://docutils.sourceforge.net/docs/ref/doctree.html#bibliographic-elements # NOQA + md[node.__class__.__name__] = node.astext() + + for name, value in md.items(): + if name in ('tocdepth',): + try: + value = int(value) + except ValueError: + value = 0 + md[name] = value + + doctree.pop(0) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_env_collector(MetadataCollector) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/environment/collectors/title.py b/sphinx/sphinx/environment/collectors/title.py new file mode 100644 index 0000000..10cd6c5 --- /dev/null +++ b/sphinx/sphinx/environment/collectors/title.py @@ -0,0 +1,65 @@ +""" + sphinx.environment.collectors.title + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + The title collector components for sphinx.environment. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Any, Dict, Set + +from docutils import nodes + +from sphinx.application import Sphinx +from sphinx.environment import BuildEnvironment +from sphinx.environment.collectors import EnvironmentCollector +from sphinx.transforms import SphinxContentsFilter + + +class TitleCollector(EnvironmentCollector): + """title collector for sphinx.environment.""" + + def clear_doc(self, app: Sphinx, env: BuildEnvironment, docname: str) -> None: + env.titles.pop(docname, None) + env.longtitles.pop(docname, None) + + def merge_other(self, app: Sphinx, env: BuildEnvironment, + docnames: Set[str], other: BuildEnvironment) -> None: + for docname in docnames: + env.titles[docname] = other.titles[docname] + env.longtitles[docname] = other.longtitles[docname] + + def process_doc(self, app: Sphinx, doctree: nodes.document) -> None: + """Add a title node to the document (just copy the first section title), + and store that title in the environment. + """ + titlenode = nodes.title() + longtitlenode = titlenode + # explicit title set with title directive; use this only for + # the <title> tag in HTML output + if 'title' in doctree: + longtitlenode = nodes.title() + longtitlenode += nodes.Text(doctree['title']) + # look for first section title and use that as the title + for node in doctree.traverse(nodes.section): + visitor = SphinxContentsFilter(doctree) + node[0].walkabout(visitor) + titlenode += visitor.get_entry_text() + break + else: + # document has no title + titlenode += nodes.Text('<no title>') + app.env.titles[app.env.docname] = titlenode + app.env.longtitles[app.env.docname] = longtitlenode + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_env_collector(TitleCollector) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/environment/collectors/toctree.py b/sphinx/sphinx/environment/collectors/toctree.py new file mode 100644 index 0000000..e168bd9 --- /dev/null +++ b/sphinx/sphinx/environment/collectors/toctree.py @@ -0,0 +1,301 @@ +""" + sphinx.environment.collectors.toctree + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Toctree collector for sphinx.environment. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Any, Dict, List, Set, Tuple, TypeVar +from typing import cast + +from docutils import nodes +from docutils.nodes import Element, Node + +from sphinx import addnodes +from sphinx.application import Sphinx +from sphinx.environment import BuildEnvironment +from sphinx.environment.adapters.toctree import TocTree +from sphinx.environment.collectors import EnvironmentCollector +from sphinx.locale import __ +from sphinx.transforms import SphinxContentsFilter +from sphinx.util import url_re, logging + +if False: + # For type annotation + from typing import Type # for python3.5.1 + + +N = TypeVar('N') + +logger = logging.getLogger(__name__) + + +class TocTreeCollector(EnvironmentCollector): + def clear_doc(self, app: Sphinx, env: BuildEnvironment, docname: str) -> None: + env.tocs.pop(docname, None) + env.toc_secnumbers.pop(docname, None) + env.toc_fignumbers.pop(docname, None) + env.toc_num_entries.pop(docname, None) + env.toctree_includes.pop(docname, None) + env.glob_toctrees.discard(docname) + env.numbered_toctrees.discard(docname) + + for subfn, fnset in list(env.files_to_rebuild.items()): + fnset.discard(docname) + if not fnset: + del env.files_to_rebuild[subfn] + + def merge_other(self, app: Sphinx, env: BuildEnvironment, docnames: Set[str], + other: BuildEnvironment) -> None: + for docname in docnames: + env.tocs[docname] = other.tocs[docname] + env.toc_num_entries[docname] = other.toc_num_entries[docname] + if docname in other.toctree_includes: + env.toctree_includes[docname] = other.toctree_includes[docname] + if docname in other.glob_toctrees: + env.glob_toctrees.add(docname) + if docname in other.numbered_toctrees: + env.numbered_toctrees.add(docname) + + for subfn, fnset in other.files_to_rebuild.items(): + env.files_to_rebuild.setdefault(subfn, set()).update(fnset & set(docnames)) + + def process_doc(self, app: Sphinx, doctree: nodes.document) -> None: + """Build a TOC from the doctree and store it in the inventory.""" + docname = app.env.docname + numentries = [0] # nonlocal again... + + def traverse_in_section(node: Element, cls: "Type[N]") -> List[N]: + """Like traverse(), but stay within the same section.""" + result = [] # type: List[N] + if isinstance(node, cls): + result.append(node) + for child in node.children: + if isinstance(child, nodes.section): + continue + elif isinstance(child, nodes.Element): + result.extend(traverse_in_section(child, cls)) + return result + + def build_toc(node: Element, depth: int = 1) -> nodes.bullet_list: + entries = [] # type: List[Element] + for sectionnode in node: + # find all toctree nodes in this section and add them + # to the toc (just copying the toctree node which is then + # resolved in self.get_and_resolve_doctree) + if isinstance(sectionnode, nodes.section): + title = sectionnode[0] + # copy the contents of the section title, but without references + # and unnecessary stuff + visitor = SphinxContentsFilter(doctree) + title.walkabout(visitor) + nodetext = visitor.get_entry_text() + if not numentries[0]: + # for the very first toc entry, don't add an anchor + # as it is the file's title anyway + anchorname = '' + else: + anchorname = '#' + sectionnode['ids'][0] + numentries[0] += 1 + # make these nodes: + # list_item -> compact_paragraph -> reference + reference = nodes.reference( + '', '', internal=True, refuri=docname, + anchorname=anchorname, *nodetext) + para = addnodes.compact_paragraph('', '', reference) + item = nodes.list_item('', para) # type: Element + sub_item = build_toc(sectionnode, depth + 1) + if sub_item: + item += sub_item + entries.append(item) + elif isinstance(sectionnode, addnodes.only): + onlynode = addnodes.only(expr=sectionnode['expr']) + blist = build_toc(sectionnode, depth) + if blist: + onlynode += blist.children + entries.append(onlynode) + elif isinstance(sectionnode, nodes.Element): + for toctreenode in traverse_in_section(sectionnode, + addnodes.toctree): + item = toctreenode.copy() + entries.append(item) + # important: do the inventory stuff + TocTree(app.env).note(docname, toctreenode) + if entries: + return nodes.bullet_list('', *entries) + return None + toc = build_toc(doctree) + if toc: + app.env.tocs[docname] = toc + else: + app.env.tocs[docname] = nodes.bullet_list('') + app.env.toc_num_entries[docname] = numentries[0] + + def get_updated_docs(self, app: Sphinx, env: BuildEnvironment) -> List[str]: + return self.assign_section_numbers(env) + self.assign_figure_numbers(env) + + def assign_section_numbers(self, env: BuildEnvironment) -> List[str]: + """Assign a section number to each heading under a numbered toctree.""" + # a list of all docnames whose section numbers changed + rewrite_needed = [] + + assigned = set() # type: Set[str] + old_secnumbers = env.toc_secnumbers + env.toc_secnumbers = {} + + def _walk_toc(node: Element, secnums: Dict, depth: int, titlenode: nodes.title = None) -> None: # NOQA + # titlenode is the title of the document, it will get assigned a + # secnumber too, so that it shows up in next/prev/parent rellinks + for subnode in node.children: + if isinstance(subnode, nodes.bullet_list): + numstack.append(0) + _walk_toc(subnode, secnums, depth - 1, titlenode) + numstack.pop() + titlenode = None + elif isinstance(subnode, nodes.list_item): + _walk_toc(subnode, secnums, depth, titlenode) + titlenode = None + elif isinstance(subnode, addnodes.only): + # at this stage we don't know yet which sections are going + # to be included; just include all of them, even if it leads + # to gaps in the numbering + _walk_toc(subnode, secnums, depth, titlenode) + titlenode = None + elif isinstance(subnode, addnodes.compact_paragraph): + numstack[-1] += 1 + reference = cast(nodes.reference, subnode[0]) + if depth > 0: + number = list(numstack) + secnums[reference['anchorname']] = tuple(numstack) + else: + number = None + secnums[reference['anchorname']] = None + reference['secnumber'] = number + if titlenode: + titlenode['secnumber'] = number + titlenode = None + elif isinstance(subnode, addnodes.toctree): + _walk_toctree(subnode, depth) + + def _walk_toctree(toctreenode: addnodes.toctree, depth: int) -> None: + if depth == 0: + return + for (title, ref) in toctreenode['entries']: + if url_re.match(ref) or ref == 'self': + # don't mess with those + continue + elif ref in assigned: + logger.warning(__('%s is already assigned section numbers ' + '(nested numbered toctree?)'), ref, + location=toctreenode, type='toc', subtype='secnum') + elif ref in env.tocs: + secnums = {} # type: Dict[str, Tuple[int, ...]] + env.toc_secnumbers[ref] = secnums + assigned.add(ref) + _walk_toc(env.tocs[ref], secnums, depth, env.titles.get(ref)) + if secnums != old_secnumbers.get(ref): + rewrite_needed.append(ref) + + for docname in env.numbered_toctrees: + assigned.add(docname) + doctree = env.get_doctree(docname) + for toctreenode in doctree.traverse(addnodes.toctree): + depth = toctreenode.get('numbered', 0) + if depth: + # every numbered toctree gets new numbering + numstack = [0] + _walk_toctree(toctreenode, depth) + + return rewrite_needed + + def assign_figure_numbers(self, env: BuildEnvironment) -> List[str]: + """Assign a figure number to each figure under a numbered toctree.""" + + rewrite_needed = [] + + assigned = set() # type: Set[str] + old_fignumbers = env.toc_fignumbers + env.toc_fignumbers = {} + fignum_counter = {} # type: Dict[str, Dict[Tuple[int, ...], int]] + + def get_figtype(node: Node) -> str: + for domain in env.domains.values(): + figtype = domain.get_enumerable_node_type(node) + if figtype: + return figtype + + return None + + def get_section_number(docname: str, section: nodes.section) -> Tuple[int, ...]: + anchorname = '#' + section['ids'][0] + secnumbers = env.toc_secnumbers.get(docname, {}) + if anchorname in secnumbers: + secnum = secnumbers.get(anchorname) + else: + secnum = secnumbers.get('') + + return secnum or tuple() + + def get_next_fignumber(figtype: str, secnum: Tuple[int, ...]) -> Tuple[int, ...]: + counter = fignum_counter.setdefault(figtype, {}) + + secnum = secnum[:env.config.numfig_secnum_depth] + counter[secnum] = counter.get(secnum, 0) + 1 + return secnum + (counter[secnum],) + + def register_fignumber(docname: str, secnum: Tuple[int, ...], + figtype: str, fignode: Element) -> None: + env.toc_fignumbers.setdefault(docname, {}) + fignumbers = env.toc_fignumbers[docname].setdefault(figtype, {}) + figure_id = fignode['ids'][0] + + fignumbers[figure_id] = get_next_fignumber(figtype, secnum) + + def _walk_doctree(docname: str, doctree: Element, secnum: Tuple[int, ...]) -> None: + for subnode in doctree.children: + if isinstance(subnode, nodes.section): + next_secnum = get_section_number(docname, subnode) + if next_secnum: + _walk_doctree(docname, subnode, next_secnum) + else: + _walk_doctree(docname, subnode, secnum) + elif isinstance(subnode, addnodes.toctree): + for title, subdocname in subnode['entries']: + if url_re.match(subdocname) or subdocname == 'self': + # don't mess with those + continue + + _walk_doc(subdocname, secnum) + elif isinstance(subnode, nodes.Element): + figtype = get_figtype(subnode) + if figtype and subnode['ids']: + register_fignumber(docname, secnum, figtype, subnode) + + _walk_doctree(docname, subnode, secnum) + + def _walk_doc(docname: str, secnum: Tuple[int, ...]) -> None: + if docname not in assigned: + assigned.add(docname) + doctree = env.get_doctree(docname) + _walk_doctree(docname, doctree, secnum) + + if env.config.numfig: + _walk_doc(env.config.master_doc, tuple()) + for docname, fignums in env.toc_fignumbers.items(): + if fignums != old_fignumbers.get(docname): + rewrite_needed.append(docname) + + return rewrite_needed + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_env_collector(TocTreeCollector) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/errors.py b/sphinx/sphinx/errors.py new file mode 100644 index 0000000..a9d027c --- /dev/null +++ b/sphinx/sphinx/errors.py @@ -0,0 +1,125 @@ +""" + sphinx.errors + ~~~~~~~~~~~~~ + + Contains SphinxError and a few subclasses (in an extra module to avoid + circular import problems). + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Any + + +class SphinxError(Exception): + """Base class for Sphinx errors. + + This is the base class for "nice" exceptions. When such an exception is + raised, Sphinx will abort the build and present the exception category and + message to the user. + + Extensions are encouraged to derive from this exception for their custom + errors. + + Exceptions *not* derived from :exc:`SphinxError` are treated as unexpected + and shown to the user with a part of the traceback (and the full traceback + saved in a temporary file). + + .. attribute:: category + + Description of the exception "category", used in converting the + exception to a string ("category: message"). Should be set accordingly + in subclasses. + """ + category = 'Sphinx error' + + +class SphinxWarning(SphinxError): + """Warning, treated as error.""" + category = 'Warning, treated as error' + + +class ApplicationError(SphinxError): + """Application initialization error.""" + category = 'Application error' + + +class ExtensionError(SphinxError): + """Extension error.""" + category = 'Extension error' + + def __init__(self, message: str, orig_exc: Exception = None) -> None: + super().__init__(message) + self.message = message + self.orig_exc = orig_exc + + def __repr__(self) -> str: + if self.orig_exc: + return '%s(%r, %r)' % (self.__class__.__name__, + self.message, self.orig_exc) + return '%s(%r)' % (self.__class__.__name__, self.message) + + def __str__(self) -> str: + parent_str = super().__str__() + if self.orig_exc: + return '%s (exception: %s)' % (parent_str, self.orig_exc) + return parent_str + + +class BuildEnvironmentError(SphinxError): + """BuildEnvironment error.""" + category = 'BuildEnvironment error' + + +class ConfigError(SphinxError): + """Configuration error.""" + category = 'Configuration error' + + +class DocumentError(SphinxError): + """Document error.""" + category = 'Document error' + + +class ThemeError(SphinxError): + """Theme error.""" + category = 'Theme error' + + +class VersionRequirementError(SphinxError): + """Incompatible Sphinx version error.""" + category = 'Sphinx version error' + + +class SphinxParallelError(SphinxError): + """Sphinx parallel build error.""" + + category = 'Sphinx parallel build error' + + def __init__(self, message: str, traceback: Any) -> None: + self.message = message + self.traceback = traceback + + def __str__(self) -> str: + return self.message + + +class PycodeError(Exception): + """Pycode Python source code analyser error.""" + + def __str__(self) -> str: + res = self.args[0] + if len(self.args) > 1: + res += ' (exception was: %r)' % self.args[1] + return res + + +class NoUri(Exception): + """Raised by builder.get_relative_uri() if there is no URI available.""" + pass + + +class FiletypeNotFoundError(Exception): + "Raised by get_filetype() if a filename matches no source suffix." + pass diff --git a/sphinx/sphinx/events.py b/sphinx/sphinx/events.py new file mode 100644 index 0000000..ff49f29 --- /dev/null +++ b/sphinx/sphinx/events.py @@ -0,0 +1,118 @@ +""" + sphinx.events + ~~~~~~~~~~~~~ + + Sphinx core events. + + Gracefully adapted from the TextPress system by Armin. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import warnings +from collections import defaultdict +from operator import attrgetter +from typing import Any, Callable, Dict, List, NamedTuple + +from sphinx.deprecation import RemovedInSphinx40Warning +from sphinx.errors import ExtensionError +from sphinx.locale import __ +from sphinx.util import logging + +if False: + # For type annotation + from sphinx.application import Sphinx + + +logger = logging.getLogger(__name__) + +EventListener = NamedTuple('EventListener', [('id', int), + ('handler', Callable), + ('priority', int)]) + + +# List of all known core events. Maps name to arguments description. +core_events = { + 'builder-inited': '', + 'config-inited': 'config', + 'env-get-outdated': 'env, added, changed, removed', + 'env-get-updated': 'env', + 'env-purge-doc': 'env, docname', + 'env-before-read-docs': 'env, docnames', + 'env-check-consistency': 'env', + 'source-read': 'docname, source text', + 'doctree-read': 'the doctree before being pickled', + 'env-merge-info': 'env, read docnames, other env instance', + 'missing-reference': 'env, node, contnode', + 'doctree-resolved': 'doctree, docname', + 'env-updated': 'env', + 'html-collect-pages': 'builder', + 'html-page-context': 'pagename, context, doctree or None', + 'build-finished': 'exception', +} + + +class EventManager: + """Event manager for Sphinx.""" + + def __init__(self, app: "Sphinx" = None) -> None: + if app is None: + warnings.warn('app argument is required for EventManager.', + RemovedInSphinx40Warning) + self.app = app + self.events = core_events.copy() + self.listeners = defaultdict(list) # type: Dict[str, List[EventListener]] + self.next_listener_id = 0 + + def add(self, name: str) -> None: + """Register a custom Sphinx event.""" + if name in self.events: + raise ExtensionError(__('Event %r already present') % name) + self.events[name] = '' + + def connect(self, name: str, callback: Callable, priority: int) -> int: + """Connect a handler to specific event.""" + if name not in self.events: + raise ExtensionError(__('Unknown event name: %s') % name) + + listener_id = self.next_listener_id + self.next_listener_id += 1 + self.listeners[name].append(EventListener(listener_id, callback, priority)) + return listener_id + + def disconnect(self, listener_id: int) -> None: + """Disconnect a handler.""" + for listeners in self.listeners.values(): + for listener in listeners[:]: + if listener.id == listener_id: + listeners.remove(listener) + + def emit(self, name: str, *args: Any) -> List: + """Emit a Sphinx event.""" + try: + logger.debug('[app] emitting event: %r%s', name, repr(args)[:100]) + except Exception: + # not every object likes to be repr()'d (think + # random stuff coming via autodoc) + pass + + results = [] + listeners = sorted(self.listeners[name], key=attrgetter("priority")) + for listener in listeners: + if self.app is None: + # for compatibility; RemovedInSphinx40Warning + results.append(listener.handler(*args)) + else: + results.append(listener.handler(self.app, *args)) + return results + + def emit_firstresult(self, name: str, *args: Any) -> Any: + """Emit a Sphinx event and returns first result. + + This returns the result of the first handler that doesn't return ``None``. + """ + for result in self.emit(name, *args): + if result is not None: + return result + return None diff --git a/sphinx/sphinx/ext/__init__.py b/sphinx/sphinx/ext/__init__.py new file mode 100644 index 0000000..4f4fd01 --- /dev/null +++ b/sphinx/sphinx/ext/__init__.py @@ -0,0 +1,9 @@ +""" + sphinx.ext + ~~~~~~~~~~ + + Contains Sphinx features not activated by default. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" diff --git a/sphinx/sphinx/ext/apidoc.py b/sphinx/sphinx/ext/apidoc.py new file mode 100644 index 0000000..23be0a0 --- /dev/null +++ b/sphinx/sphinx/ext/apidoc.py @@ -0,0 +1,528 @@ +""" + sphinx.ext.apidoc + ~~~~~~~~~~~~~~~~~ + + Parses a directory tree looking for Python modules and packages and creates + ReST files appropriately to create code documentation with Sphinx. It also + creates a modules index (named modules.<suffix>). + + This is derived from the "sphinx-autopackage" script, which is: + Copyright 2008 Société des arts technologiques (SAT), + https://sat.qc.ca/ + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import argparse +import glob +import locale +import os +import sys +import warnings +from copy import copy +from fnmatch import fnmatch +from importlib.machinery import EXTENSION_SUFFIXES +from os import path +from typing import Any, List, Tuple + +import sphinx.locale +from sphinx import __display_version__, package_dir +from sphinx.cmd.quickstart import EXTENSIONS +from sphinx.deprecation import RemovedInSphinx40Warning, deprecated_alias +from sphinx.locale import __ +from sphinx.util import rst +from sphinx.util.osutil import FileAvoidWrite, ensuredir +from sphinx.util.template import ReSTRenderer + +# automodule options +if 'SPHINX_APIDOC_OPTIONS' in os.environ: + OPTIONS = os.environ['SPHINX_APIDOC_OPTIONS'].split(',') +else: + OPTIONS = [ + 'members', + 'undoc-members', + # 'inherited-members', # disabled because there's a bug in sphinx + 'show-inheritance', + ] + +PY_SUFFIXES = ('.py', '.pyx') + tuple(EXTENSION_SUFFIXES) + +template_dir = path.join(package_dir, 'templates', 'apidoc') + + +def makename(package: str, module: str) -> str: + """Join package and module with a dot.""" + warnings.warn('makename() is deprecated.', + RemovedInSphinx40Warning) + # Both package and module can be None/empty. + if package: + name = package + if module: + name += '.' + module + else: + name = module + return name + + +def is_initpy(filename: str) -> bool: + """Check *filename* is __init__ file or not.""" + basename = path.basename(filename) + for suffix in sorted(PY_SUFFIXES, key=len, reverse=True): + if basename == '__init__' + suffix: + return True + else: + return False + + +def module_join(*modnames: str) -> str: + """Join module names with dots.""" + return '.'.join(filter(None, modnames)) + + +def is_packagedir(dirname: str = None, files: List[str] = None) -> bool: + """Check given *files* contains __init__ file.""" + if files is None and dirname is None: + return False + + if files is None: + files = os.listdir(dirname) + return any(f for f in files if is_initpy(f)) + + +def write_file(name: str, text: str, opts: Any) -> None: + """Write the output file for module/package <name>.""" + quiet = getattr(opts, 'quiet', None) + + fname = path.join(opts.destdir, '%s.%s' % (name, opts.suffix)) + if opts.dryrun: + if not quiet: + print(__('Would create file %s.') % fname) + return + if not opts.force and path.isfile(fname): + if not quiet: + print(__('File %s already exists, skipping.') % fname) + else: + if not quiet: + print(__('Creating file %s.') % fname) + with FileAvoidWrite(fname) as f: + f.write(text) + + +def format_heading(level: int, text: str, escape: bool = True) -> str: + """Create a heading of <level> [1, 2 or 3 supported].""" + warnings.warn('format_warning() is deprecated.', + RemovedInSphinx40Warning) + if escape: + text = rst.escape(text) + underlining = ['=', '-', '~', ][level - 1] * len(text) + return '%s\n%s\n\n' % (text, underlining) + + +def format_directive(module: str, package: str = None) -> str: + """Create the automodule directive and add the options.""" + warnings.warn('format_directive() is deprecated.', + RemovedInSphinx40Warning) + directive = '.. automodule:: %s\n' % module_join(package, module) + for option in OPTIONS: + directive += ' :%s:\n' % option + return directive + + +def create_module_file(package: str, basename: str, opts: Any, + user_template_dir: str = None) -> None: + """Build the text of the file and write the file.""" + options = copy(OPTIONS) + if opts.includeprivate and 'private-members' not in options: + options.append('private-members') + + qualname = module_join(package, basename) + context = { + 'show_headings': not opts.noheadings, + 'basename': basename, + 'qualname': qualname, + 'automodule_options': options, + } + text = ReSTRenderer([user_template_dir, template_dir]).render('module.rst_t', context) + write_file(qualname, text, opts) + + +def create_package_file(root: str, master_package: str, subroot: str, py_files: List[str], + opts: Any, subs: List[str], is_namespace: bool, + excludes: List[str] = [], user_template_dir: str = None) -> None: + """Build the text of the file and write the file.""" + # build a list of sub packages (directories containing an __init__ file) + subpackages = [module_join(master_package, subroot, pkgname) + for pkgname in subs + if not is_skipped_package(path.join(root, pkgname), opts, excludes)] + # build a list of sub modules + submodules = [sub.split('.')[0] for sub in py_files + if not is_skipped_module(path.join(root, sub), opts, excludes) and + not is_initpy(sub)] + submodules = [module_join(master_package, subroot, modname) + for modname in submodules] + options = copy(OPTIONS) + if opts.includeprivate and 'private-members' not in options: + options.append('private-members') + + pkgname = module_join(master_package, subroot) + context = { + 'pkgname': pkgname, + 'subpackages': subpackages, + 'submodules': submodules, + 'is_namespace': is_namespace, + 'modulefirst': opts.modulefirst, + 'separatemodules': opts.separatemodules, + 'automodule_options': options, + 'show_headings': not opts.noheadings, + 'maxdepth': opts.maxdepth, + } + text = ReSTRenderer([user_template_dir, template_dir]).render('package.rst_t', context) + write_file(pkgname, text, opts) + + if submodules and opts.separatemodules: + for submodule in submodules: + create_module_file(None, submodule, opts, user_template_dir) + + +def create_modules_toc_file(modules: List[str], opts: Any, name: str = 'modules', + user_template_dir: str = None) -> None: + """Create the module's index.""" + modules.sort() + prev_module = '' + for module in modules[:]: + # look if the module is a subpackage and, if yes, ignore it + if module.startswith(prev_module + '.'): + modules.remove(module) + else: + prev_module = module + + context = { + 'header': opts.header, + 'maxdepth': opts.maxdepth, + 'docnames': modules, + } + text = ReSTRenderer([user_template_dir, template_dir]).render('toc.rst_t', context) + write_file(name, text, opts) + + +def shall_skip(module: str, opts: Any, excludes: List[str] = []) -> bool: + """Check if we want to skip this module.""" + warnings.warn('shall_skip() is deprecated.', + RemovedInSphinx40Warning) + # skip if the file doesn't exist and not using implicit namespaces + if not opts.implicit_namespaces and not path.exists(module): + return True + + # Are we a package (here defined as __init__.py, not the folder in itself) + if is_initpy(module): + # Yes, check if we have any non-excluded modules at all here + all_skipped = True + basemodule = path.dirname(module) + for submodule in glob.glob(path.join(basemodule, '*.py')): + if not is_excluded(path.join(basemodule, submodule), excludes): + # There's a non-excluded module here, we won't skip + all_skipped = False + if all_skipped: + return True + + # skip if it has a "private" name and this is selected + filename = path.basename(module) + if is_initpy(filename) and filename.startswith('_') and not opts.includeprivate: + return True + return False + + +def is_skipped_package(dirname: str, opts: Any, excludes: List[str] = []) -> bool: + """Check if we want to skip this module.""" + if not path.isdir(dirname): + return False + + files = glob.glob(path.join(dirname, '*.py')) + regular_package = any(f for f in files if is_initpy(f)) + if not regular_package and not opts.implicit_namespaces: + # *dirname* is not both a regular package and an implicit namespace pacage + return True + + # Check there is some showable module inside package + if all(is_excluded(path.join(dirname, f), excludes) for f in files): + # all submodules are excluded + return True + else: + return False + + +def is_skipped_module(filename: str, opts: Any, excludes: List[str]) -> bool: + """Check if we want to skip this module.""" + if not path.exists(filename): + # skip if the file doesn't exist + return True + elif path.basename(filename).startswith('_') and not opts.includeprivate: + # skip if the module has a "private" name + return True + else: + return False + + +def recurse_tree(rootpath: str, excludes: List[str], opts: Any, + user_template_dir: str = None) -> List[str]: + """ + Look for every file in the directory tree and create the corresponding + ReST files. + """ + followlinks = getattr(opts, 'followlinks', False) + includeprivate = getattr(opts, 'includeprivate', False) + implicit_namespaces = getattr(opts, 'implicit_namespaces', False) + + # check if the base directory is a package and get its name + if is_packagedir(rootpath) or implicit_namespaces: + root_package = rootpath.split(path.sep)[-1] + else: + # otherwise, the base is a directory with packages + root_package = None + + toplevels = [] + for root, subs, files in os.walk(rootpath, followlinks=followlinks): + # document only Python module files (that aren't excluded) + py_files = sorted(f for f in files + if f.endswith(PY_SUFFIXES) and + not is_excluded(path.join(root, f), excludes)) + is_pkg = is_packagedir(None, py_files) + is_namespace = not is_pkg and implicit_namespaces + if is_pkg: + for f in py_files[:]: + if is_initpy(f): + py_files.remove(f) + py_files.insert(0, f) + elif root != rootpath: + # only accept non-package at toplevel unless using implicit namespaces + if not implicit_namespaces: + del subs[:] + continue + # remove hidden ('.') and private ('_') directories, as well as + # excluded dirs + if includeprivate: + exclude_prefixes = ('.',) # type: Tuple[str, ...] + else: + exclude_prefixes = ('.', '_') + subs[:] = sorted(sub for sub in subs if not sub.startswith(exclude_prefixes) and + not is_excluded(path.join(root, sub), excludes)) + + if is_pkg or is_namespace: + # we are in a package with something to document + if subs or len(py_files) > 1 or not is_skipped_package(root, opts): + subpackage = root[len(rootpath):].lstrip(path.sep).\ + replace(path.sep, '.') + # if this is not a namespace or + # a namespace and there is something there to document + if not is_namespace or len(py_files) > 0: + create_package_file(root, root_package, subpackage, + py_files, opts, subs, is_namespace, excludes, + user_template_dir) + toplevels.append(module_join(root_package, subpackage)) + else: + # if we are at the root level, we don't require it to be a package + assert root == rootpath and root_package is None + for py_file in py_files: + if not is_skipped_module(path.join(rootpath, py_file), opts, excludes): + module = py_file.split('.')[0] + create_module_file(root_package, module, opts, user_template_dir) + toplevels.append(module) + + return toplevels + + +def is_excluded(root: str, excludes: List[str]) -> bool: + """Check if the directory is in the exclude list. + + Note: by having trailing slashes, we avoid common prefix issues, like + e.g. an exclude "foo" also accidentally excluding "foobar". + """ + for exclude in excludes: + if fnmatch(root, exclude): + return True + return False + + +def get_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + usage='%(prog)s [OPTIONS] -o <OUTPUT_PATH> <MODULE_PATH> ' + '[EXCLUDE_PATTERN, ...]', + epilog=__('For more information, visit <http://sphinx-doc.org/>.'), + description=__(""" +Look recursively in <MODULE_PATH> for Python modules and packages and create +one reST file with automodule directives per package in the <OUTPUT_PATH>. + +The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be +excluded from generation. + +Note: By default this script will not overwrite already created files.""")) + + parser.add_argument('--version', action='version', dest='show_version', + version='%%(prog)s %s' % __display_version__) + + parser.add_argument('module_path', + help=__('path to module to document')) + parser.add_argument('exclude_pattern', nargs='*', + help=__('fnmatch-style file and/or directory patterns ' + 'to exclude from generation')) + + parser.add_argument('-o', '--output-dir', action='store', dest='destdir', + required=True, + help=__('directory to place all output')) + parser.add_argument('-q', action='store_true', dest='quiet', + help=__('no output on stdout, just warnings on stderr')) + parser.add_argument('-d', '--maxdepth', action='store', dest='maxdepth', + type=int, default=4, + help=__('maximum depth of submodules to show in the TOC ' + '(default: 4)')) + parser.add_argument('-f', '--force', action='store_true', dest='force', + help=__('overwrite existing files')) + parser.add_argument('-l', '--follow-links', action='store_true', + dest='followlinks', default=False, + help=__('follow symbolic links. Powerful when combined ' + 'with collective.recipe.omelette.')) + parser.add_argument('-n', '--dry-run', action='store_true', dest='dryrun', + help=__('run the script without creating files')) + parser.add_argument('-e', '--separate', action='store_true', + dest='separatemodules', + help=__('put documentation for each module on its own page')) + parser.add_argument('-P', '--private', action='store_true', + dest='includeprivate', + help=__('include "_private" modules')) + parser.add_argument('--tocfile', action='store', dest='tocfile', default='modules', + help=__("filename of table of contents (default: modules)")) + parser.add_argument('-T', '--no-toc', action='store_false', dest='tocfile', + help=__("don't create a table of contents file")) + parser.add_argument('-E', '--no-headings', action='store_true', + dest='noheadings', + help=__("don't create headings for the module/package " + "packages (e.g. when the docstrings already " + "contain them)")) + parser.add_argument('-M', '--module-first', action='store_true', + dest='modulefirst', + help=__('put module documentation before submodule ' + 'documentation')) + parser.add_argument('--implicit-namespaces', action='store_true', + dest='implicit_namespaces', + help=__('interpret module paths according to PEP-0420 ' + 'implicit namespaces specification')) + parser.add_argument('-s', '--suffix', action='store', dest='suffix', + default='rst', + help=__('file suffix (default: rst)')) + parser.add_argument('-F', '--full', action='store_true', dest='full', + help=__('generate a full project with sphinx-quickstart')) + parser.add_argument('-a', '--append-syspath', action='store_true', + dest='append_syspath', + help=__('append module_path to sys.path, used when --full is given')) + parser.add_argument('-H', '--doc-project', action='store', dest='header', + help=__('project name (default: root module name)')) + parser.add_argument('-A', '--doc-author', action='store', dest='author', + help=__('project author(s), used when --full is given')) + parser.add_argument('-V', '--doc-version', action='store', dest='version', + help=__('project version, used when --full is given')) + parser.add_argument('-R', '--doc-release', action='store', dest='release', + help=__('project release, used when --full is given, ' + 'defaults to --doc-version')) + + group = parser.add_argument_group(__('extension options')) + group.add_argument('--extensions', metavar='EXTENSIONS', dest='extensions', + action='append', help=__('enable arbitrary extensions')) + for ext in EXTENSIONS: + group.add_argument('--ext-%s' % ext, action='append_const', + const='sphinx.ext.%s' % ext, dest='extensions', + help=__('enable %s extension') % ext) + + group = parser.add_argument_group(__('Project templating')) + group.add_argument('-t', '--templatedir', metavar='TEMPLATEDIR', + dest='templatedir', + help=__('template directory for template files')) + + return parser + + +def main(argv: List[str] = sys.argv[1:]) -> int: + """Parse and check the command line arguments.""" + sphinx.locale.setlocale(locale.LC_ALL, '') + sphinx.locale.init_console(os.path.join(package_dir, 'locale'), 'sphinx') + + parser = get_parser() + args = parser.parse_args(argv) + + rootpath = path.abspath(args.module_path) + + # normalize opts + + if args.header is None: + args.header = rootpath.split(path.sep)[-1] + if args.suffix.startswith('.'): + args.suffix = args.suffix[1:] + if not path.isdir(rootpath): + print(__('%s is not a directory.') % rootpath, file=sys.stderr) + sys.exit(1) + if not args.dryrun: + ensuredir(args.destdir) + excludes = [path.abspath(exclude) for exclude in args.exclude_pattern] + modules = recurse_tree(rootpath, excludes, args, args.templatedir) + + if args.full: + from sphinx.cmd import quickstart as qs + modules.sort() + prev_module = '' + text = '' + for module in modules: + if module.startswith(prev_module + '.'): + continue + prev_module = module + text += ' %s\n' % module + d = { + 'path': args.destdir, + 'sep': False, + 'dot': '_', + 'project': args.header, + 'author': args.author or 'Author', + 'version': args.version or '', + 'release': args.release or args.version or '', + 'suffix': '.' + args.suffix, + 'master': 'index', + 'epub': True, + 'extensions': ['sphinx.ext.autodoc', 'sphinx.ext.viewcode', + 'sphinx.ext.todo'], + 'makefile': True, + 'batchfile': True, + 'make_mode': True, + 'mastertocmaxdepth': args.maxdepth, + 'mastertoctree': text, + 'language': 'en', + 'module_path': rootpath, + 'append_syspath': args.append_syspath, + } + if args.extensions: + d['extensions'].extend(args.extensions) + if args.quiet: + d['quiet'] = True + + for ext in d['extensions'][:]: + if ',' in ext: + d['extensions'].remove(ext) + d['extensions'].extend(ext.split(',')) + + if not args.dryrun: + qs.generate(d, silent=True, overwrite=args.force, + templatedir=args.templatedir) + elif args.tocfile: + create_modules_toc_file(modules, args, args.tocfile, args.templatedir) + + return 0 + + +deprecated_alias('sphinx.ext.apidoc', + { + 'INITPY': '__init__.py', + }, + RemovedInSphinx40Warning) + + +# So program can be started with "python -m sphinx.apidoc ..." +if __name__ == "__main__": + main() diff --git a/sphinx/sphinx/ext/autodoc/__init__.py b/sphinx/sphinx/ext/autodoc/__init__.py new file mode 100644 index 0000000..ac4c7ed --- /dev/null +++ b/sphinx/sphinx/ext/autodoc/__init__.py @@ -0,0 +1,1775 @@ +""" + sphinx.ext.autodoc + ~~~~~~~~~~~~~~~~~~ + + Automatically insert docstrings for functions, classes or whole modules into + the doctree, thus avoiding duplication between docstrings and documentation + for those who like elaborate docstrings. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import importlib +import re +import warnings +from inspect import Parameter +from types import ModuleType +from typing import Any, Callable, Dict, Iterator, List, Sequence, Set, Tuple, Type, Union +from unittest.mock import patch + +from docutils.statemachine import StringList + +import sphinx +from sphinx.application import Sphinx +from sphinx.config import ENUM +from sphinx.deprecation import RemovedInSphinx40Warning, RemovedInSphinx50Warning +from sphinx.environment import BuildEnvironment +from sphinx.ext.autodoc.importer import import_object, get_module_members, get_object_members +from sphinx.ext.autodoc.mock import mock +from sphinx.locale import _, __ +from sphinx.pycode import ModuleAnalyzer, PycodeError +from sphinx.util import inspect +from sphinx.util import logging +from sphinx.util import rpartition +from sphinx.util.docstrings import extract_metadata, prepare_docstring +from sphinx.util.inspect import getdoc, object_description, safe_getattr, stringify_signature +from sphinx.util.typing import stringify as stringify_typehint + +if False: + # For type annotation + from typing import Type # NOQA # for python3.5.1 + from sphinx.ext.autodoc.directive import DocumenterBridge + + +logger = logging.getLogger(__name__) + + +# This type isn't exposed directly in any modules, but can be found +# here in most Python versions +MethodDescriptorType = type(type.__subclasses__) + + +#: extended signature RE: with explicit module name separated by :: +py_ext_sig_re = re.compile( + r'''^ ([\w.]+::)? # explicit module name + ([\w.]+\.)? # module and/or class name(s) + (\w+) \s* # thing name + (?: \((.*)\) # optional: arguments + (?:\s* -> \s* (.*))? # return annotation + )? $ # and nothing more + ''', re.VERBOSE) + + +def identity(x: Any) -> Any: + return x + + +ALL = object() +INSTANCEATTR = object() +SLOTSATTR = object() + + +def members_option(arg: Any) -> Union[object, List[str]]: + """Used to convert the :members: option to auto directives.""" + if arg is None or arg is True: + return ALL + return [x.strip() for x in arg.split(',') if x.strip()] + + +def members_set_option(arg: Any) -> Union[object, Set[str]]: + """Used to convert the :members: option to auto directives.""" + if arg is None: + return ALL + return {x.strip() for x in arg.split(',') if x.strip()} + + +def inherited_members_option(arg: Any) -> Union[object, Set[str]]: + """Used to convert the :members: option to auto directives.""" + if arg is None: + return 'object' + else: + return arg + + +SUPPRESS = object() + + +def annotation_option(arg: Any) -> Any: + if arg is None: + # suppress showing the representation of the object + return SUPPRESS + else: + return arg + + +def bool_option(arg: Any) -> bool: + """Used to convert flag options to auto directives. (Instead of + directives.flag(), which returns None). + """ + return True + + +def merge_special_members_option(options: Dict) -> None: + """Merge :special-members: option to :members: option.""" + if 'special-members' in options and options['special-members'] is not ALL: + if options.get('members') is ALL: + pass + elif options.get('members'): + for member in options['special-members']: + if member not in options['members']: + options['members'].append(member) + else: + options['members'] = options['special-members'] + + +# Some useful event listener factories for autodoc-process-docstring. + +def cut_lines(pre: int, post: int = 0, what: str = None) -> Callable: + """Return a listener that removes the first *pre* and last *post* + lines of every docstring. If *what* is a sequence of strings, + only docstrings of a type in *what* will be processed. + + Use like this (e.g. in the ``setup()`` function of :file:`conf.py`):: + + from sphinx.ext.autodoc import cut_lines + app.connect('autodoc-process-docstring', cut_lines(4, what=['module'])) + + This can (and should) be used in place of :confval:`automodule_skip_lines`. + """ + def process(app: Sphinx, what_: str, name: str, obj: Any, options: Any, lines: List[str] + ) -> None: + if what and what_ not in what: + return + del lines[:pre] + if post: + # remove one trailing blank line. + if lines and not lines[-1]: + lines.pop(-1) + del lines[-post:] + # make sure there is a blank line at the end + if lines and lines[-1]: + lines.append('') + return process + + +def between(marker: str, what: Sequence[str] = None, keepempty: bool = False, + exclude: bool = False) -> Callable: + """Return a listener that either keeps, or if *exclude* is True excludes, + lines between lines that match the *marker* regular expression. If no line + matches, the resulting docstring would be empty, so no change will be made + unless *keepempty* is true. + + If *what* is a sequence of strings, only docstrings of a type in *what* will + be processed. + """ + marker_re = re.compile(marker) + + def process(app: Sphinx, what_: str, name: str, obj: Any, options: Any, lines: List[str] + ) -> None: + if what and what_ not in what: + return + deleted = 0 + delete = not exclude + orig_lines = lines[:] + for i, line in enumerate(orig_lines): + if delete: + lines.pop(i - deleted) + deleted += 1 + if marker_re.match(line): + delete = not delete + if delete: + lines.pop(i - deleted) + deleted += 1 + if not lines and not keepempty: + lines[:] = orig_lines + # make sure there is a blank line at the end + if lines and lines[-1]: + lines.append('') + return process + + +# This class is used only in ``sphinx.ext.autodoc.directive``, +# But we define this class here to keep compatibility (see #4538) +class Options(dict): + """A dict/attribute hybrid that returns None on nonexisting keys.""" + def __getattr__(self, name: str) -> Any: + try: + return self[name.replace('_', '-')] + except KeyError: + return None + + +class Documenter: + """ + A Documenter knows how to autodocument a single object type. When + registered with the AutoDirective, it will be used to document objects + of that type when needed by autodoc. + + Its *objtype* attribute selects what auto directive it is assigned to + (the directive name is 'auto' + objtype), and what directive it generates + by default, though that can be overridden by an attribute called + *directivetype*. + + A Documenter has an *option_spec* that works like a docutils directive's; + in fact, it will be used to parse an auto directive's options that matches + the documenter. + """ + #: name by which the directive is called (auto...) and the default + #: generated directive name + objtype = 'object' + #: indentation by which to indent the directive content + content_indent = ' ' + #: priority if multiple documenters return True from can_document_member + priority = 0 + #: order if autodoc_member_order is set to 'groupwise' + member_order = 0 + #: true if the generated content may contain titles + titles_allowed = False + + option_spec = {'noindex': bool_option} # type: Dict[str, Callable] + + def get_attr(self, obj: Any, name: str, *defargs: Any) -> Any: + """getattr() override for types such as Zope interfaces.""" + return autodoc_attrgetter(self.env.app, obj, name, *defargs) + + @classmethod + def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any + ) -> bool: + """Called to see if a member can be documented by this documenter.""" + raise NotImplementedError('must be implemented in subclasses') + + def __init__(self, directive: "DocumenterBridge", name: str, indent: str = '') -> None: + self.directive = directive + self.env = directive.env # type: BuildEnvironment + self.options = directive.genopt + self.name = name + self.indent = indent + # the module and object path within the module, and the fully + # qualified name (all set after resolve_name succeeds) + self.modname = None # type: str + self.module = None # type: ModuleType + self.objpath = None # type: List[str] + self.fullname = None # type: str + # extra signature items (arguments and return annotation, + # also set after resolve_name succeeds) + self.args = None # type: str + self.retann = None # type: str + # the object to document (set after import_object succeeds) + self.object = None # type: Any + self.object_name = None # type: str + # the parent/owner of the object to document + self.parent = None # type: Any + # the module analyzer to get at attribute docs, or None + self.analyzer = None # type: ModuleAnalyzer + + @property + def documenters(self) -> Dict[str, "Type[Documenter]"]: + """Returns registered Documenter classes""" + return self.env.app.registry.documenters + + def add_line(self, line: str, source: str, *lineno: int) -> None: + """Append one line of generated reST to the output.""" + if line.strip(): # not a blank line + self.directive.result.append(self.indent + line, source, *lineno) + else: + self.directive.result.append('', source, *lineno) + + def resolve_name(self, modname: str, parents: Any, path: str, base: Any + ) -> Tuple[str, List[str]]: + """Resolve the module and name of the object to document given by the + arguments and the current module/class. + + Must return a pair of the module name and a chain of attributes; for + example, it would return ``('zipfile', ['ZipFile', 'open'])`` for the + ``zipfile.ZipFile.open`` method. + """ + raise NotImplementedError('must be implemented in subclasses') + + def parse_name(self) -> bool: + """Determine what module to import and what attribute to document. + + Returns True and sets *self.modname*, *self.objpath*, *self.fullname*, + *self.args* and *self.retann* if parsing and resolving was successful. + """ + # first, parse the definition -- auto directives for classes and + # functions can contain a signature which is then used instead of + # an autogenerated one + try: + explicit_modname, path, base, args, retann = \ + py_ext_sig_re.match(self.name).groups() + except AttributeError: + logger.warning(__('invalid signature for auto%s (%r)') % (self.objtype, self.name), + type='autodoc') + return False + + # support explicit module and class name separation via :: + if explicit_modname is not None: + modname = explicit_modname[:-2] + parents = path.rstrip('.').split('.') if path else [] + else: + modname = None + parents = [] + + self.modname, self.objpath = self.resolve_name(modname, parents, path, base) + + if not self.modname: + return False + + self.args = args + self.retann = retann + self.fullname = (self.modname or '') + \ + ('.' + '.'.join(self.objpath) if self.objpath else '') + return True + + def import_object(self) -> bool: + """Import the object given by *self.modname* and *self.objpath* and set + it as *self.object*. + + Returns True if successful, False if an error occurred. + """ + with mock(self.env.config.autodoc_mock_imports): + try: + ret = import_object(self.modname, self.objpath, self.objtype, + attrgetter=self.get_attr, + warningiserror=self.env.config.autodoc_warningiserror) + self.module, self.parent, self.object_name, self.object = ret + return True + except ImportError as exc: + logger.warning(exc.args[0], type='autodoc', subtype='import_object') + self.env.note_reread() + return False + + def get_real_modname(self) -> str: + """Get the real module name of an object to document. + + It can differ from the name of the module through which the object was + imported. + """ + return self.get_attr(self.object, '__module__', None) or self.modname + + def check_module(self) -> bool: + """Check if *self.object* is really defined in the module given by + *self.modname*. + """ + if self.options.imported_members: + return True + + subject = inspect.unpartial(self.object) + modname = self.get_attr(subject, '__module__', None) + if modname and modname != self.modname: + return False + return True + + def format_args(self, **kwargs: Any) -> str: + """Format the argument signature of *self.object*. + + Should return None if the object does not have a signature. + """ + return None + + def format_name(self) -> str: + """Format the name of *self.object*. + + This normally should be something that can be parsed by the generated + directive, but doesn't need to be (Sphinx will display it unparsed + then). + """ + # normally the name doesn't contain the module (except for module + # directives of course) + return '.'.join(self.objpath) or self.modname + + def format_signature(self, **kwargs: Any) -> str: + """Format the signature (arguments and return annotation) of the object. + + Let the user process it via the ``autodoc-process-signature`` event. + """ + if self.args is not None: + # signature given explicitly + args = "(%s)" % self.args + else: + # try to introspect the signature + try: + try: + args = self.format_args(**kwargs) + except TypeError: + # retry without arguments for old documenters + args = self.format_args() + except Exception as err: + logger.warning(__('error while formatting arguments for %s: %s') % + (self.fullname, err), type='autodoc') + args = None + + retann = self.retann + + result = self.env.events.emit_firstresult('autodoc-process-signature', + self.objtype, self.fullname, + self.object, self.options, args, retann) + if result: + args, retann = result + + if args is not None: + return args + ((' -> %s' % retann) if retann else '') + else: + return '' + + def add_directive_header(self, sig: str) -> None: + """Add the directive header and options to the generated content.""" + domain = getattr(self, 'domain', 'py') + directive = getattr(self, 'directivetype', self.objtype) + name = self.format_name() + sourcename = self.get_sourcename() + self.add_line('.. %s:%s:: %s%s' % (domain, directive, name, sig), + sourcename) + if self.options.noindex: + self.add_line(' :noindex:', sourcename) + if self.objpath: + # Be explicit about the module, this is necessary since .. class:: + # etc. don't support a prepended module name + self.add_line(' :module: %s' % self.modname, sourcename) + + def get_doc(self, encoding: str = None, ignore: int = 1) -> List[List[str]]: + """Decode and return lines of the docstring(s) for the object.""" + if encoding is not None: + warnings.warn("The 'encoding' argument to autodoc.%s.get_doc() is deprecated." + % self.__class__.__name__, + RemovedInSphinx40Warning) + docstring = getdoc(self.object, self.get_attr, + self.env.config.autodoc_inherit_docstrings) + if docstring: + tab_width = self.directive.state.document.settings.tab_width + return [prepare_docstring(docstring, ignore, tab_width)] + return [] + + def process_doc(self, docstrings: List[List[str]]) -> Iterator[str]: + """Let the user process the docstrings before adding them.""" + for docstringlines in docstrings: + if self.env.app: + # let extensions preprocess docstrings + self.env.app.emit('autodoc-process-docstring', + self.objtype, self.fullname, self.object, + self.options, docstringlines) + yield from docstringlines + + def get_sourcename(self) -> str: + if self.analyzer: + return '%s:docstring of %s' % (self.analyzer.srcname, self.fullname) + return 'docstring of %s' % self.fullname + + def add_content(self, more_content: Any, no_docstring: bool = False) -> None: + """Add content from docstrings, attribute documentation and user.""" + # set sourcename and add content from attribute documentation + sourcename = self.get_sourcename() + if self.analyzer: + attr_docs = self.analyzer.find_attr_docs() + if self.objpath: + key = ('.'.join(self.objpath[:-1]), self.objpath[-1]) + if key in attr_docs: + no_docstring = True + docstrings = [attr_docs[key]] + for i, line in enumerate(self.process_doc(docstrings)): + self.add_line(line, sourcename, i) + + # add content from docstrings + if not no_docstring: + docstrings = self.get_doc() + if not docstrings: + # append at least a dummy docstring, so that the event + # autodoc-process-docstring is fired and can add some + # content if desired + docstrings.append([]) + for i, line in enumerate(self.process_doc(docstrings)): + self.add_line(line, sourcename, i) + + # add additional content (e.g. from document), if present + if more_content: + for line, src in zip(more_content.data, more_content.items): + self.add_line(line, src[0], src[1]) + + def get_object_members(self, want_all: bool) -> Tuple[bool, List[Tuple[str, Any]]]: + """Return `(members_check_module, members)` where `members` is a + list of `(membername, member)` pairs of the members of *self.object*. + + If *want_all* is True, return all members. Else, only return those + members given by *self.options.members* (which may also be none). + """ + members = get_object_members(self.object, self.objpath, self.get_attr, self.analyzer) + if not want_all: + if not self.options.members: + return False, [] + # specific members given + selected = [] + for name in self.options.members: + if name in members: + selected.append((name, members[name].value)) + else: + logger.warning(__('missing attribute %s in object %s') % + (name, self.fullname), type='autodoc') + return False, sorted(selected) + elif self.options.inherited_members: + return False, sorted((m.name, m.value) for m in members.values()) + else: + return False, sorted((m.name, m.value) for m in members.values() + if m.directly_defined) + + def filter_members(self, members: List[Tuple[str, Any]], want_all: bool + ) -> List[Tuple[str, Any, bool]]: + """Filter the given member list. + + Members are skipped if + + - they are private (except if given explicitly or the private-members + option is set) + - they are special methods (except if given explicitly or the + special-members option is set) + - they are undocumented (except if the undoc-members option is set) + + The user can override the skipping decision by connecting to the + ``autodoc-skip-member`` event. + """ + def is_filtered_inherited_member(name: str) -> bool: + if inspect.isclass(self.object): + for cls in self.object.__mro__: + if cls.__name__ == self.options.inherited_members and cls != self.object: + # given member is a member of specified *super class* + return True + elif name in cls.__dict__: + return False + + return False + + ret = [] + + # search for members in source code too + namespace = '.'.join(self.objpath) # will be empty for modules + + if self.analyzer: + attr_docs = self.analyzer.find_attr_docs() + else: + attr_docs = {} + + # process members and determine which to skip + for (membername, member) in members: + # if isattr is True, the member is documented as an attribute + if member is INSTANCEATTR: + isattr = True + else: + isattr = False + + doc = getdoc(member, self.get_attr, self.env.config.autodoc_inherit_docstrings) + if not isinstance(doc, str): + # Ignore non-string __doc__ + doc = None + + # if the member __doc__ is the same as self's __doc__, it's just + # inherited and therefore not the member's doc + cls = self.get_attr(member, '__class__', None) + if cls: + cls_doc = self.get_attr(cls, '__doc__', None) + if cls_doc == doc: + doc = None + has_doc = bool(doc) + + metadata = extract_metadata(doc) + if 'private' in metadata: + # consider a member private if docstring has "private" metadata + isprivate = True + else: + isprivate = membername.startswith('_') + + keep = False + if want_all and membername.startswith('__') and \ + membername.endswith('__') and len(membername) > 4: + # special __methods__ + if self.options.special_members is ALL: + if membername == '__doc__': + keep = False + elif is_filtered_inherited_member(membername): + keep = False + else: + keep = has_doc or self.options.undoc_members + elif self.options.special_members: + if membername in self.options.special_members: + keep = has_doc or self.options.undoc_members + elif (namespace, membername) in attr_docs: + if want_all and isprivate: + # ignore members whose name starts with _ by default + keep = self.options.private_members + else: + # keep documented attributes + keep = True + isattr = True + elif want_all and isprivate: + # ignore members whose name starts with _ by default + keep = self.options.private_members and \ + (has_doc or self.options.undoc_members) + else: + if self.options.members is ALL and is_filtered_inherited_member(membername): + keep = False + else: + # ignore undocumented members if :undoc-members: is not given + keep = has_doc or self.options.undoc_members + + # give the user a chance to decide whether this member + # should be skipped + if self.env.app: + # let extensions preprocess docstrings + try: + skip_user = self.env.app.emit_firstresult( + 'autodoc-skip-member', self.objtype, membername, member, + not keep, self.options) + if skip_user is not None: + keep = not skip_user + except Exception as exc: + logger.warning(__('autodoc: failed to determine %r to be documented, ' + 'the following exception was raised:\n%s'), + member, exc, type='autodoc') + keep = False + + if keep: + ret.append((membername, member, isattr)) + + return ret + + def document_members(self, all_members: bool = False) -> None: + """Generate reST for member documentation. + + If *all_members* is True, do all members, else those given by + *self.options.members*. + """ + # set current namespace for finding members + self.env.temp_data['autodoc:module'] = self.modname + if self.objpath: + self.env.temp_data['autodoc:class'] = self.objpath[0] + + want_all = all_members or self.options.inherited_members or \ + self.options.members is ALL + # find out which members are documentable + members_check_module, members = self.get_object_members(want_all) + + # remove members given by exclude-members + if self.options.exclude_members: + members = [ + (membername, member) for (membername, member) in members + if ( + self.options.exclude_members is ALL or + membername not in self.options.exclude_members + ) + ] + + # document non-skipped members + memberdocumenters = [] # type: List[Tuple[Documenter, bool]] + for (mname, member, isattr) in self.filter_members(members, want_all): + classes = [cls for cls in self.documenters.values() + if cls.can_document_member(member, mname, isattr, self)] + if not classes: + # don't know how to document this member + continue + # prefer the documenter with the highest priority + classes.sort(key=lambda cls: cls.priority) + # give explicitly separated module name, so that members + # of inner classes can be documented + full_mname = self.modname + '::' + \ + '.'.join(self.objpath + [mname]) + documenter = classes[-1](self.directive, full_mname, self.indent) + memberdocumenters.append((documenter, isattr)) + member_order = self.options.member_order or \ + self.env.config.autodoc_member_order + if member_order == 'groupwise': + # sort by group; relies on stable sort to keep items in the + # same group sorted alphabetically + memberdocumenters.sort(key=lambda e: e[0].member_order) + elif member_order == 'bysource' and self.analyzer: + # sort by source order, by virtue of the module analyzer + tagorder = self.analyzer.tagorder + + def keyfunc(entry: Tuple[Documenter, bool]) -> int: + fullname = entry[0].name.split('::')[1] + return tagorder.get(fullname, len(tagorder)) + memberdocumenters.sort(key=keyfunc) + + for documenter, isattr in memberdocumenters: + documenter.generate( + all_members=True, real_modname=self.real_modname, + check_module=members_check_module and not isattr) + + # reset current objects + self.env.temp_data['autodoc:module'] = None + self.env.temp_data['autodoc:class'] = None + + def generate(self, more_content: Any = None, real_modname: str = None, + check_module: bool = False, all_members: bool = False) -> None: + """Generate reST for the object given by *self.name*, and possibly for + its members. + + If *more_content* is given, include that content. If *real_modname* is + given, use that module name to find attribute docs. If *check_module* is + True, only generate if the object is defined in the module name it is + imported from. If *all_members* is True, document all members. + """ + if not self.parse_name(): + # need a module to import + logger.warning( + __('don\'t know which module to import for autodocumenting ' + '%r (try placing a "module" or "currentmodule" directive ' + 'in the document, or giving an explicit module name)') % + self.name, type='autodoc') + return + + # now, import the module and get object to document + if not self.import_object(): + return + + # If there is no real module defined, figure out which to use. + # The real module is used in the module analyzer to look up the module + # where the attribute documentation would actually be found in. + # This is used for situations where you have a module that collects the + # functions and classes of internal submodules. + self.real_modname = real_modname or self.get_real_modname() # type: str + + # try to also get a source code analyzer for attribute docs + try: + self.analyzer = ModuleAnalyzer.for_module(self.real_modname) + # parse right now, to get PycodeErrors on parsing (results will + # be cached anyway) + self.analyzer.find_attr_docs() + except PycodeError as err: + logger.debug('[autodoc] module analyzer failed: %s', err) + # no source file -- e.g. for builtin and C modules + self.analyzer = None + # at least add the module.__file__ as a dependency + if hasattr(self.module, '__file__') and self.module.__file__: + self.directive.filename_set.add(self.module.__file__) + else: + self.directive.filename_set.add(self.analyzer.srcname) + + # check __module__ of object (for members not given explicitly) + if check_module: + if not self.check_module(): + return + + sourcename = self.get_sourcename() + + # make sure that the result starts with an empty line. This is + # necessary for some situations where another directive preprocesses + # reST and no starting newline is present + self.add_line('', sourcename) + + # format the object's signature, if any + sig = self.format_signature() + + # generate the directive header and options, if applicable + self.add_directive_header(sig) + self.add_line('', sourcename) + + # e.g. the module directive doesn't have content + self.indent += self.content_indent + + # add all content (from docstrings, attribute docs etc.) + self.add_content(more_content) + + # document members, if possible + self.document_members(all_members) + + +class ModuleDocumenter(Documenter): + """ + Specialized Documenter subclass for modules. + """ + objtype = 'module' + content_indent = '' + titles_allowed = True + + option_spec = { + 'members': members_option, 'undoc-members': bool_option, + 'noindex': bool_option, 'inherited-members': inherited_members_option, + 'show-inheritance': bool_option, 'synopsis': identity, + 'platform': identity, 'deprecated': bool_option, + 'member-order': identity, 'exclude-members': members_set_option, + 'private-members': bool_option, 'special-members': members_option, + 'imported-members': bool_option, 'ignore-module-all': bool_option + } # type: Dict[str, Callable] + + def __init__(self, *args: Any) -> None: + super().__init__(*args) + merge_special_members_option(self.options) + + @classmethod + def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any + ) -> bool: + # don't document submodules automatically + return False + + def resolve_name(self, modname: str, parents: Any, path: str, base: Any + ) -> Tuple[str, List[str]]: + if modname is not None: + logger.warning(__('"::" in automodule name doesn\'t make sense'), + type='autodoc') + return (path or '') + base, [] + + def parse_name(self) -> bool: + ret = super().parse_name() + if self.args or self.retann: + logger.warning(__('signature arguments or return annotation ' + 'given for automodule %s') % self.fullname, + type='autodoc') + return ret + + def add_directive_header(self, sig: str) -> None: + Documenter.add_directive_header(self, sig) + + sourcename = self.get_sourcename() + + # add some module-specific options + if self.options.synopsis: + self.add_line(' :synopsis: ' + self.options.synopsis, sourcename) + if self.options.platform: + self.add_line(' :platform: ' + self.options.platform, sourcename) + if self.options.deprecated: + self.add_line(' :deprecated:', sourcename) + + def get_object_members(self, want_all: bool) -> Tuple[bool, List[Tuple[str, object]]]: + if want_all: + if (self.options.ignore_module_all or not + hasattr(self.object, '__all__')): + # for implicit module members, check __module__ to avoid + # documenting imported objects + return True, get_module_members(self.object) + else: + memberlist = self.object.__all__ + # Sometimes __all__ is broken... + if not isinstance(memberlist, (list, tuple)) or not \ + all(isinstance(entry, str) for entry in memberlist): + logger.warning( + __('__all__ should be a list of strings, not %r ' + '(in module %s) -- ignoring __all__') % + (memberlist, self.fullname), + type='autodoc' + ) + # fall back to all members + return True, get_module_members(self.object) + else: + memberlist = self.options.members or [] + ret = [] + for mname in memberlist: + try: + ret.append((mname, safe_getattr(self.object, mname))) + except AttributeError: + logger.warning( + __('missing attribute mentioned in :members: or __all__: ' + 'module %s, attribute %s') % + (safe_getattr(self.object, '__name__', '???'), mname), + type='autodoc' + ) + return False, ret + + +class ModuleLevelDocumenter(Documenter): + """ + Specialized Documenter subclass for objects on module level (functions, + classes, data/constants). + """ + def resolve_name(self, modname: str, parents: Any, path: str, base: Any + ) -> Tuple[str, List[str]]: + if modname is None: + if path: + modname = path.rstrip('.') + else: + # if documenting a toplevel object without explicit module, + # it can be contained in another auto directive ... + modname = self.env.temp_data.get('autodoc:module') + # ... or in the scope of a module directive + if not modname: + modname = self.env.ref_context.get('py:module') + # ... else, it stays None, which means invalid + return modname, parents + [base] + + +class ClassLevelDocumenter(Documenter): + """ + Specialized Documenter subclass for objects on class level (methods, + attributes). + """ + def resolve_name(self, modname: str, parents: Any, path: str, base: Any + ) -> Tuple[str, List[str]]: + if modname is None: + if path: + mod_cls = path.rstrip('.') + else: + mod_cls = None + # if documenting a class-level object without path, + # there must be a current class, either from a parent + # auto directive ... + mod_cls = self.env.temp_data.get('autodoc:class') + # ... or from a class directive + if mod_cls is None: + mod_cls = self.env.ref_context.get('py:class') + # ... if still None, there's no way to know + if mod_cls is None: + return None, [] + modname, cls = rpartition(mod_cls, '.') + parents = [cls] + # if the module name is still missing, get it like above + if not modname: + modname = self.env.temp_data.get('autodoc:module') + if not modname: + modname = self.env.ref_context.get('py:module') + # ... else, it stays None, which means invalid + return modname, parents + [base] + + +class DocstringSignatureMixin: + """ + Mixin for FunctionDocumenter and MethodDocumenter to provide the + feature of reading the signature from the docstring. + """ + + def _find_signature(self, encoding: str = None) -> Tuple[str, str]: + if encoding is not None: + warnings.warn("The 'encoding' argument to autodoc.%s._find_signature() is " + "deprecated." % self.__class__.__name__, + RemovedInSphinx40Warning) + docstrings = self.get_doc() + self._new_docstrings = docstrings[:] + result = None + for i, doclines in enumerate(docstrings): + # no lines in docstring, no match + if not doclines: + continue + # match first line of docstring against signature RE + match = py_ext_sig_re.match(doclines[0]) + if not match: + continue + exmod, path, base, args, retann = match.groups() + # the base name must match ours + valid_names = [self.objpath[-1]] # type: ignore + if isinstance(self, ClassDocumenter): + valid_names.append('__init__') + if hasattr(self.object, '__mro__'): + valid_names.extend(cls.__name__ for cls in self.object.__mro__) + if base not in valid_names: + continue + # re-prepare docstring to ignore more leading indentation + tab_width = self.directive.state.document.settings.tab_width # type: ignore + self._new_docstrings[i] = prepare_docstring('\n'.join(doclines[1:]), + tabsize=tab_width) + result = args, retann + # don't look any further + break + return result + + def get_doc(self, encoding: str = None, ignore: int = 1) -> List[List[str]]: + if encoding is not None: + warnings.warn("The 'encoding' argument to autodoc.%s.get_doc() is deprecated." + % self.__class__.__name__, + RemovedInSphinx40Warning) + lines = getattr(self, '_new_docstrings', None) + if lines is not None: + return lines + return super().get_doc(None, ignore) # type: ignore + + def format_signature(self, **kwargs: Any) -> str: + if self.args is None and self.env.config.autodoc_docstring_signature: # type: ignore + # only act if a signature is not explicitly given already, and if + # the feature is enabled + result = self._find_signature() + if result is not None: + self.args, self.retann = result + return super().format_signature(**kwargs) # type: ignore + + +class DocstringStripSignatureMixin(DocstringSignatureMixin): + """ + Mixin for AttributeDocumenter to provide the + feature of stripping any function signature from the docstring. + """ + def format_signature(self, **kwargs: Any) -> str: + if self.args is None and self.env.config.autodoc_docstring_signature: # type: ignore + # only act if a signature is not explicitly given already, and if + # the feature is enabled + result = self._find_signature() + if result is not None: + # Discarding _args is a only difference with + # DocstringSignatureMixin.format_signature. + # Documenter.format_signature use self.args value to format. + _args, self.retann = result + return super().format_signature(**kwargs) + + +class FunctionDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # type: ignore + """ + Specialized Documenter subclass for functions. + """ + objtype = 'function' + member_order = 30 + + @classmethod + def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any + ) -> bool: + # supports functions, builtins and bound methods exported at the module level + return (inspect.isfunction(member) or inspect.isbuiltin(member) or + (inspect.isroutine(member) and isinstance(parent, ModuleDocumenter))) + + def format_args(self, **kwargs: Any) -> str: + if self.env.config.autodoc_typehints in ('none', 'description'): + kwargs.setdefault('show_annotation', False) + + unwrapped = inspect.unwrap(self.object) + if ((inspect.isbuiltin(unwrapped) or inspect.ismethoddescriptor(unwrapped)) and + not inspect.is_cython_function_or_method(unwrapped)): + # cannot introspect arguments of a C function or method + return None + try: + if (not inspect.isfunction(unwrapped) and + not inspect.ismethod(unwrapped) and + not inspect.isbuiltin(unwrapped) and + not inspect.is_cython_function_or_method(unwrapped) and + not inspect.isclass(unwrapped) and + hasattr(unwrapped, '__call__')): + self.env.app.emit('autodoc-before-process-signature', + unwrapped.__call__, False) + sig = inspect.signature(unwrapped.__call__) + else: + self.env.app.emit('autodoc-before-process-signature', unwrapped, False) + sig = inspect.signature(unwrapped) + args = stringify_signature(sig, **kwargs) + except TypeError: + if (inspect.is_builtin_class_method(unwrapped, '__new__') and + inspect.is_builtin_class_method(unwrapped, '__init__')): + raise TypeError('%r is a builtin class' % unwrapped) + + # if a class should be documented as function (yay duck + # typing) we try to use the constructor signature as function + # signature without the first argument. + try: + self.env.app.emit('autodoc-before-process-signature', + unwrapped.__new__, True) + sig = inspect.signature(unwrapped.__new__, bound_method=True) + args = stringify_signature(sig, show_return_annotation=False, **kwargs) + except TypeError: + self.env.app.emit('autodoc-before-process-signature', + unwrapped.__init__, True) + sig = inspect.signature(unwrapped.__init__, bound_method=True) + args = stringify_signature(sig, show_return_annotation=False, **kwargs) + + if self.env.config.strip_signature_backslash: + # escape backslashes for reST + args = args.replace('\\', '\\\\') + return args + + def document_members(self, all_members: bool = False) -> None: + pass + + def add_directive_header(self, sig: str) -> None: + sourcename = self.get_sourcename() + super().add_directive_header(sig) + + if inspect.iscoroutinefunction(self.object): + self.add_line(' :async:', sourcename) + + +class SingledispatchFunctionDocumenter(FunctionDocumenter): + """ + Specialized Documenter subclass for singledispatch'ed functions. + """ + objtype = 'singledispatch_function' + directivetype = 'function' + member_order = 30 + + # before FunctionDocumenter + priority = FunctionDocumenter.priority + 1 + + @classmethod + def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any + ) -> bool: + return (super().can_document_member(member, membername, isattr, parent) and + inspect.is_singledispatch_function(member)) + + def add_directive_header(self, sig: str) -> None: + sourcename = self.get_sourcename() + + # intercept generated directive headers + # TODO: It is very hacky to use mock to intercept header generation + with patch.object(self, 'add_line') as add_line: + super().add_directive_header(sig) + + # output first line of header + self.add_line(*add_line.call_args_list[0][0]) + + # inserts signature of singledispatch'ed functions + for typ, func in self.object.registry.items(): + if typ is object: + pass # default implementation. skipped. + else: + self.annotate_to_first_argument(func, typ) + + documenter = FunctionDocumenter(self.directive, '') + documenter.object = func + self.add_line(' %s%s' % (self.format_name(), + documenter.format_signature()), + sourcename) + + # output remains of directive header + for call in add_line.call_args_list[1:]: + self.add_line(*call[0]) + + def annotate_to_first_argument(self, func: Callable, typ: Type) -> None: + """Annotate type hint to the first argument of function if needed.""" + sig = inspect.signature(func) + if len(sig.parameters) == 0: + return + + params = list(sig.parameters.values()) + if params[0].annotation is Parameter.empty: + params[0] = params[0].replace(annotation=typ) + func.__signature__ = sig.replace(parameters=params) # type: ignore + + +class DecoratorDocumenter(FunctionDocumenter): + """ + Specialized Documenter subclass for decorator functions. + """ + objtype = 'decorator' + + # must be lower than FunctionDocumenter + priority = -1 + + def format_args(self, **kwargs: Any) -> Any: + args = super().format_args(**kwargs) + if ',' in args: + return args + else: + return None + + +class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # type: ignore + """ + Specialized Documenter subclass for classes. + """ + objtype = 'class' + member_order = 20 + option_spec = { + 'members': members_option, 'undoc-members': bool_option, + 'noindex': bool_option, 'inherited-members': inherited_members_option, + 'show-inheritance': bool_option, 'member-order': identity, + 'exclude-members': members_set_option, + 'private-members': bool_option, 'special-members': members_option, + } # type: Dict[str, Callable] + + def __init__(self, *args: Any) -> None: + super().__init__(*args) + merge_special_members_option(self.options) + + @classmethod + def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any + ) -> bool: + return isinstance(member, type) + + def import_object(self) -> Any: + ret = super().import_object() + # if the class is documented under another name, document it + # as data/attribute + if ret: + if hasattr(self.object, '__name__'): + self.doc_as_attr = (self.objpath[-1] != self.object.__name__) + else: + self.doc_as_attr = True + return ret + + def format_args(self, **kwargs: Any) -> str: + if self.env.config.autodoc_typehints in ('none', 'description'): + kwargs.setdefault('show_annotation', False) + + # for classes, the relevant signature is the __init__ method's + initmeth = self.get_attr(self.object, '__init__', None) + # classes without __init__ method, default __init__ or + # __init__ written in C? + if initmeth is None or \ + inspect.is_builtin_class_method(self.object, '__init__') or \ + not(inspect.ismethod(initmeth) or inspect.isfunction(initmeth)): + return None + try: + self.env.app.emit('autodoc-before-process-signature', initmeth, True) + sig = inspect.signature(initmeth, bound_method=True) + return stringify_signature(sig, show_return_annotation=False, **kwargs) + except TypeError: + # still not possible: happens e.g. for old-style classes + # with __init__ in C + return None + + def format_signature(self, **kwargs: Any) -> str: + if self.doc_as_attr: + return '' + + return super().format_signature(**kwargs) + + def add_directive_header(self, sig: str) -> None: + if self.doc_as_attr: + self.directivetype = 'attribute' + super().add_directive_header(sig) + + # add inheritance info, if wanted + if not self.doc_as_attr and self.options.show_inheritance: + sourcename = self.get_sourcename() + self.add_line('', sourcename) + if hasattr(self.object, '__bases__') and len(self.object.__bases__): + bases = [':class:`%s`' % b.__name__ + if b.__module__ in ('__builtin__', 'builtins') + else ':class:`%s.%s`' % (b.__module__, b.__qualname__) + for b in self.object.__bases__] + self.add_line(' ' + _('Bases: %s') % ', '.join(bases), + sourcename) + + def get_doc(self, encoding: str = None, ignore: int = 1) -> List[List[str]]: + if encoding is not None: + warnings.warn("The 'encoding' argument to autodoc.%s.get_doc() is deprecated." + % self.__class__.__name__, + RemovedInSphinx40Warning) + lines = getattr(self, '_new_docstrings', None) + if lines is not None: + return lines + + content = self.env.config.autoclass_content + + docstrings = [] + attrdocstring = self.get_attr(self.object, '__doc__', None) + if attrdocstring: + docstrings.append(attrdocstring) + + # for classes, what the "docstring" is can be controlled via a + # config value; the default is only the class docstring + if content in ('both', 'init'): + __init__ = self.get_attr(self.object, '__init__', None) + initdocstring = getdoc(__init__, self.get_attr, + self.env.config.autodoc_inherit_docstrings) + # for new-style classes, no __init__ means default __init__ + if (initdocstring is not None and + (initdocstring == object.__init__.__doc__ or # for pypy + initdocstring.strip() == object.__init__.__doc__)): # for !pypy + initdocstring = None + if not initdocstring: + # try __new__ + __new__ = self.get_attr(self.object, '__new__', None) + initdocstring = getdoc(__new__, self.get_attr, + self.env.config.autodoc_inherit_docstrings) + # for new-style classes, no __new__ means default __new__ + if (initdocstring is not None and + (initdocstring == object.__new__.__doc__ or # for pypy + initdocstring.strip() == object.__new__.__doc__)): # for !pypy + initdocstring = None + if initdocstring: + if content == 'init': + docstrings = [initdocstring] + else: + docstrings.append(initdocstring) + + tab_width = self.directive.state.document.settings.tab_width + return [prepare_docstring(docstring, ignore, tab_width) for docstring in docstrings] + + def add_content(self, more_content: Any, no_docstring: bool = False) -> None: + if self.doc_as_attr: + classname = safe_getattr(self.object, '__qualname__', None) + if not classname: + classname = safe_getattr(self.object, '__name__', None) + if classname: + module = safe_getattr(self.object, '__module__', None) + parentmodule = safe_getattr(self.parent, '__module__', None) + if module and module != parentmodule: + classname = str(module) + '.' + str(classname) + content = StringList([_('alias of :class:`%s`') % classname], source='') + super().add_content(content, no_docstring=True) + else: + super().add_content(more_content) + + def document_members(self, all_members: bool = False) -> None: + if self.doc_as_attr: + return + super().document_members(all_members) + + def generate(self, more_content: Any = None, real_modname: str = None, + check_module: bool = False, all_members: bool = False) -> None: + # Do not pass real_modname and use the name from the __module__ + # attribute of the class. + # If a class gets imported into the module real_modname + # the analyzer won't find the source of the class, if + # it looks in real_modname. + return super().generate(more_content=more_content, + check_module=check_module, + all_members=all_members) + + +class ExceptionDocumenter(ClassDocumenter): + """ + Specialized ClassDocumenter subclass for exceptions. + """ + objtype = 'exception' + member_order = 10 + + # needs a higher priority than ClassDocumenter + priority = 10 + + @classmethod + def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any + ) -> bool: + return isinstance(member, type) and issubclass(member, BaseException) + + +class DataDocumenter(ModuleLevelDocumenter): + """ + Specialized Documenter subclass for data items. + """ + objtype = 'data' + member_order = 40 + priority = -10 + option_spec = dict(ModuleLevelDocumenter.option_spec) + option_spec["annotation"] = annotation_option + + @classmethod + def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any + ) -> bool: + return isinstance(parent, ModuleDocumenter) and isattr + + def add_directive_header(self, sig: str) -> None: + super().add_directive_header(sig) + sourcename = self.get_sourcename() + if not self.options.annotation: + # obtain annotation for this data + annotations = getattr(self.parent, '__annotations__', {}) + if annotations and self.objpath[-1] in annotations: + objrepr = stringify_typehint(annotations.get(self.objpath[-1])) + self.add_line(' :type: ' + objrepr, sourcename) + else: + key = ('.'.join(self.objpath[:-1]), self.objpath[-1]) + if self.analyzer and key in self.analyzer.annotations: + self.add_line(' :type: ' + self.analyzer.annotations[key], + sourcename) + + try: + objrepr = object_description(self.object) + self.add_line(' :value: ' + objrepr, sourcename) + except ValueError: + pass + elif self.options.annotation is SUPPRESS: + pass + else: + self.add_line(' :annotation: %s' % self.options.annotation, + sourcename) + + def document_members(self, all_members: bool = False) -> None: + pass + + def get_real_modname(self) -> str: + return self.get_attr(self.parent or self.object, '__module__', None) \ + or self.modname + + +class DataDeclarationDocumenter(DataDocumenter): + """ + Specialized Documenter subclass for data that cannot be imported + because they are declared without initial value (refs: PEP-526). + """ + objtype = 'datadecl' + directivetype = 'data' + member_order = 60 + + # must be higher than AttributeDocumenter + priority = 11 + + @classmethod + def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any + ) -> bool: + """This documents only INSTANCEATTR members.""" + return (isinstance(parent, ModuleDocumenter) and + isattr and + member is INSTANCEATTR) + + def import_object(self) -> bool: + """Never import anything.""" + # disguise as a data + self.objtype = 'data' + try: + # import module to obtain type annotation + self.parent = importlib.import_module(self.modname) + except ImportError: + pass + + return True + + def add_content(self, more_content: Any, no_docstring: bool = False) -> None: + """Never try to get a docstring from the object.""" + super().add_content(more_content, no_docstring=True) + + +class MethodDocumenter(DocstringSignatureMixin, ClassLevelDocumenter): # type: ignore + """ + Specialized Documenter subclass for methods (normal, static and class). + """ + objtype = 'method' + directivetype = 'method' + member_order = 50 + priority = 1 # must be more than FunctionDocumenter + + @classmethod + def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any + ) -> bool: + return inspect.isroutine(member) and \ + not isinstance(parent, ModuleDocumenter) + + def import_object(self) -> Any: + ret = super().import_object() + if not ret: + return ret + + # to distinguish classmethod/staticmethod + obj = self.parent.__dict__.get(self.object_name) + if obj is None: + obj = self.object + + if (inspect.isclassmethod(obj) or + inspect.isstaticmethod(obj, cls=self.parent, name=self.object_name)): + # document class and static members before ordinary ones + self.member_order = self.member_order - 1 + + return ret + + def format_args(self, **kwargs: Any) -> str: + if self.env.config.autodoc_typehints in ('none', 'description'): + kwargs.setdefault('show_annotation', False) + + unwrapped = inspect.unwrap(self.object) + if ((inspect.isbuiltin(unwrapped) or inspect.ismethoddescriptor(unwrapped)) and + not inspect.is_cython_function_or_method(unwrapped)): + # can never get arguments of a C function or method + return None + if inspect.isstaticmethod(unwrapped, cls=self.parent, name=self.object_name): + self.env.app.emit('autodoc-before-process-signature', unwrapped, False) + sig = inspect.signature(unwrapped, bound_method=False) + else: + self.env.app.emit('autodoc-before-process-signature', unwrapped, True) + sig = inspect.signature(unwrapped, bound_method=True) + args = stringify_signature(sig, **kwargs) + + if self.env.config.strip_signature_backslash: + # escape backslashes for reST + args = args.replace('\\', '\\\\') + return args + + def add_directive_header(self, sig: str) -> None: + super().add_directive_header(sig) + + sourcename = self.get_sourcename() + obj = self.parent.__dict__.get(self.object_name, self.object) + if inspect.isabstractmethod(obj): + self.add_line(' :abstractmethod:', sourcename) + if inspect.iscoroutinefunction(obj): + self.add_line(' :async:', sourcename) + if inspect.isclassmethod(obj): + self.add_line(' :classmethod:', sourcename) + if inspect.isstaticmethod(obj, cls=self.parent, name=self.object_name): + self.add_line(' :staticmethod:', sourcename) + + def document_members(self, all_members: bool = False) -> None: + pass + + +class SingledispatchMethodDocumenter(MethodDocumenter): + """ + Specialized Documenter subclass for singledispatch'ed methods. + """ + objtype = 'singledispatch_method' + directivetype = 'method' + member_order = 50 + + # before MethodDocumenter + priority = MethodDocumenter.priority + 1 + + @classmethod + def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any + ) -> bool: + if super().can_document_member(member, membername, isattr, parent) and parent.object: + meth = parent.object.__dict__.get(membername) + return inspect.is_singledispatch_method(meth) + else: + return False + + def add_directive_header(self, sig: str) -> None: + sourcename = self.get_sourcename() + + # intercept generated directive headers + # TODO: It is very hacky to use mock to intercept header generation + with patch.object(self, 'add_line') as add_line: + super().add_directive_header(sig) + + # output first line of header + self.add_line(*add_line.call_args_list[0][0]) + + # inserts signature of singledispatch'ed functions + meth = self.parent.__dict__.get(self.objpath[-1]) + for typ, func in meth.dispatcher.registry.items(): + if typ is object: + pass # default implementation. skipped. + else: + self.annotate_to_first_argument(func, typ) + + documenter = MethodDocumenter(self.directive, '') + documenter.object = func + self.add_line(' %s%s' % (self.format_name(), + documenter.format_signature()), + sourcename) + + # output remains of directive header + for call in add_line.call_args_list[1:]: + self.add_line(*call[0]) + + def annotate_to_first_argument(self, func: Callable, typ: Type) -> None: + """Annotate type hint to the first argument of function if needed.""" + sig = inspect.signature(func) + if len(sig.parameters) == 1: + return + + params = list(sig.parameters.values()) + if params[1].annotation is Parameter.empty: + params[1] = params[1].replace(annotation=typ) + func.__signature__ = sig.replace(parameters=params) # type: ignore + + +class AttributeDocumenter(DocstringStripSignatureMixin, ClassLevelDocumenter): # type: ignore + """ + Specialized Documenter subclass for attributes. + """ + objtype = 'attribute' + member_order = 60 + option_spec = dict(ModuleLevelDocumenter.option_spec) + option_spec["annotation"] = annotation_option + + # must be higher than the MethodDocumenter, else it will recognize + # some non-data descriptors as methods + priority = 10 + + @staticmethod + def is_function_or_method(obj: Any) -> bool: + return inspect.isfunction(obj) or inspect.isbuiltin(obj) or inspect.ismethod(obj) + + @classmethod + def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any + ) -> bool: + if inspect.isattributedescriptor(member): + return True + elif (not isinstance(parent, ModuleDocumenter) and + not inspect.isroutine(member) and + not isinstance(member, type)): + return True + else: + return False + + def document_members(self, all_members: bool = False) -> None: + pass + + def import_object(self) -> Any: + ret = super().import_object() + if inspect.isenumattribute(self.object): + self.object = self.object.value + if inspect.isattributedescriptor(self.object): + self._datadescriptor = True + else: + # if it's not a data descriptor + self._datadescriptor = False + return ret + + def get_real_modname(self) -> str: + return self.get_attr(self.parent or self.object, '__module__', None) \ + or self.modname + + def add_directive_header(self, sig: str) -> None: + super().add_directive_header(sig) + sourcename = self.get_sourcename() + if not self.options.annotation: + if not self._datadescriptor: + # obtain annotation for this attribute + annotations = getattr(self.parent, '__annotations__', {}) + if annotations and self.objpath[-1] in annotations: + objrepr = stringify_typehint(annotations.get(self.objpath[-1])) + self.add_line(' :type: ' + objrepr, sourcename) + else: + key = ('.'.join(self.objpath[:-1]), self.objpath[-1]) + if self.analyzer and key in self.analyzer.annotations: + self.add_line(' :type: ' + self.analyzer.annotations[key], + sourcename) + + try: + objrepr = object_description(self.object) + self.add_line(' :value: ' + objrepr, sourcename) + except ValueError: + pass + elif self.options.annotation is SUPPRESS: + pass + else: + self.add_line(' :annotation: %s' % self.options.annotation, sourcename) + + def add_content(self, more_content: Any, no_docstring: bool = False) -> None: + if not self._datadescriptor: + # if it's not a data descriptor, its docstring is very probably the + # wrong thing to display + no_docstring = True + super().add_content(more_content, no_docstring) + + +class PropertyDocumenter(DocstringStripSignatureMixin, ClassLevelDocumenter): # type: ignore + """ + Specialized Documenter subclass for properties. + """ + objtype = 'property' + directivetype = 'method' + member_order = 60 + + # before AttributeDocumenter + priority = AttributeDocumenter.priority + 1 + + @classmethod + def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any + ) -> bool: + return inspect.isproperty(member) and isinstance(parent, ClassDocumenter) + + def document_members(self, all_members: bool = False) -> None: + pass + + def get_real_modname(self) -> str: + return self.get_attr(self.parent or self.object, '__module__', None) \ + or self.modname + + def add_directive_header(self, sig: str) -> None: + super().add_directive_header(sig) + sourcename = self.get_sourcename() + if inspect.isabstractmethod(self.object): + self.add_line(' :abstractmethod:', sourcename) + self.add_line(' :property:', sourcename) + + +class InstanceAttributeDocumenter(AttributeDocumenter): + """ + Specialized Documenter subclass for attributes that cannot be imported + because they are instance attributes (e.g. assigned in __init__). + """ + objtype = 'instanceattribute' + directivetype = 'attribute' + member_order = 60 + + # must be higher than AttributeDocumenter + priority = 11 + + @classmethod + def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any + ) -> bool: + """This documents only INSTANCEATTR members.""" + return (not isinstance(parent, ModuleDocumenter) and + isattr and + member is INSTANCEATTR) + + def import_object(self) -> bool: + """Never import anything.""" + # disguise as an attribute + self.objtype = 'attribute' + self._datadescriptor = False + return True + + def add_content(self, more_content: Any, no_docstring: bool = False) -> None: + """Never try to get a docstring from the object.""" + super().add_content(more_content, no_docstring=True) + + +class SlotsAttributeDocumenter(AttributeDocumenter): + """ + Specialized Documenter subclass for attributes that cannot be imported + because they are attributes in __slots__. + """ + objtype = 'slotsattribute' + directivetype = 'attribute' + member_order = 60 + + # must be higher than AttributeDocumenter + priority = 11 + + @classmethod + def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any + ) -> bool: + """This documents only SLOTSATTR members.""" + return member is SLOTSATTR + + def import_object(self) -> Any: + """Never import anything.""" + # disguise as an attribute + self.objtype = 'attribute' + self._datadescriptor = True + + with mock(self.env.config.autodoc_mock_imports): + try: + ret = import_object(self.modname, self.objpath[:-1], 'class', + attrgetter=self.get_attr, + warningiserror=self.env.config.autodoc_warningiserror) + self.module, _, _, self.parent = ret + return True + except ImportError as exc: + logger.warning(exc.args[0], type='autodoc', subtype='import_object') + self.env.note_reread() + return False + + def get_doc(self, encoding: str = None, ignore: int = 1) -> List[List[str]]: + """Decode and return lines of the docstring(s) for the object.""" + name = self.objpath[-1] + __slots__ = safe_getattr(self.parent, '__slots__', []) + if isinstance(__slots__, dict) and isinstance(__slots__.get(name), str): + docstring = prepare_docstring(__slots__[name]) + return [docstring] + else: + return [] + + +def get_documenters(app: Sphinx) -> Dict[str, "Type[Documenter]"]: + """Returns registered Documenter classes""" + warnings.warn("get_documenters() is deprecated.", RemovedInSphinx50Warning) + return app.registry.documenters + + +def autodoc_attrgetter(app: Sphinx, obj: Any, name: str, *defargs: Any) -> Any: + """Alternative getattr() for types""" + for typ, func in app.registry.autodoc_attrgettrs.items(): + if isinstance(obj, typ): + return func(obj, name, *defargs) + + return safe_getattr(obj, name, *defargs) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_autodocumenter(ModuleDocumenter) + app.add_autodocumenter(ClassDocumenter) + app.add_autodocumenter(ExceptionDocumenter) + app.add_autodocumenter(DataDocumenter) + app.add_autodocumenter(DataDeclarationDocumenter) + app.add_autodocumenter(FunctionDocumenter) + app.add_autodocumenter(SingledispatchFunctionDocumenter) + app.add_autodocumenter(DecoratorDocumenter) + app.add_autodocumenter(MethodDocumenter) + app.add_autodocumenter(SingledispatchMethodDocumenter) + app.add_autodocumenter(AttributeDocumenter) + app.add_autodocumenter(PropertyDocumenter) + app.add_autodocumenter(InstanceAttributeDocumenter) + app.add_autodocumenter(SlotsAttributeDocumenter) + + app.add_config_value('autoclass_content', 'class', True, ENUM('both', 'class', 'init')) + app.add_config_value('autodoc_member_order', 'alphabetic', True) + app.add_config_value('autodoc_default_options', {}, True) + app.add_config_value('autodoc_docstring_signature', True, True) + app.add_config_value('autodoc_mock_imports', [], True) + app.add_config_value('autodoc_typehints', "signature", True, + ENUM("signature", "description", "none")) + app.add_config_value('autodoc_warningiserror', True, True) + app.add_config_value('autodoc_inherit_docstrings', True, True) + app.add_event('autodoc-before-process-signature') + app.add_event('autodoc-process-docstring') + app.add_event('autodoc-process-signature') + app.add_event('autodoc-skip-member') + + app.setup_extension('sphinx.ext.autodoc.type_comment') + app.setup_extension('sphinx.ext.autodoc.typehints') + + return {'version': sphinx.__display_version__, 'parallel_read_safe': True} diff --git a/sphinx/sphinx/ext/autodoc/directive.py b/sphinx/sphinx/ext/autodoc/directive.py new file mode 100644 index 0000000..3be19f0 --- /dev/null +++ b/sphinx/sphinx/ext/autodoc/directive.py @@ -0,0 +1,158 @@ +""" + sphinx.ext.autodoc.directive + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import warnings +from typing import Any, Callable, Dict, List, Set + +from docutils import nodes +from docutils.nodes import Element, Node +from docutils.parsers.rst.states import RSTState, Struct +from docutils.statemachine import StringList +from docutils.utils import Reporter, assemble_option_dict + +from sphinx.config import Config +from sphinx.deprecation import RemovedInSphinx40Warning +from sphinx.environment import BuildEnvironment +from sphinx.ext.autodoc import Documenter, Options +from sphinx.util import logging +from sphinx.util.docutils import SphinxDirective, switch_source_input +from sphinx.util.nodes import nested_parse_with_titles + +if False: + # For type annotation + from typing import Type # for python3.5.1 + + +logger = logging.getLogger(__name__) + + +# common option names for autodoc directives +AUTODOC_DEFAULT_OPTIONS = ['members', 'undoc-members', 'inherited-members', + 'show-inheritance', 'private-members', 'special-members', + 'ignore-module-all', 'exclude-members', 'member-order', + 'imported-members'] + + +class DummyOptionSpec(dict): + """An option_spec allows any options.""" + + def __bool__(self) -> bool: + """Behaves like some options are defined.""" + return True + + def __getitem__(self, key: str) -> Callable[[str], str]: + return lambda x: x + + +class DocumenterBridge: + """A parameters container for Documenters.""" + + def __init__(self, env: BuildEnvironment, reporter: Reporter, options: Options, + lineno: int, state: Any = None) -> None: + self.env = env + self.reporter = reporter + self.genopt = options + self.lineno = lineno + self.filename_set = set() # type: Set[str] + self.result = StringList() + + if state: + self.state = state + else: + # create fake object for self.state.document.settings.tab_width + warnings.warn('DocumenterBridge requires a state object on instantiation.', + RemovedInSphinx40Warning) + settings = Struct(tab_width=8) + document = Struct(settings=settings) + self.state = Struct(document=document) + + def warn(self, msg: str) -> None: + logger.warning(msg, location=(self.env.docname, self.lineno)) + + +def process_documenter_options(documenter: "Type[Documenter]", config: Config, options: Dict + ) -> Options: + """Recognize options of Documenter from user input.""" + for name in AUTODOC_DEFAULT_OPTIONS: + if name not in documenter.option_spec: + continue + else: + negated = options.pop('no-' + name, True) is None + if name in config.autodoc_default_options and not negated: + options[name] = config.autodoc_default_options[name] + + return Options(assemble_option_dict(options.items(), documenter.option_spec)) + + +def parse_generated_content(state: RSTState, content: StringList, documenter: Documenter + ) -> List[Node]: + """Parse a generated content by Documenter.""" + with switch_source_input(state, content): + if documenter.titles_allowed: + node = nodes.section() # type: Element + # necessary so that the child nodes get the right source/line set + node.document = state.document + nested_parse_with_titles(state, content, node) + else: + node = nodes.paragraph() + node.document = state.document + state.nested_parse(content, 0, node) + + return node.children + + +class AutodocDirective(SphinxDirective): + """A directive class for all autodoc directives. It works as a dispatcher of Documenters. + + It invokes a Documenter on running. After the processing, it parses and returns + the generated content by Documenter. + """ + option_spec = DummyOptionSpec() + has_content = True + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = True + + def run(self) -> List[Node]: + reporter = self.state.document.reporter + + try: + source, lineno = reporter.get_source_and_line(self.lineno) # type: ignore + except AttributeError: + source, lineno = (None, None) + logger.debug('[autodoc] %s:%s: input:\n%s', source, lineno, self.block_text) + + # look up target Documenter + objtype = self.name[4:] # strip prefix (auto-). + doccls = self.env.app.registry.documenters[objtype] + + # process the options with the selected documenter's option_spec + try: + documenter_options = process_documenter_options(doccls, self.config, self.options) + except (KeyError, ValueError, TypeError) as exc: + # an option is either unknown or has a wrong type + logger.error('An option to %s is either unknown or has an invalid value: %s' % + (self.name, exc), location=(self.env.docname, lineno)) + return [] + + # generate the output + params = DocumenterBridge(self.env, reporter, documenter_options, lineno, self.state) + documenter = doccls(params, self.arguments[0]) + documenter.generate(more_content=self.content) + if not params.result: + return [] + + logger.debug('[autodoc] output:\n%s', '\n'.join(params.result)) + + # record all filenames as dependencies -- this will at least + # partially make automatic invalidation possible + for fn in params.filename_set: + self.state.document.settings.record_dependencies.add(fn) + + result = parse_generated_content(self.state, params.result, documenter) + return result diff --git a/sphinx/sphinx/ext/autodoc/importer.py b/sphinx/sphinx/ext/autodoc/importer.py new file mode 100644 index 0000000..e98b979 --- /dev/null +++ b/sphinx/sphinx/ext/autodoc/importer.py @@ -0,0 +1,194 @@ +""" + sphinx.ext.autodoc.importer + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Importer utilities for autodoc + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import importlib +import traceback +import warnings +from collections import namedtuple +from typing import Any, Callable, Dict, List, Mapping, Tuple + +from sphinx.deprecation import RemovedInSphinx40Warning, deprecated_alias +from sphinx.util import logging +from sphinx.util.inspect import isclass, isenumclass, safe_getattr + +logger = logging.getLogger(__name__) + + +def import_module(modname: str, warningiserror: bool = False) -> Any: + """ + Call importlib.import_module(modname), convert exceptions to ImportError + """ + try: + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", category=ImportWarning) + with logging.skip_warningiserror(not warningiserror): + return importlib.import_module(modname) + except BaseException as exc: + # Importing modules may cause any side effects, including + # SystemExit, so we need to catch all errors. + raise ImportError(exc, traceback.format_exc()) + + +def import_object(modname: str, objpath: List[str], objtype: str = '', + attrgetter: Callable[[Any, str], Any] = safe_getattr, + warningiserror: bool = False) -> Any: + if objpath: + logger.debug('[autodoc] from %s import %s', modname, '.'.join(objpath)) + else: + logger.debug('[autodoc] import %s', modname) + + try: + module = None + exc_on_importing = None + objpath = list(objpath) + while module is None: + try: + module = import_module(modname, warningiserror=warningiserror) + logger.debug('[autodoc] import %s => %r', modname, module) + except ImportError as exc: + logger.debug('[autodoc] import %s => failed', modname) + exc_on_importing = exc + if '.' in modname: + # retry with parent module + modname, name = modname.rsplit('.', 1) + objpath.insert(0, name) + else: + raise + + obj = module + parent = None + object_name = None + for attrname in objpath: + parent = obj + logger.debug('[autodoc] getattr(_, %r)', attrname) + obj = attrgetter(obj, attrname) + logger.debug('[autodoc] => %r', obj) + object_name = attrname + return [module, parent, object_name, obj] + except (AttributeError, ImportError) as exc: + if isinstance(exc, AttributeError) and exc_on_importing: + # restore ImportError + exc = exc_on_importing + + if objpath: + errmsg = ('autodoc: failed to import %s %r from module %r' % + (objtype, '.'.join(objpath), modname)) + else: + errmsg = 'autodoc: failed to import %s %r' % (objtype, modname) + + if isinstance(exc, ImportError): + # import_module() raises ImportError having real exception obj and + # traceback + real_exc, traceback_msg = exc.args + if isinstance(real_exc, SystemExit): + errmsg += ('; the module executes module level statement ' + 'and it might call sys.exit().') + elif isinstance(real_exc, ImportError) and real_exc.args: + errmsg += '; the following exception was raised:\n%s' % real_exc.args[0] + else: + errmsg += '; the following exception was raised:\n%s' % traceback_msg + else: + errmsg += '; the following exception was raised:\n%s' % traceback.format_exc() + + logger.debug(errmsg) + raise ImportError(errmsg) + + +def get_module_members(module: Any) -> List[Tuple[str, Any]]: + """Get members of target module.""" + from sphinx.ext.autodoc import INSTANCEATTR + + members = {} # type: Dict[str, Tuple[str, Any]] + for name in dir(module): + try: + value = safe_getattr(module, name, None) + members[name] = (name, value) + except AttributeError: + continue + + # annotation only member (ex. attr: int) + if hasattr(module, '__annotations__'): + for name in module.__annotations__: + if name not in members: + members[name] = (name, INSTANCEATTR) + + return sorted(list(members.values())) + + +Attribute = namedtuple('Attribute', ['name', 'directly_defined', 'value']) + + +def get_object_members(subject: Any, objpath: List[str], attrgetter: Callable, + analyzer: Any = None) -> Dict[str, Attribute]: + """Get members and attributes of target object.""" + from sphinx.ext.autodoc import INSTANCEATTR + + # the members directly defined in the class + obj_dict = attrgetter(subject, '__dict__', {}) + + members = {} # type: Dict[str, Attribute] + + # enum members + if isenumclass(subject): + for name, value in subject.__members__.items(): + if name not in members: + members[name] = Attribute(name, True, value) + + superclass = subject.__mro__[1] + for name, value in obj_dict.items(): + if name not in superclass.__dict__: + members[name] = Attribute(name, True, value) + + # members in __slots__ + if isclass(subject) and getattr(subject, '__slots__', None) is not None: + from sphinx.ext.autodoc import SLOTSATTR + + for name in subject.__slots__: + members[name] = Attribute(name, True, SLOTSATTR) + + # other members + for name in dir(subject): + try: + value = attrgetter(subject, name) + directly_defined = name in obj_dict + if name not in members: + members[name] = Attribute(name, directly_defined, value) + except AttributeError: + continue + + # annotation only member (ex. attr: int) + if hasattr(subject, '__annotations__') and isinstance(subject.__annotations__, Mapping): + for name in subject.__annotations__: + if name not in members: + members[name] = Attribute(name, True, INSTANCEATTR) + + if analyzer: + # append instance attributes (cf. self.attr1) if analyzer knows + namespace = '.'.join(objpath) + for (ns, name) in analyzer.find_attr_docs(): + if namespace == ns and name not in members: + members[name] = Attribute(name, True, INSTANCEATTR) + + return members + + +from sphinx.ext.autodoc.mock import ( # NOQA + _MockModule, _MockObject, MockFinder, MockLoader, mock +) + +deprecated_alias('sphinx.ext.autodoc.importer', + { + '_MockModule': _MockModule, + '_MockObject': _MockObject, + 'MockFinder': MockFinder, + 'MockLoader': MockLoader, + 'mock': mock, + }, + RemovedInSphinx40Warning) diff --git a/sphinx/sphinx/ext/autodoc/mock.py b/sphinx/sphinx/ext/autodoc/mock.py new file mode 100644 index 0000000..25f50d2 --- /dev/null +++ b/sphinx/sphinx/ext/autodoc/mock.py @@ -0,0 +1,147 @@ +""" + sphinx.ext.autodoc.mock + ~~~~~~~~~~~~~~~~~~~~~~~ + + mock for autodoc + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import contextlib +import os +import sys +from importlib.abc import Loader, MetaPathFinder +from importlib.machinery import ModuleSpec +from types import FunctionType, MethodType, ModuleType +from typing import Any, Generator, Iterator, List, Sequence, Tuple, Union + +from sphinx.util import logging + +logger = logging.getLogger(__name__) + + +class _MockObject: + """Used by autodoc_mock_imports.""" + + __display_name__ = '_MockObject' + + def __new__(cls, *args: Any, **kwargs: Any) -> Any: + if len(args) == 3 and isinstance(args[1], tuple): + superclass = args[1][-1].__class__ + if superclass is cls: + # subclassing MockObject + return _make_subclass(args[0], superclass.__display_name__, + superclass=superclass, attributes=args[2]) + + return super().__new__(cls) + + def __init__(self, *args: Any, **kwargs: Any) -> None: + self.__qualname__ = '' + + def __len__(self) -> int: + return 0 + + def __contains__(self, key: str) -> bool: + return False + + def __iter__(self) -> Iterator: + return iter([]) + + def __mro_entries__(self, bases: Tuple) -> Tuple: + return (self.__class__,) + + def __getitem__(self, key: str) -> "_MockObject": + return _make_subclass(key, self.__display_name__, self.__class__)() + + def __getattr__(self, key: str) -> "_MockObject": + return _make_subclass(key, self.__display_name__, self.__class__)() + + def __call__(self, *args: Any, **kwargs: Any) -> Any: + if args and type(args[0]) in [type, FunctionType, MethodType]: + # Appears to be a decorator, pass through unchanged + return args[0] + return self + + def __repr__(self) -> str: + return self.__display_name__ + + +def _make_subclass(name: str, module: str, superclass: Any = _MockObject, + attributes: Any = None) -> Any: + attrs = {'__module__': module, '__display_name__': module + '.' + name} + attrs.update(attributes or {}) + + return type(name, (superclass,), attrs) + + +class _MockModule(ModuleType): + """Used by autodoc_mock_imports.""" + __file__ = os.devnull + + def __init__(self, name: str) -> None: + super().__init__(name) + self.__all__ = [] # type: List[str] + self.__path__ = [] # type: List[str] + + def __getattr__(self, name: str) -> _MockObject: + return _make_subclass(name, self.__name__)() + + def __repr__(self) -> str: + return self.__name__ + + +class MockLoader(Loader): + """A loader for mocking.""" + def __init__(self, finder: "MockFinder") -> None: + super().__init__() + self.finder = finder + + def create_module(self, spec: ModuleSpec) -> ModuleType: + logger.debug('[autodoc] adding a mock module as %s!', spec.name) + self.finder.mocked_modules.append(spec.name) + return _MockModule(spec.name) + + def exec_module(self, module: ModuleType) -> None: + pass # nothing to do + + +class MockFinder(MetaPathFinder): + """A finder for mocking.""" + + def __init__(self, modnames: List[str]) -> None: + super().__init__() + self.modnames = modnames + self.loader = MockLoader(self) + self.mocked_modules = [] # type: List[str] + + def find_spec(self, fullname: str, path: Sequence[Union[bytes, str]], + target: ModuleType = None) -> ModuleSpec: + for modname in self.modnames: + # check if fullname is (or is a descendant of) one of our targets + if modname == fullname or fullname.startswith(modname + '.'): + return ModuleSpec(fullname, self.loader) + + return None + + def invalidate_caches(self) -> None: + """Invalidate mocked modules on sys.modules.""" + for modname in self.mocked_modules: + sys.modules.pop(modname, None) + + +@contextlib.contextmanager +def mock(modnames: List[str]) -> Generator[None, None, None]: + """Insert mock modules during context:: + + with mock(['target.module.name']): + # mock modules are enabled here + ... + """ + try: + finder = MockFinder(modnames) + sys.meta_path.insert(0, finder) + yield + finally: + sys.meta_path.remove(finder) + finder.invalidate_caches() diff --git a/sphinx/sphinx/ext/autodoc/type_comment.py b/sphinx/sphinx/ext/autodoc/type_comment.py new file mode 100644 index 0000000..e6a77f2 --- /dev/null +++ b/sphinx/sphinx/ext/autodoc/type_comment.py @@ -0,0 +1,138 @@ +""" + sphinx.ext.autodoc.type_comment + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Update annotations info of living objects using type_comments. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from inspect import Parameter, Signature, getsource +from typing import Any, Dict, List +from typing import cast + +import sphinx +from sphinx.application import Sphinx +from sphinx.locale import __ +from sphinx.pycode.ast import ast +from sphinx.pycode.ast import parse as ast_parse +from sphinx.pycode.ast import unparse as ast_unparse +from sphinx.util import inspect +from sphinx.util import logging + +logger = logging.getLogger(__name__) + + +def not_suppressed(argtypes: List[ast.AST] = []) -> bool: + """Check given *argtypes* is suppressed type_comment or not.""" + if len(argtypes) == 0: # no argtypees + return False + elif len(argtypes) == 1 and ast_unparse(argtypes[0]) == "...": # suppressed + # Note: To support multiple versions of python, this uses ``ast_unparse()`` for + # comparison with Ellipsis. Since 3.8, ast.Constant has been used to represent + # Ellipsis node instead of ast.Ellipsis. + return False + else: # not suppressed + return True + + +def signature_from_ast(node: ast.FunctionDef, bound_method: bool, + type_comment: ast.FunctionDef) -> Signature: + """Return a Signature object for the given *node*. + + :param bound_method: Specify *node* is a bound method or not + """ + params = [] + if hasattr(node.args, "posonlyargs"): # for py38+ + for arg in node.args.posonlyargs: # type: ignore + param = Parameter(arg.arg, Parameter.POSITIONAL_ONLY, annotation=arg.type_comment) + params.append(param) + + for arg in node.args.args: + param = Parameter(arg.arg, Parameter.POSITIONAL_OR_KEYWORD, + annotation=arg.type_comment or Parameter.empty) + params.append(param) + + if node.args.vararg: + param = Parameter(node.args.vararg.arg, Parameter.VAR_POSITIONAL, + annotation=node.args.vararg.type_comment or Parameter.empty) + params.append(param) + + for arg in node.args.kwonlyargs: + param = Parameter(arg.arg, Parameter.KEYWORD_ONLY, + annotation=arg.type_comment or Parameter.empty) + params.append(param) + + if node.args.kwarg: + param = Parameter(node.args.kwarg.arg, Parameter.VAR_KEYWORD, + annotation=node.args.kwarg.type_comment or Parameter.empty) + params.append(param) + + # Remove first parameter when *obj* is bound_method + if bound_method and params: + params.pop(0) + + # merge type_comment into signature + if not_suppressed(type_comment.argtypes): # type: ignore + for i, param in enumerate(params): + params[i] = param.replace(annotation=type_comment.argtypes[i]) # type: ignore + + if node.returns: + return Signature(params, return_annotation=node.returns) + elif type_comment.returns: + return Signature(params, return_annotation=ast_unparse(type_comment.returns)) + else: + return Signature(params) + + +def get_type_comment(obj: Any, bound_method: bool = False) -> Signature: + """Get type_comment'ed FunctionDef object from living object. + + This tries to parse original code for living object and returns + Signature for given *obj*. It requires py38+ or typed_ast module. + """ + try: + source = getsource(obj) + if source.startswith((' ', r'\t')): + # subject is placed inside class or block. To read its docstring, + # this adds if-block before the declaration. + module = ast_parse('if True:\n' + source) + subject = cast(ast.FunctionDef, module.body[0].body[0]) # type: ignore + else: + module = ast_parse(source) + subject = cast(ast.FunctionDef, module.body[0]) # type: ignore + + if getattr(subject, "type_comment", None): + function = ast_parse(subject.type_comment, mode='func_type') + return signature_from_ast(subject, bound_method, function) # type: ignore + else: + return None + except (OSError, TypeError): # failed to load source code + return None + except SyntaxError: # failed to parse type_comments + return None + + +def update_annotations_using_type_comments(app: Sphinx, obj: Any, bound_method: bool) -> None: + """Update annotations info of *obj* using type_comments.""" + try: + type_sig = get_type_comment(obj, bound_method) + if type_sig: + sig = inspect.signature(obj, bound_method) + for param in sig.parameters.values(): + if param.name not in obj.__annotations__: + annotation = type_sig.parameters[param.name].annotation + if annotation is not Parameter.empty: + obj.__annotations__[param.name] = ast_unparse(annotation) + + if 'return' not in obj.__annotations__: + obj.__annotations__['return'] = type_sig.return_annotation + except NotImplementedError as exc: # failed to ast.unparse() + logger.warning(__("Failed to parse type_comment for %r: %s"), obj, exc) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.connect('autodoc-before-process-signature', update_annotations_using_type_comments) + + return {'version': sphinx.__display_version__, 'parallel_read_safe': True} diff --git a/sphinx/sphinx/ext/autodoc/typehints.py b/sphinx/sphinx/ext/autodoc/typehints.py new file mode 100644 index 0000000..f917dbd --- /dev/null +++ b/sphinx/sphinx/ext/autodoc/typehints.py @@ -0,0 +1,141 @@ +""" + sphinx.ext.autodoc.typehints + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Generating content for autodoc using typehints + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re +from collections import OrderedDict +from typing import Any, Dict, Iterable +from typing import cast + +from docutils import nodes +from docutils.nodes import Element + +from sphinx import addnodes +from sphinx.application import Sphinx +from sphinx.util import inspect, typing + + +def record_typehints(app: Sphinx, objtype: str, name: str, obj: Any, + options: Dict, args: str, retann: str) -> None: + """Record type hints to env object.""" + try: + if callable(obj): + annotations = app.env.temp_data.setdefault('annotations', {}) + annotation = annotations.setdefault(name, OrderedDict()) + sig = inspect.signature(obj) + for param in sig.parameters.values(): + if param.annotation is not param.empty: + annotation[param.name] = typing.stringify(param.annotation) + if sig.return_annotation is not sig.empty: + annotation['return'] = typing.stringify(sig.return_annotation) + except (TypeError, ValueError): + pass + + +def merge_typehints(app: Sphinx, domain: str, objtype: str, contentnode: Element) -> None: + if domain != 'py': + return + if app.config.autodoc_typehints != 'description': + return + if objtype == 'class' and app.config.autoclass_content not in ('init', 'both'): + return + + signature = cast(addnodes.desc_signature, contentnode.parent[0]) + if signature['module']: + fullname = '.'.join([signature['module'], signature['fullname']]) + else: + fullname = signature['fullname'] + annotations = app.env.temp_data.get('annotations', {}) + if annotations.get(fullname, {}): + field_lists = [n for n in contentnode if isinstance(n, nodes.field_list)] + if field_lists == []: + field_list = insert_field_list(contentnode) + field_lists.append(field_list) + + for field_list in field_lists: + modify_field_list(field_list, annotations[fullname]) + + +def insert_field_list(node: Element) -> nodes.field_list: + field_list = nodes.field_list() + desc = [n for n in node if isinstance(n, addnodes.desc)] + if desc: + # insert just before sub object descriptions (ex. methods, nested classes, etc.) + index = node.index(desc[0]) + node.insert(index - 1, [field_list]) + else: + node += field_list + + return field_list + + +def modify_field_list(node: nodes.field_list, annotations: Dict[str, str]) -> None: + arguments = {} # type: Dict[str, Dict[str, bool]] + fields = cast(Iterable[nodes.field], node) + for field in fields: + field_name = field[0].astext() + parts = re.split(' +', field_name) + if parts[0] == 'param': + if len(parts) == 2: + # :param xxx: + arg = arguments.setdefault(parts[1], {}) + arg['param'] = True + elif len(parts) > 2: + # :param xxx yyy: + name = ' '.join(parts[2:]) + arg = arguments.setdefault(name, {}) + arg['param'] = True + arg['type'] = True + elif parts[0] == 'type': + name = ' '.join(parts[1:]) + arg = arguments.setdefault(name, {}) + arg['type'] = True + elif parts[0] == 'rtype': + arguments['return'] = {'type': True} + + for name, annotation in annotations.items(): + if name == 'return': + continue + + arg = arguments.get(name, {}) + field = nodes.field() + if arg.get('param') and arg.get('type'): + # both param and type are already filled manually + continue + elif arg.get('param'): + # only param: fill type field + field += nodes.field_name('', 'type ' + name) + field += nodes.field_body('', nodes.paragraph('', annotation)) + elif arg.get('type'): + # only type: It's odd... + field += nodes.field_name('', 'param ' + name) + field += nodes.field_body('', nodes.paragraph('', '')) + else: + # both param and type are not found + field += nodes.field_name('', 'param ' + annotation + ' ' + name) + field += nodes.field_body('', nodes.paragraph('', '')) + + node += field + + if 'return' in annotations and 'return' not in arguments: + field = nodes.field() + field += nodes.field_name('', 'rtype') + field += nodes.field_body('', nodes.paragraph('', annotation)) + node += field + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.connect('autodoc-process-signature', record_typehints) + app.connect('object-description-transform', merge_typehints) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/ext/autosectionlabel.py b/sphinx/sphinx/ext/autosectionlabel.py new file mode 100644 index 0000000..9890cdf --- /dev/null +++ b/sphinx/sphinx/ext/autosectionlabel.py @@ -0,0 +1,70 @@ +""" + sphinx.ext.autosectionlabel + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Allow reference sections by :ref: role using its title. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Any, Dict +from typing import cast + +from docutils import nodes +from docutils.nodes import Node + +from sphinx.application import Sphinx +from sphinx.locale import __ +from sphinx.util import logging +from sphinx.util.nodes import clean_astext + + +logger = logging.getLogger(__name__) + + +def get_node_depth(node: Node) -> int: + i = 0 + cur_node = node + while cur_node.parent != node.document: + cur_node = cur_node.parent + i += 1 + return i + + +def register_sections_as_label(app: Sphinx, document: Node) -> None: + labels = app.env.domaindata['std']['labels'] + anonlabels = app.env.domaindata['std']['anonlabels'] + for node in document.traverse(nodes.section): + if (app.config.autosectionlabel_maxdepth and + get_node_depth(node) >= app.config.autosectionlabel_maxdepth): + continue + labelid = node['ids'][0] + docname = app.env.docname + title = cast(nodes.title, node[0]) + ref_name = getattr(title, 'rawsource', title.astext()) + if app.config.autosectionlabel_prefix_document: + name = nodes.fully_normalize_name(docname + ':' + ref_name) + else: + name = nodes.fully_normalize_name(ref_name) + sectname = clean_astext(title) + + if name in labels: + logger.warning(__('duplicate label %s, other instance in %s'), + name, app.env.doc2path(labels[name][0]), + location=node, type='autosectionlabel', subtype=docname) + + anonlabels[name] = docname, labelid + labels[name] = docname, labelid, sectname + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_config_value('autosectionlabel_prefix_document', False, 'env') + app.add_config_value('autosectionlabel_maxdepth', None, 'env') + app.connect('doctree-read', register_sections_as_label) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/ext/autosummary/__init__.py b/sphinx/sphinx/ext/autosummary/__init__.py new file mode 100644 index 0000000..b92f3b3 --- /dev/null +++ b/sphinx/sphinx/ext/autosummary/__init__.py @@ -0,0 +1,778 @@ +""" + sphinx.ext.autosummary + ~~~~~~~~~~~~~~~~~~~~~~ + + Sphinx extension that adds an autosummary:: directive, which can be + used to generate function/method/attribute/etc. summary lists, similar + to those output eg. by Epydoc and other API doc generation tools. + + An :autolink: role is also provided. + + autosummary directive + --------------------- + + The autosummary directive has the form:: + + .. autosummary:: + :nosignatures: + :toctree: generated/ + + module.function_1 + module.function_2 + ... + + and it generates an output table (containing signatures, optionally) + + ======================== ============================================= + module.function_1(args) Summary line from the docstring of function_1 + module.function_2(args) Summary line from the docstring + ... + ======================== ============================================= + + If the :toctree: option is specified, files matching the function names + are inserted to the toctree with the given prefix: + + generated/module.function_1 + generated/module.function_2 + ... + + Note: The file names contain the module:: or currentmodule:: prefixes. + + .. seealso:: autosummary_generate.py + + + autolink role + ------------- + + The autolink role functions as ``:obj:`` when the name referred can be + resolved to a Python object, and otherwise it becomes simple emphasis. + This can be used as the default role to make links 'smart'. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import inspect +import os +import posixpath +import re +import sys +import warnings +from os import path +from types import ModuleType +from typing import Any, Dict, List, Tuple +from typing import cast + +from docutils import nodes +from docutils.nodes import Element, Node, system_message +from docutils.parsers.rst import directives +from docutils.parsers.rst.states import Inliner, RSTStateMachine, Struct, state_classes +from docutils.statemachine import StringList + +import sphinx +from sphinx import addnodes +from sphinx.application import Sphinx +from sphinx.deprecation import RemovedInSphinx40Warning, RemovedInSphinx50Warning +from sphinx.environment import BuildEnvironment +from sphinx.environment.adapters.toctree import TocTree +from sphinx.ext.autodoc import Documenter +from sphinx.ext.autodoc.directive import DocumenterBridge, Options +from sphinx.ext.autodoc.importer import import_module +from sphinx.ext.autodoc.mock import mock +from sphinx.locale import __ +from sphinx.pycode import ModuleAnalyzer, PycodeError +from sphinx.util import rst, logging +from sphinx.util.docutils import ( + NullReporter, SphinxDirective, SphinxRole, new_document, switch_source_input +) +from sphinx.util.matching import Matcher +from sphinx.writers.html import HTMLTranslator + +if False: + # For type annotation + from typing import Type # for python3.5.1 + + +logger = logging.getLogger(__name__) + + +periods_re = re.compile(r'\.(?:\s+)') +literal_re = re.compile(r'::\s*$') + + +# -- autosummary_toc node ------------------------------------------------------ + +class autosummary_toc(nodes.comment): + pass + + +def process_autosummary_toc(app: Sphinx, doctree: nodes.document) -> None: + """Insert items described in autosummary:: to the TOC tree, but do + not generate the toctree:: list. + """ + warnings.warn('process_autosummary_toc() is deprecated', + RemovedInSphinx50Warning, stacklevel=2) + env = app.builder.env + crawled = {} + + def crawl_toc(node: Element, depth: int = 1) -> None: + crawled[node] = True + for j, subnode in enumerate(node): + try: + if (isinstance(subnode, autosummary_toc) and + isinstance(subnode[0], addnodes.toctree)): + TocTree(env).note(env.docname, subnode[0]) + continue + except IndexError: + continue + if not isinstance(subnode, nodes.section): + continue + if subnode not in crawled: + crawl_toc(subnode, depth + 1) + crawl_toc(doctree) + + +def autosummary_toc_visit_html(self: nodes.NodeVisitor, node: autosummary_toc) -> None: + """Hide autosummary toctree list in HTML output.""" + raise nodes.SkipNode + + +def autosummary_noop(self: nodes.NodeVisitor, node: Node) -> None: + pass + + +# -- autosummary_table node ---------------------------------------------------- + +class autosummary_table(nodes.comment): + pass + + +def autosummary_table_visit_html(self: HTMLTranslator, node: autosummary_table) -> None: + """Make the first column of the table non-breaking.""" + try: + table = cast(nodes.table, node[0]) + tgroup = cast(nodes.tgroup, table[0]) + tbody = cast(nodes.tbody, tgroup[-1]) + rows = cast(List[nodes.row], tbody) + for row in rows: + col1_entry = cast(nodes.entry, row[0]) + par = cast(nodes.paragraph, col1_entry[0]) + for j, subnode in enumerate(list(par)): + if isinstance(subnode, nodes.Text): + new_text = subnode.astext().replace(" ", "\u00a0") + par[j] = nodes.Text(new_text) + except IndexError: + pass + + +# -- autodoc integration ------------------------------------------------------- + +# current application object (used in `get_documenter()`). +_app = None # type: Sphinx + + +class FakeDirective(DocumenterBridge): + def __init__(self) -> None: + settings = Struct(tab_width=8) + document = Struct(settings=settings) + state = Struct(document=document) + super().__init__({}, None, Options(), 0, state) # type: ignore + + +def get_documenter(app: Sphinx, obj: Any, parent: Any) -> "Type[Documenter]": + """Get an autodoc.Documenter class suitable for documenting the given + object. + + *obj* is the Python object to be documented, and *parent* is an + another Python object (e.g. a module or a class) to which *obj* + belongs to. + """ + from sphinx.ext.autodoc import DataDocumenter, ModuleDocumenter + + if inspect.ismodule(obj): + # ModuleDocumenter.can_document_member always returns False + return ModuleDocumenter + + # Construct a fake documenter for *parent* + if parent is not None: + parent_doc_cls = get_documenter(app, parent, None) + else: + parent_doc_cls = ModuleDocumenter + + if hasattr(parent, '__name__'): + parent_doc = parent_doc_cls(FakeDirective(), parent.__name__) + else: + parent_doc = parent_doc_cls(FakeDirective(), "") + + # Get the corrent documenter class for *obj* + classes = [cls for cls in app.registry.documenters.values() + if cls.can_document_member(obj, '', False, parent_doc)] + if classes: + classes.sort(key=lambda cls: cls.priority) + return classes[-1] + else: + return DataDocumenter + + +# -- .. autosummary:: ---------------------------------------------------------- + +class Autosummary(SphinxDirective): + """ + Pretty table containing short signatures and summaries of functions etc. + + autosummary can also optionally generate a hidden toctree:: node. + """ + + required_arguments = 0 + optional_arguments = 0 + final_argument_whitespace = False + has_content = True + option_spec = { + 'toctree': directives.unchanged, + 'nosignatures': directives.flag, + 'template': directives.unchanged, + } + + def run(self) -> List[Node]: + self.bridge = DocumenterBridge(self.env, self.state.document.reporter, + Options(), self.lineno, self.state) + + names = [x.strip().split()[0] for x in self.content + if x.strip() and re.search(r'^[~a-zA-Z_]', x.strip()[0])] + items = self.get_items(names) + nodes = self.get_table(items) + + if 'toctree' in self.options: + dirname = posixpath.dirname(self.env.docname) + + tree_prefix = self.options['toctree'].strip() + docnames = [] + excluded = Matcher(self.config.exclude_patterns) + for name, sig, summary, real_name in items: + docname = posixpath.join(tree_prefix, real_name) + docname = posixpath.normpath(posixpath.join(dirname, docname)) + if docname not in self.env.found_docs: + location = self.state_machine.get_source_and_line(self.lineno) + if excluded(self.env.doc2path(docname, None)): + msg = __('autosummary references excluded document %r. Ignored.') + else: + msg = __('autosummary: stub file not found %r. ' + 'Check your autosummary_generate setting.') + + logger.warning(msg, real_name, location=location) + continue + + docnames.append(docname) + + if docnames: + tocnode = addnodes.toctree() + tocnode['includefiles'] = docnames + tocnode['entries'] = [(None, docn) for docn in docnames] + tocnode['maxdepth'] = -1 + tocnode['glob'] = None + + nodes.append(autosummary_toc('', '', tocnode)) + + return nodes + + def get_items(self, names: List[str]) -> List[Tuple[str, str, str, str]]: + """Try to import the given names, and return a list of + ``[(name, signature, summary_string, real_name), ...]``. + """ + prefixes = get_import_prefixes_from_env(self.env) + + items = [] # type: List[Tuple[str, str, str, str]] + + max_item_chars = 50 + + for name in names: + display_name = name + if name.startswith('~'): + name = name[1:] + display_name = name.split('.')[-1] + + try: + with mock(self.config.autosummary_mock_imports): + real_name, obj, parent, modname = import_by_name(name, prefixes=prefixes) + except ImportError: + logger.warning(__('failed to import %s'), name) + items.append((name, '', '', name)) + continue + + self.bridge.result = StringList() # initialize for each documenter + full_name = real_name + if not isinstance(obj, ModuleType): + # give explicitly separated module name, so that members + # of inner classes can be documented + full_name = modname + '::' + full_name[len(modname) + 1:] + # NB. using full_name here is important, since Documenters + # handle module prefixes slightly differently + doccls = get_documenter(self.env.app, obj, parent) + documenter = doccls(self.bridge, full_name) + if not documenter.parse_name(): + logger.warning(__('failed to parse name %s'), real_name) + items.append((display_name, '', '', real_name)) + continue + if not documenter.import_object(): + logger.warning(__('failed to import object %s'), real_name) + items.append((display_name, '', '', real_name)) + continue + if documenter.options.members and not documenter.check_module(): + continue + + # try to also get a source code analyzer for attribute docs + try: + documenter.analyzer = ModuleAnalyzer.for_module( + documenter.get_real_modname()) + # parse right now, to get PycodeErrors on parsing (results will + # be cached anyway) + documenter.analyzer.find_attr_docs() + except PycodeError as err: + logger.debug('[autodoc] module analyzer failed: %s', err) + # no source file -- e.g. for builtin and C modules + documenter.analyzer = None + + # -- Grab the signature + + try: + sig = documenter.format_signature(show_annotation=False) + except TypeError: + # the documenter does not support ``show_annotation`` option + sig = documenter.format_signature() + + if not sig: + sig = '' + else: + max_chars = max(10, max_item_chars - len(display_name)) + sig = mangle_signature(sig, max_chars=max_chars) + + # -- Grab the summary + + documenter.add_content(None) + summary = extract_summary(self.bridge.result.data[:], self.state.document) + + items.append((display_name, sig, summary, real_name)) + + return items + + def get_table(self, items: List[Tuple[str, str, str, str]]) -> List[Node]: + """Generate a proper list of table nodes for autosummary:: directive. + + *items* is a list produced by :meth:`get_items`. + """ + table_spec = addnodes.tabular_col_spec() + table_spec['spec'] = r'\X{1}{2}\X{1}{2}' + + table = autosummary_table('') + real_table = nodes.table('', classes=['longtable']) + table.append(real_table) + group = nodes.tgroup('', cols=2) + real_table.append(group) + group.append(nodes.colspec('', colwidth=10)) + group.append(nodes.colspec('', colwidth=90)) + body = nodes.tbody('') + group.append(body) + + def append_row(*column_texts: str) -> None: + row = nodes.row('') + source, line = self.state_machine.get_source_and_line() + for text in column_texts: + node = nodes.paragraph('') + vl = StringList() + vl.append(text, '%s:%d:<autosummary>' % (source, line)) + with switch_source_input(self.state, vl): + self.state.nested_parse(vl, 0, node) + try: + if isinstance(node[0], nodes.paragraph): + node = node[0] + except IndexError: + pass + row.append(nodes.entry('', node)) + body.append(row) + + for name, sig, summary, real_name in items: + qualifier = 'obj' + if 'nosignatures' not in self.options: + col1 = ':%s:`%s <%s>`\\ %s' % (qualifier, name, real_name, rst.escape(sig)) + else: + col1 = ':%s:`%s <%s>`' % (qualifier, name, real_name) + col2 = summary + append_row(col1, col2) + + return [table_spec, table] + + def warn(self, msg: str) -> None: + warnings.warn('Autosummary.warn() is deprecated', + RemovedInSphinx40Warning, stacklevel=2) + logger.warning(msg) + + @property + def genopt(self) -> Options: + warnings.warn('Autosummary.genopt is deprecated', + RemovedInSphinx40Warning, stacklevel=2) + return self.bridge.genopt + + @property + def warnings(self) -> List[Node]: + warnings.warn('Autosummary.warnings is deprecated', + RemovedInSphinx40Warning, stacklevel=2) + return [] + + @property + def result(self) -> StringList: + warnings.warn('Autosummary.result is deprecated', + RemovedInSphinx40Warning, stacklevel=2) + return self.bridge.result + + +def strip_arg_typehint(s: str) -> str: + """Strip a type hint from argument definition.""" + return s.split(':')[0].strip() + + +def mangle_signature(sig: str, max_chars: int = 30) -> str: + """Reformat a function signature to a more compact form.""" + # Strip return type annotation + s = re.sub(r"\)\s*->\s.*$", ")", sig) + + # Remove parenthesis + s = re.sub(r"^\((.*)\)$", r"\1", s).strip() + + # Strip literals (which can contain things that confuse the code below) + s = re.sub(r"\\\\", "", s) # escaped backslash (maybe inside string) + s = re.sub(r"\\'", "", s) # escaped single quote + s = re.sub(r'\\"', "", s) # escaped double quote + s = re.sub(r"'[^']*'", "", s) # string literal (w/ single quote) + s = re.sub(r'"[^"]*"', "", s) # string literal (w/ double quote) + + # Strip complex objects (maybe default value of arguments) + while re.search(r'\([^)]*\)', s): # contents of parenthesis (ex. NamedTuple(attr=...)) + s = re.sub(r'\([^)]*\)', '', s) + while re.search(r'<[^>]*>', s): # contents of angle brackets (ex. <object>) + s = re.sub(r'<[^>]*>', '', s) + while re.search(r'{[^}]*}', s): # contents of curly brackets (ex. dict) + s = re.sub(r'{[^}]*}', '', s) + + # Parse the signature to arguments + options + args = [] # type: List[str] + opts = [] # type: List[str] + + opt_re = re.compile(r"^(.*, |)([a-zA-Z0-9_*]+)\s*=\s*") + while s: + m = opt_re.search(s) + if not m: + # The rest are arguments + args = s.split(', ') + break + + opts.insert(0, m.group(2)) + s = m.group(1)[:-2] + + # Strip typehints + for i, arg in enumerate(args): + args[i] = strip_arg_typehint(arg) + + for i, opt in enumerate(opts): + opts[i] = strip_arg_typehint(opt) + + # Produce a more compact signature + sig = limited_join(", ", args, max_chars=max_chars - 2) + if opts: + if not sig: + sig = "[%s]" % limited_join(", ", opts, max_chars=max_chars - 4) + elif len(sig) < max_chars - 4 - 2 - 3: + sig += "[, %s]" % limited_join(", ", opts, + max_chars=max_chars - len(sig) - 4 - 2) + + return "(%s)" % sig + + +def extract_summary(doc: List[str], document: Any) -> str: + """Extract summary from docstring.""" + + # Skip a blank lines at the top + while doc and not doc[0].strip(): + doc.pop(0) + + # If there's a blank line, then we can assume the first sentence / + # paragraph has ended, so anything after shouldn't be part of the + # summary + for i, piece in enumerate(doc): + if not piece.strip(): + doc = doc[:i] + break + + if doc == []: + return '' + + # parse the docstring + state_machine = RSTStateMachine(state_classes, 'Body') + node = new_document('', document.settings) + node.reporter = NullReporter() + state_machine.run(doc, node) + + if not isinstance(node[0], nodes.paragraph): + # document starts with non-paragraph: pick up the first line + summary = doc[0].strip() + else: + # Try to find the "first sentence", which may span multiple lines + sentences = periods_re.split(" ".join(doc)) + if len(sentences) == 1: + summary = sentences[0].strip() + else: + summary = '' + while sentences: + summary += sentences.pop(0) + '.' + node[:] = [] + state_machine.run([summary], node) + if not node.traverse(nodes.system_message): + # considered as that splitting by period does not break inline markups + break + + # strip literal notation mark ``::`` from tail of summary + summary = literal_re.sub('.', summary) + + return summary + + +def limited_join(sep: str, items: List[str], max_chars: int = 30, + overflow_marker: str = "...") -> str: + """Join a number of strings to one, limiting the length to *max_chars*. + + If the string overflows this limit, replace the last fitting item by + *overflow_marker*. + + Returns: joined_string + """ + full_str = sep.join(items) + if len(full_str) < max_chars: + return full_str + + n_chars = 0 + n_items = 0 + for j, item in enumerate(items): + n_chars += len(item) + len(sep) + if n_chars < max_chars - len(overflow_marker): + n_items += 1 + else: + break + + return sep.join(list(items[:n_items]) + [overflow_marker]) + + +# -- Importing items ----------------------------------------------------------- + +def get_import_prefixes_from_env(env: BuildEnvironment) -> List[str]: + """ + Obtain current Python import prefixes (for `import_by_name`) + from ``document.env`` + """ + prefixes = [None] # type: List[str] + + currmodule = env.ref_context.get('py:module') + if currmodule: + prefixes.insert(0, currmodule) + + currclass = env.ref_context.get('py:class') + if currclass: + if currmodule: + prefixes.insert(0, currmodule + "." + currclass) + else: + prefixes.insert(0, currclass) + + return prefixes + + +def import_by_name(name: str, prefixes: List[str] = [None]) -> Tuple[str, Any, Any, str]: + """Import a Python object that has the given *name*, under one of the + *prefixes*. The first name that succeeds is used. + """ + tried = [] + for prefix in prefixes: + try: + if prefix: + prefixed_name = '.'.join([prefix, name]) + else: + prefixed_name = name + obj, parent, modname = _import_by_name(prefixed_name) + return prefixed_name, obj, parent, modname + except ImportError: + tried.append(prefixed_name) + raise ImportError('no module named %s' % ' or '.join(tried)) + + +def _import_by_name(name: str) -> Tuple[Any, Any, str]: + """Import a Python object given its full name.""" + try: + name_parts = name.split('.') + + # try first interpret `name` as MODNAME.OBJ + modname = '.'.join(name_parts[:-1]) + if modname: + try: + mod = import_module(modname) + return getattr(mod, name_parts[-1]), mod, modname + except (ImportError, IndexError, AttributeError): + pass + + # ... then as MODNAME, MODNAME.OBJ1, MODNAME.OBJ1.OBJ2, ... + last_j = 0 + modname = None + for j in reversed(range(1, len(name_parts) + 1)): + last_j = j + modname = '.'.join(name_parts[:j]) + try: + import_module(modname) + except ImportError: + continue + + if modname in sys.modules: + break + + if last_j < len(name_parts): + parent = None + obj = sys.modules[modname] + for obj_name in name_parts[last_j:]: + parent = obj + obj = getattr(obj, obj_name) + return obj, parent, modname + else: + return sys.modules[modname], None, modname + except (ValueError, ImportError, AttributeError, KeyError) as e: + raise ImportError(*e.args) + + +# -- :autolink: (smart default role) ------------------------------------------- + +def autolink_role(typ: str, rawtext: str, etext: str, lineno: int, inliner: Inliner, + options: Dict = {}, content: List[str] = [] + ) -> Tuple[List[Node], List[system_message]]: + """Smart linking role. + + Expands to ':obj:`text`' if `text` is an object that can be imported; + otherwise expands to '*text*'. + """ + warnings.warn('autolink_role() is deprecated.', RemovedInSphinx40Warning) + env = inliner.document.settings.env + pyobj_role = env.get_domain('py').role('obj') + objects, msg = pyobj_role('obj', rawtext, etext, lineno, inliner, options, content) + if msg != []: + return objects, msg + + assert len(objects) == 1 + pending_xref = cast(addnodes.pending_xref, objects[0]) + prefixes = get_import_prefixes_from_env(env) + try: + name, obj, parent, modname = import_by_name(pending_xref['reftarget'], prefixes) + except ImportError: + literal = cast(nodes.literal, pending_xref[0]) + objects[0] = nodes.emphasis(rawtext, literal.astext(), classes=literal['classes']) + + return objects, msg + + +class AutoLink(SphinxRole): + """Smart linking role. + + Expands to ':obj:`text`' if `text` is an object that can be imported; + otherwise expands to '*text*'. + """ + def run(self) -> Tuple[List[Node], List[system_message]]: + pyobj_role = self.env.get_domain('py').role('obj') + objects, errors = pyobj_role('obj', self.rawtext, self.text, self.lineno, + self.inliner, self.options, self.content) + if errors: + return objects, errors + + assert len(objects) == 1 + pending_xref = cast(addnodes.pending_xref, objects[0]) + try: + # try to import object by name + prefixes = get_import_prefixes_from_env(self.env) + import_by_name(pending_xref['reftarget'], prefixes) + except ImportError: + literal = cast(nodes.literal, pending_xref[0]) + objects[0] = nodes.emphasis(self.rawtext, literal.astext(), + classes=literal['classes']) + + return objects, errors + + +def get_rst_suffix(app: Sphinx) -> str: + def get_supported_format(suffix: str) -> Tuple[str, ...]: + parser_class = app.registry.get_source_parsers().get(suffix) + if parser_class is None: + return ('restructuredtext',) + return parser_class.supported + + suffix = None # type: str + for suffix in app.config.source_suffix: + if 'restructuredtext' in get_supported_format(suffix): + return suffix + + return None + + +def process_generate_options(app: Sphinx) -> None: + genfiles = app.config.autosummary_generate + + if genfiles is True: + env = app.builder.env + genfiles = [env.doc2path(x, base=None) for x in env.found_docs + if os.path.isfile(env.doc2path(x))] + elif genfiles is False: + pass + else: + ext = list(app.config.source_suffix) + genfiles = [genfile + (ext[0] if not genfile.endswith(tuple(ext)) else '') + for genfile in genfiles] + + for entry in genfiles[:]: + if not path.isfile(path.join(app.srcdir, entry)): + logger.warning(__('autosummary_generate: file not found: %s'), entry) + genfiles.remove(entry) + + if not genfiles: + return + + suffix = get_rst_suffix(app) + if suffix is None: + logger.warning(__('autosummary generats .rst files internally. ' + 'But your source_suffix does not contain .rst. Skipped.')) + return + + from sphinx.ext.autosummary.generate import generate_autosummary_docs + + imported_members = app.config.autosummary_imported_members + with mock(app.config.autosummary_mock_imports): + generate_autosummary_docs(genfiles, builder=app.builder, + suffix=suffix, base_path=app.srcdir, + app=app, imported_members=imported_members, + overwrite=app.config.autosummary_generate_overwrite) + + +def setup(app: Sphinx) -> Dict[str, Any]: + # I need autodoc + app.setup_extension('sphinx.ext.autodoc') + app.add_node(autosummary_toc, + html=(autosummary_toc_visit_html, autosummary_noop), + latex=(autosummary_noop, autosummary_noop), + text=(autosummary_noop, autosummary_noop), + man=(autosummary_noop, autosummary_noop), + texinfo=(autosummary_noop, autosummary_noop)) + app.add_node(autosummary_table, + html=(autosummary_table_visit_html, autosummary_noop), + latex=(autosummary_noop, autosummary_noop), + text=(autosummary_noop, autosummary_noop), + man=(autosummary_noop, autosummary_noop), + texinfo=(autosummary_noop, autosummary_noop)) + app.add_directive('autosummary', Autosummary) + app.add_role('autolink', AutoLink()) + app.connect('builder-inited', process_generate_options) + app.add_config_value('autosummary_generate', [], True, [bool]) + app.add_config_value('autosummary_generate_overwrite', True, False) + app.add_config_value('autosummary_mock_imports', + lambda config: config.autodoc_mock_imports, 'env') + app.add_config_value('autosummary_imported_members', [], False, [bool]) + + return {'version': sphinx.__display_version__, 'parallel_read_safe': True} diff --git a/sphinx/sphinx/ext/autosummary/generate.py b/sphinx/sphinx/ext/autosummary/generate.py new file mode 100644 index 0000000..91628b3 --- /dev/null +++ b/sphinx/sphinx/ext/autosummary/generate.py @@ -0,0 +1,503 @@ +""" + sphinx.ext.autosummary.generate + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Usable as a library or script to generate automatic RST source files for + items referred to in autosummary:: directives. + + Each generated RST file contains a single auto*:: directive which + extracts the docstring of the referred item. + + Example Makefile rule:: + + generate: + sphinx-autogen -o source/generated source/*.rst + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import argparse +import locale +import os +import pydoc +import re +import sys +import warnings +from typing import Any, Callable, Dict, List, NamedTuple, Set, Tuple + +from jinja2 import BaseLoader, FileSystemLoader, TemplateNotFound +from jinja2.sandbox import SandboxedEnvironment + +import sphinx.locale +from sphinx import __display_version__ +from sphinx import package_dir +from sphinx.builders import Builder +from sphinx.deprecation import RemovedInSphinx40Warning, RemovedInSphinx50Warning +from sphinx.ext.autodoc import Documenter +from sphinx.ext.autosummary import import_by_name, get_documenter +from sphinx.jinja2glue import BuiltinTemplateLoader +from sphinx.locale import __ +from sphinx.registry import SphinxComponentRegistry +from sphinx.util import logging +from sphinx.util import rst +from sphinx.util.inspect import safe_getattr +from sphinx.util.osutil import ensuredir + +if False: + # For type annotation + from typing import Type # for python3.5.1 + + +logger = logging.getLogger(__name__) + + +class DummyApplication: + """Dummy Application class for sphinx-autogen command.""" + + def __init__(self) -> None: + self.registry = SphinxComponentRegistry() + self.messagelog = [] # type: List[str] + self.verbosity = 0 + self._warncount = 0 + self.warningiserror = False + + def emit_firstresult(self, *args: Any) -> None: + pass + + +AutosummaryEntry = NamedTuple('AutosummaryEntry', [('name', str), + ('path', str), + ('template', str)]) + + +def setup_documenters(app: Any) -> None: + from sphinx.ext.autodoc import ( + ModuleDocumenter, ClassDocumenter, ExceptionDocumenter, DataDocumenter, + FunctionDocumenter, MethodDocumenter, AttributeDocumenter, + InstanceAttributeDocumenter, DecoratorDocumenter, PropertyDocumenter, + SlotsAttributeDocumenter, DataDeclarationDocumenter, + SingledispatchFunctionDocumenter, + ) + documenters = [ + ModuleDocumenter, ClassDocumenter, ExceptionDocumenter, DataDocumenter, + FunctionDocumenter, MethodDocumenter, AttributeDocumenter, + InstanceAttributeDocumenter, DecoratorDocumenter, PropertyDocumenter, + SlotsAttributeDocumenter, DataDeclarationDocumenter, + SingledispatchFunctionDocumenter, + ] # type: List[Type[Documenter]] + for documenter in documenters: + app.registry.add_documenter(documenter.objtype, documenter) + + +def _simple_info(msg: str) -> None: + print(msg) + + +def _simple_warn(msg: str) -> None: + print('WARNING: ' + msg, file=sys.stderr) + + +def _underline(title: str, line: str = '=') -> str: + if '\n' in title: + raise ValueError('Can only underline single lines') + return title + '\n' + line * len(title) + + +class AutosummaryRenderer: + """A helper class for rendering.""" + + def __init__(self, builder: Builder, template_dir: str) -> None: + loader = None # type: BaseLoader + template_dirs = [os.path.join(package_dir, 'ext', 'autosummary', 'templates')] + if builder is None: + if template_dir: + template_dirs.insert(0, template_dir) + loader = FileSystemLoader(template_dirs) + else: + # allow the user to override the templates + loader = BuiltinTemplateLoader() + loader.init(builder, dirs=template_dirs) + + self.env = SandboxedEnvironment(loader=loader) + self.env.filters['escape'] = rst.escape + self.env.filters['e'] = rst.escape + self.env.filters['underline'] = _underline + + if builder: + if builder.app.translator: + self.env.add_extension("jinja2.ext.i18n") + self.env.install_gettext_translations(builder.app.translator) # type: ignore + + def exists(self, template_name: str) -> bool: + """Check if template file exists.""" + try: + self.env.get_template(template_name) + return True + except TemplateNotFound: + return False + + def render(self, template_name: str, context: Dict) -> str: + """Render a template file.""" + return self.env.get_template(template_name).render(context) + + +# -- Generating output --------------------------------------------------------- + + +def generate_autosummary_content(name: str, obj: Any, parent: Any, + template: AutosummaryRenderer, template_name: str, + imported_members: bool, app: Any) -> str: + doc = get_documenter(app, obj, parent) + + if template_name is None: + template_name = 'autosummary/%s.rst' % doc.objtype + if not template.exists(template_name): + template_name = 'autosummary/base.rst' + + def skip_member(obj: Any, name: str, objtype: str) -> bool: + try: + return app.emit_firstresult('autodoc-skip-member', objtype, name, + obj, False, {}) + except Exception as exc: + logger.warning(__('autosummary: failed to determine %r to be documented, ' + 'the following exception was raised:\n%s'), + name, exc, type='autosummary') + return False + + def get_members(obj: Any, types: Set[str], include_public: List[str] = [], + imported: bool = True) -> Tuple[List[str], List[str]]: + items = [] # type: List[str] + public = [] # type: List[str] + for name in dir(obj): + try: + value = safe_getattr(obj, name) + except AttributeError: + continue + documenter = get_documenter(app, value, obj) + if documenter.objtype in types: + # skip imported members if expected + if imported or getattr(value, '__module__', None) == obj.__name__: + skipped = skip_member(value, name, documenter.objtype) + if skipped is True: + pass + elif skipped is False: + # show the member forcedly + items.append(name) + public.append(name) + else: + items.append(name) + if name in include_public or not name.startswith('_'): + # considers member as public + public.append(name) + return public, items + + ns = {} # type: Dict[str, Any] + + if doc.objtype == 'module': + ns['members'] = dir(obj) + ns['functions'], ns['all_functions'] = \ + get_members(obj, {'function'}, imported=imported_members) + ns['classes'], ns['all_classes'] = \ + get_members(obj, {'class'}, imported=imported_members) + ns['exceptions'], ns['all_exceptions'] = \ + get_members(obj, {'exception'}, imported=imported_members) + elif doc.objtype == 'class': + ns['members'] = dir(obj) + ns['inherited_members'] = \ + set(dir(obj)) - set(obj.__dict__.keys()) + ns['methods'], ns['all_methods'] = \ + get_members(obj, {'method'}, ['__init__']) + ns['attributes'], ns['all_attributes'] = \ + get_members(obj, {'attribute', 'property'}) + + parts = name.split('.') + if doc.objtype in ('method', 'attribute', 'property'): + mod_name = '.'.join(parts[:-2]) + cls_name = parts[-2] + obj_name = '.'.join(parts[-2:]) + ns['class'] = cls_name + else: + mod_name, obj_name = '.'.join(parts[:-1]), parts[-1] + + ns['fullname'] = name + ns['module'] = mod_name + ns['objname'] = obj_name + ns['name'] = parts[-1] + + ns['objtype'] = doc.objtype + ns['underline'] = len(name) * '=' + + return template.render(template_name, ns) + + +def generate_autosummary_docs(sources: List[str], output_dir: str = None, + suffix: str = '.rst', warn: Callable = None, + info: Callable = None, base_path: str = None, + builder: Builder = None, template_dir: str = None, + imported_members: bool = False, app: Any = None, + overwrite: bool = True) -> None: + if info: + warnings.warn('info argument for generate_autosummary_docs() is deprecated.', + RemovedInSphinx40Warning) + _info = info + else: + _info = logger.info + + if warn: + warnings.warn('warn argument for generate_autosummary_docs() is deprecated.', + RemovedInSphinx40Warning) + _warn = warn + else: + _warn = logger.warning + + showed_sources = list(sorted(sources)) + if len(showed_sources) > 20: + showed_sources = showed_sources[:10] + ['...'] + showed_sources[-10:] + _info(__('[autosummary] generating autosummary for: %s') % + ', '.join(showed_sources)) + + if output_dir: + _info(__('[autosummary] writing to %s') % output_dir) + + if base_path is not None: + sources = [os.path.join(base_path, filename) for filename in sources] + + template = AutosummaryRenderer(builder, template_dir) + + # read + items = find_autosummary_in_files(sources) + + # keep track of new files + new_files = [] + + # write + for entry in sorted(set(items), key=str): + if entry.path is None: + # The corresponding autosummary:: directive did not have + # a :toctree: option + continue + + path = output_dir or os.path.abspath(entry.path) + ensuredir(path) + + try: + name, obj, parent, mod_name = import_by_name(entry.name) + except ImportError as e: + _warn(__('[autosummary] failed to import %r: %s') % (entry.name, e)) + continue + + content = generate_autosummary_content(name, obj, parent, template, entry.template, + imported_members, app) + + filename = os.path.join(path, name + suffix) + if os.path.isfile(filename): + with open(filename) as f: + old_content = f.read() + + if content == old_content: + continue + elif overwrite: # content has changed + with open(filename, 'w') as f: + f.write(content) + new_files.append(filename) + else: + with open(filename, 'w') as f: + f.write(content) + new_files.append(filename) + + # descend recursively to new files + if new_files: + generate_autosummary_docs(new_files, output_dir=output_dir, + suffix=suffix, warn=warn, info=info, + base_path=base_path, builder=builder, + template_dir=template_dir, + imported_members=imported_members, app=app, + overwrite=overwrite) + + +# -- Finding documented entries in files --------------------------------------- + +def find_autosummary_in_files(filenames: List[str]) -> List[AutosummaryEntry]: + """Find out what items are documented in source/*.rst. + + See `find_autosummary_in_lines`. + """ + documented = [] # type: List[AutosummaryEntry] + for filename in filenames: + with open(filename, encoding='utf-8', errors='ignore') as f: + lines = f.read().splitlines() + documented.extend(find_autosummary_in_lines(lines, filename=filename)) + return documented + + +def find_autosummary_in_docstring(name: str, module: str = None, filename: str = None + ) -> List[AutosummaryEntry]: + """Find out what items are documented in the given object's docstring. + + See `find_autosummary_in_lines`. + """ + if module: + warnings.warn('module argument for find_autosummary_in_docstring() is deprecated.', + RemovedInSphinx50Warning) + + try: + real_name, obj, parent, modname = import_by_name(name) + lines = pydoc.getdoc(obj).splitlines() + return find_autosummary_in_lines(lines, module=name, filename=filename) + except AttributeError: + pass + except ImportError as e: + print("Failed to import '%s': %s" % (name, e)) + except SystemExit: + print("Failed to import '%s'; the module executes module level " + "statement and it might call sys.exit()." % name) + return [] + + +def find_autosummary_in_lines(lines: List[str], module: str = None, filename: str = None + ) -> List[AutosummaryEntry]: + """Find out what items appear in autosummary:: directives in the + given lines. + + Returns a list of (name, toctree, template) where *name* is a name + of an object and *toctree* the :toctree: path of the corresponding + autosummary directive (relative to the root of the file name), and + *template* the value of the :template: option. *toctree* and + *template* ``None`` if the directive does not have the + corresponding options set. + """ + autosummary_re = re.compile(r'^(\s*)\.\.\s+autosummary::\s*') + automodule_re = re.compile( + r'^\s*\.\.\s+automodule::\s*([A-Za-z0-9_.]+)\s*$') + module_re = re.compile( + r'^\s*\.\.\s+(current)?module::\s*([a-zA-Z0-9_.]+)\s*$') + autosummary_item_re = re.compile(r'^\s+(~?[_a-zA-Z][a-zA-Z0-9_.]*)\s*.*?') + toctree_arg_re = re.compile(r'^\s+:toctree:\s*(.*?)\s*$') + template_arg_re = re.compile(r'^\s+:template:\s*(.*?)\s*$') + + documented = [] # type: List[AutosummaryEntry] + + toctree = None # type: str + template = None + current_module = module + in_autosummary = False + base_indent = "" + + for line in lines: + if in_autosummary: + m = toctree_arg_re.match(line) + if m: + toctree = m.group(1) + if filename: + toctree = os.path.join(os.path.dirname(filename), + toctree) + continue + + m = template_arg_re.match(line) + if m: + template = m.group(1).strip() + continue + + if line.strip().startswith(':'): + continue # skip options + + m = autosummary_item_re.match(line) + if m: + name = m.group(1).strip() + if name.startswith('~'): + name = name[1:] + if current_module and \ + not name.startswith(current_module + '.'): + name = "%s.%s" % (current_module, name) + documented.append(AutosummaryEntry(name, toctree, template)) + continue + + if not line.strip() or line.startswith(base_indent + " "): + continue + + in_autosummary = False + + m = autosummary_re.match(line) + if m: + in_autosummary = True + base_indent = m.group(1) + toctree = None + template = None + continue + + m = automodule_re.search(line) + if m: + current_module = m.group(1).strip() + # recurse into the automodule docstring + documented.extend(find_autosummary_in_docstring( + current_module, filename=filename)) + continue + + m = module_re.match(line) + if m: + current_module = m.group(2) + continue + + return documented + + +def get_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + usage='%(prog)s [OPTIONS] <SOURCE_FILE>...', + epilog=__('For more information, visit <http://sphinx-doc.org/>.'), + description=__(""" +Generate ReStructuredText using autosummary directives. + +sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates +the reStructuredText files from the autosummary directives contained in the +given input files. + +The format of the autosummary directive is documented in the +``sphinx.ext.autosummary`` Python module and can be read using:: + + pydoc sphinx.ext.autosummary +""")) + + parser.add_argument('--version', action='version', dest='show_version', + version='%%(prog)s %s' % __display_version__) + + parser.add_argument('source_file', nargs='+', + help=__('source files to generate rST files for')) + + parser.add_argument('-o', '--output-dir', action='store', + dest='output_dir', + help=__('directory to place all output in')) + parser.add_argument('-s', '--suffix', action='store', dest='suffix', + default='rst', + help=__('default suffix for files (default: ' + '%(default)s)')) + parser.add_argument('-t', '--templates', action='store', dest='templates', + default=None, + help=__('custom template directory (default: ' + '%(default)s)')) + parser.add_argument('-i', '--imported-members', action='store_true', + dest='imported_members', default=False, + help=__('document imported members (default: ' + '%(default)s)')) + + return parser + + +def main(argv: List[str] = sys.argv[1:]) -> None: + sphinx.locale.setlocale(locale.LC_ALL, '') + sphinx.locale.init_console(os.path.join(package_dir, 'locale'), 'sphinx') + + app = DummyApplication() + logging.setup(app, sys.stdout, sys.stderr) # type: ignore + setup_documenters(app) + args = get_parser().parse_args(argv) + generate_autosummary_docs(args.source_file, args.output_dir, + '.' + args.suffix, + template_dir=args.templates, + imported_members=args.imported_members, + app=app) + + +if __name__ == '__main__': + main() diff --git a/sphinx/sphinx/ext/autosummary/templates/autosummary/base.rst b/sphinx/sphinx/ext/autosummary/templates/autosummary/base.rst new file mode 100644 index 0000000..b7556eb --- /dev/null +++ b/sphinx/sphinx/ext/autosummary/templates/autosummary/base.rst @@ -0,0 +1,5 @@ +{{ fullname | escape | underline}} + +.. currentmodule:: {{ module }} + +.. auto{{ objtype }}:: {{ objname }} diff --git a/sphinx/sphinx/ext/autosummary/templates/autosummary/class.rst b/sphinx/sphinx/ext/autosummary/templates/autosummary/class.rst new file mode 100644 index 0000000..0f7d6f3 --- /dev/null +++ b/sphinx/sphinx/ext/autosummary/templates/autosummary/class.rst @@ -0,0 +1,29 @@ +{{ fullname | escape | underline}} + +.. currentmodule:: {{ module }} + +.. autoclass:: {{ objname }} + + {% block methods %} + .. automethod:: __init__ + + {% if methods %} + .. rubric:: {{ _('Methods') }} + + .. autosummary:: + {% for item in methods %} + ~{{ name }}.{{ item }} + {%- endfor %} + {% endif %} + {% endblock %} + + {% block attributes %} + {% if attributes %} + .. rubric:: {{ _('Attributes') }} + + .. autosummary:: + {% for item in attributes %} + ~{{ name }}.{{ item }} + {%- endfor %} + {% endif %} + {% endblock %} diff --git a/sphinx/sphinx/ext/autosummary/templates/autosummary/module.rst b/sphinx/sphinx/ext/autosummary/templates/autosummary/module.rst new file mode 100644 index 0000000..db3bee8 --- /dev/null +++ b/sphinx/sphinx/ext/autosummary/templates/autosummary/module.rst @@ -0,0 +1,36 @@ +{{ fullname | escape | underline}} + +.. automodule:: {{ fullname }} + + {% block functions %} + {% if functions %} + .. rubric:: {{ _('Functions') }} + + .. autosummary:: + {% for item in functions %} + {{ item }} + {%- endfor %} + {% endif %} + {% endblock %} + + {% block classes %} + {% if classes %} + .. rubric:: {{ _('Classes') }} + + .. autosummary:: + {% for item in classes %} + {{ item }} + {%- endfor %} + {% endif %} + {% endblock %} + + {% block exceptions %} + {% if exceptions %} + .. rubric:: {{ _('Exceptions') }} + + .. autosummary:: + {% for item in exceptions %} + {{ item }} + {%- endfor %} + {% endif %} + {% endblock %} diff --git a/sphinx/sphinx/ext/coverage.py b/sphinx/sphinx/ext/coverage.py new file mode 100644 index 0000000..e815784 --- /dev/null +++ b/sphinx/sphinx/ext/coverage.py @@ -0,0 +1,276 @@ +""" + sphinx.ext.coverage + ~~~~~~~~~~~~~~~~~~~ + + Check Python modules and C API for coverage. Mostly written by Josip + Dzolonga for the Google Highly Open Participation contest. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import glob +import inspect +import pickle +import re +from importlib import import_module +from os import path +from typing import Any, Dict, IO, List, Pattern, Set, Tuple + +import sphinx +from sphinx.application import Sphinx +from sphinx.builders import Builder +from sphinx.locale import __ +from sphinx.util import logging +from sphinx.util.inspect import safe_getattr + +logger = logging.getLogger(__name__) + + +# utility +def write_header(f: IO, text: str, char: str = '-') -> None: + f.write(text + '\n') + f.write(char * len(text) + '\n') + + +def compile_regex_list(name: str, exps: str) -> List[Pattern]: + lst = [] + for exp in exps: + try: + lst.append(re.compile(exp)) + except Exception: + logger.warning(__('invalid regex %r in %s'), exp, name) + return lst + + +class CoverageBuilder(Builder): + """ + Evaluates coverage of code in the documentation. + """ + name = 'coverage' + epilog = __('Testing of coverage in the sources finished, look at the ' + 'results in %(outdir)s' + path.sep + 'python.txt.') + + def init(self) -> None: + self.c_sourcefiles = [] # type: List[str] + for pattern in self.config.coverage_c_path: + pattern = path.join(self.srcdir, pattern) + self.c_sourcefiles.extend(glob.glob(pattern)) + + self.c_regexes = [] # type: List[Tuple[str, Pattern]] + for (name, exp) in self.config.coverage_c_regexes.items(): + try: + self.c_regexes.append((name, re.compile(exp))) + except Exception: + logger.warning(__('invalid regex %r in coverage_c_regexes'), exp) + + self.c_ignorexps = {} # type: Dict[str, List[Pattern]] + for (name, exps) in self.config.coverage_ignore_c_items.items(): + self.c_ignorexps[name] = compile_regex_list('coverage_ignore_c_items', + exps) + self.mod_ignorexps = compile_regex_list('coverage_ignore_modules', + self.config.coverage_ignore_modules) + self.cls_ignorexps = compile_regex_list('coverage_ignore_classes', + self.config.coverage_ignore_classes) + self.fun_ignorexps = compile_regex_list('coverage_ignore_functions', + self.config.coverage_ignore_functions) + self.py_ignorexps = compile_regex_list('coverage_ignore_pyobjects', + self.config.coverage_ignore_pyobjects) + + def get_outdated_docs(self) -> str: + return 'coverage overview' + + def write(self, *ignored: Any) -> None: + self.py_undoc = {} # type: Dict[str, Dict[str, Any]] + self.build_py_coverage() + self.write_py_coverage() + + self.c_undoc = {} # type: Dict[str, Set[Tuple[str, str]]] + self.build_c_coverage() + self.write_c_coverage() + + def build_c_coverage(self) -> None: + # Fetch all the info from the header files + c_objects = self.env.domaindata['c']['objects'] + for filename in self.c_sourcefiles: + undoc = set() # type: Set[Tuple[str, str]] + with open(filename) as f: + for line in f: + for key, regex in self.c_regexes: + match = regex.match(line) + if match: + name = match.groups()[0] + if name not in c_objects: + for exp in self.c_ignorexps.get(key, []): + if exp.match(name): + break + else: + undoc.add((key, name)) + continue + if undoc: + self.c_undoc[filename] = undoc + + def write_c_coverage(self) -> None: + output_file = path.join(self.outdir, 'c.txt') + with open(output_file, 'w') as op: + if self.config.coverage_write_headline: + write_header(op, 'Undocumented C API elements', '=') + op.write('\n') + + for filename, undoc in self.c_undoc.items(): + write_header(op, filename) + for typ, name in sorted(undoc): + op.write(' * %-50s [%9s]\n' % (name, typ)) + op.write('\n') + + def ignore_pyobj(self, full_name: str) -> bool: + for exp in self.py_ignorexps: + if exp.search(full_name): + return True + return False + + def build_py_coverage(self) -> None: + objects = self.env.domaindata['py']['objects'] + modules = self.env.domaindata['py']['modules'] + + skip_undoc = self.config.coverage_skip_undoc_in_source + + for mod_name in modules: + ignore = False + for exp in self.mod_ignorexps: + if exp.match(mod_name): + ignore = True + break + if ignore or self.ignore_pyobj(mod_name): + continue + + try: + mod = import_module(mod_name) + except ImportError as err: + logger.warning(__('module %s could not be imported: %s'), mod_name, err) + self.py_undoc[mod_name] = {'error': err} + continue + + funcs = [] + classes = {} # type: Dict[str, List[str]] + + for name, obj in inspect.getmembers(mod): + # diverse module attributes are ignored: + if name[0] == '_': + # begins in an underscore + continue + if not hasattr(obj, '__module__'): + # cannot be attributed to a module + continue + if obj.__module__ != mod_name: + # is not defined in this module + continue + + full_name = '%s.%s' % (mod_name, name) + if self.ignore_pyobj(full_name): + continue + + if inspect.isfunction(obj): + if full_name not in objects: + for exp in self.fun_ignorexps: + if exp.match(name): + break + else: + if skip_undoc and not obj.__doc__: + continue + funcs.append(name) + elif inspect.isclass(obj): + for exp in self.cls_ignorexps: + if exp.match(name): + break + else: + if full_name not in objects: + if skip_undoc and not obj.__doc__: + continue + # not documented at all + classes[name] = [] + continue + + attrs = [] # type: List[str] + + for attr_name in dir(obj): + if attr_name not in obj.__dict__: + continue + try: + attr = safe_getattr(obj, attr_name) + except AttributeError: + continue + if not (inspect.ismethod(attr) or + inspect.isfunction(attr)): + continue + if attr_name[0] == '_': + # starts with an underscore, ignore it + continue + if skip_undoc and not attr.__doc__: + # skip methods without docstring if wished + continue + full_attr_name = '%s.%s' % (full_name, attr_name) + if self.ignore_pyobj(full_attr_name): + continue + if full_attr_name not in objects: + attrs.append(attr_name) + if attrs: + # some attributes are undocumented + classes[name] = attrs + + self.py_undoc[mod_name] = {'funcs': funcs, 'classes': classes} + + def write_py_coverage(self) -> None: + output_file = path.join(self.outdir, 'python.txt') + failed = [] + with open(output_file, 'w') as op: + if self.config.coverage_write_headline: + write_header(op, 'Undocumented Python objects', '=') + keys = sorted(self.py_undoc.keys()) + for name in keys: + undoc = self.py_undoc[name] + if 'error' in undoc: + failed.append((name, undoc['error'])) + else: + if not undoc['classes'] and not undoc['funcs']: + continue + + write_header(op, name) + if undoc['funcs']: + op.write('Functions:\n') + op.writelines(' * %s\n' % x for x in undoc['funcs']) + op.write('\n') + if undoc['classes']: + op.write('Classes:\n') + for name, methods in sorted( + undoc['classes'].items()): + if not methods: + op.write(' * %s\n' % name) + else: + op.write(' * %s -- missing methods:\n\n' % name) + op.writelines(' - %s\n' % x for x in methods) + op.write('\n') + + if failed: + write_header(op, 'Modules that failed to import') + op.writelines(' * %s -- %s\n' % x for x in failed) + + def finish(self) -> None: + # dump the coverage data to a pickle file too + picklepath = path.join(self.outdir, 'undoc.pickle') + with open(picklepath, 'wb') as dumpfile: + pickle.dump((self.py_undoc, self.c_undoc), dumpfile) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_builder(CoverageBuilder) + app.add_config_value('coverage_ignore_modules', [], False) + app.add_config_value('coverage_ignore_functions', [], False) + app.add_config_value('coverage_ignore_classes', [], False) + app.add_config_value('coverage_ignore_pyobjects', [], False) + app.add_config_value('coverage_c_path', [], False) + app.add_config_value('coverage_c_regexes', {}, False) + app.add_config_value('coverage_ignore_c_items', {}, False) + app.add_config_value('coverage_write_headline', True, False) + app.add_config_value('coverage_skip_undoc_in_source', False, False) + return {'version': sphinx.__display_version__, 'parallel_read_safe': True} diff --git a/sphinx/sphinx/ext/doctest.py b/sphinx/sphinx/ext/doctest.py new file mode 100644 index 0000000..645521f --- /dev/null +++ b/sphinx/sphinx/ext/doctest.py @@ -0,0 +1,566 @@ +""" + sphinx.ext.doctest + ~~~~~~~~~~~~~~~~~~ + + Mimic doctest by automatically executing code snippets and checking + their results. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import doctest +import re +import sys +import time +import warnings +from io import StringIO +from os import path +from typing import Any, Callable, Dict, Iterable, List, Sequence, Set, Tuple + +from docutils import nodes +from docutils.nodes import Element, Node, TextElement +from docutils.parsers.rst import directives +from packaging.specifiers import SpecifierSet, InvalidSpecifier +from packaging.version import Version + +import sphinx +from sphinx.builders import Builder +from sphinx.deprecation import RemovedInSphinx40Warning +from sphinx.locale import __ +from sphinx.util import logging +from sphinx.util.console import bold # type: ignore +from sphinx.util.docutils import SphinxDirective +from sphinx.util.osutil import relpath + +if False: + # For type annotation + from typing import Type # for python3.5.1 + from sphinx.application import Sphinx + + +logger = logging.getLogger(__name__) + +blankline_re = re.compile(r'^\s*<BLANKLINE>', re.MULTILINE) +doctestopt_re = re.compile(r'#\s*doctest:.+$', re.MULTILINE) + + +def doctest_encode(text: str, encoding: str) -> str: + warnings.warn('doctest_encode() is deprecated.', + RemovedInSphinx40Warning) + return text + + +def is_allowed_version(spec: str, version: str) -> bool: + """Check `spec` satisfies `version` or not. + + This obeys PEP-440 specifiers: + https://www.python.org/dev/peps/pep-0440/#version-specifiers + + Some examples: + + >>> is_allowed_version('3.3', '<=3.5') + True + >>> is_allowed_version('3.3', '<=3.2') + False + >>> is_allowed_version('3.3', '>3.2, <4.0') + True + """ + return Version(version) in SpecifierSet(spec) + + +# set up the necessary directives + +class TestDirective(SphinxDirective): + """ + Base class for doctest-related directives. + """ + + has_content = True + required_arguments = 0 + optional_arguments = 1 + final_argument_whitespace = True + + def run(self) -> List[Node]: + # use ordinary docutils nodes for test code: they get special attributes + # so that our builder recognizes them, and the other builders are happy. + code = '\n'.join(self.content) + test = None + if self.name == 'doctest': + if '<BLANKLINE>' in code: + # convert <BLANKLINE>s to ordinary blank lines for presentation + test = code + code = blankline_re.sub('', code) + if doctestopt_re.search(code): + if not test: + test = code + code = doctestopt_re.sub('', code) + nodetype = nodes.literal_block # type: Type[TextElement] + if self.name in ('testsetup', 'testcleanup') or 'hide' in self.options: + nodetype = nodes.comment + if self.arguments: + groups = [x.strip() for x in self.arguments[0].split(',')] + else: + groups = ['default'] + node = nodetype(code, code, testnodetype=self.name, groups=groups) + self.set_source_info(node) + if test is not None: + # only save if it differs from code + node['test'] = test + if self.name == 'doctest': + if self.config.highlight_language in ('py', 'python'): + node['language'] = 'pycon' + else: + node['language'] = 'pycon3' # default + elif self.name == 'testcode': + if self.config.highlight_language in ('py', 'python'): + node['language'] = 'python' + else: + node['language'] = 'python3' # default + elif self.name == 'testoutput': + # don't try to highlight output + node['language'] = 'none' + node['options'] = {} + if self.name in ('doctest', 'testoutput') and 'options' in self.options: + # parse doctest-like output comparison flags + option_strings = self.options['options'].replace(',', ' ').split() + for option in option_strings: + prefix, option_name = option[0], option[1:] + if prefix not in '+-': + self.state.document.reporter.warning( + __("missing '+' or '-' in '%s' option.") % option, + line=self.lineno) + continue + if option_name not in doctest.OPTIONFLAGS_BY_NAME: + self.state.document.reporter.warning( + __("'%s' is not a valid option.") % option_name, + line=self.lineno) + continue + flag = doctest.OPTIONFLAGS_BY_NAME[option[1:]] + node['options'][flag] = (option[0] == '+') + if self.name == 'doctest' and 'pyversion' in self.options: + try: + spec = self.options['pyversion'] + python_version = '.'.join([str(v) for v in sys.version_info[:3]]) + if not is_allowed_version(spec, python_version): + flag = doctest.OPTIONFLAGS_BY_NAME['SKIP'] + node['options'][flag] = True # Skip the test + except InvalidSpecifier: + self.state.document.reporter.warning( + __("'%s' is not a valid pyversion option") % spec, + line=self.lineno) + if 'skipif' in self.options: + node['skipif'] = self.options['skipif'] + return [node] + + +class TestsetupDirective(TestDirective): + option_spec = {'skipif': directives.unchanged_required} # type: Dict + + +class TestcleanupDirective(TestDirective): + option_spec = {'skipif': directives.unchanged_required} # type: Dict + + +class DoctestDirective(TestDirective): + option_spec = { + 'hide': directives.flag, + 'options': directives.unchanged, + 'pyversion': directives.unchanged_required, + 'skipif': directives.unchanged_required, + } + + +class TestcodeDirective(TestDirective): + option_spec = { + 'hide': directives.flag, + 'pyversion': directives.unchanged_required, + 'skipif': directives.unchanged_required, + } + + +class TestoutputDirective(TestDirective): + option_spec = { + 'hide': directives.flag, + 'options': directives.unchanged, + 'pyversion': directives.unchanged_required, + 'skipif': directives.unchanged_required, + } + + +parser = doctest.DocTestParser() + + +# helper classes + +class TestGroup: + def __init__(self, name: str) -> None: + self.name = name + self.setup = [] # type: List[TestCode] + self.tests = [] # type: List[List[TestCode]] + self.cleanup = [] # type: List[TestCode] + + def add_code(self, code: "TestCode", prepend: bool = False) -> None: + if code.type == 'testsetup': + if prepend: + self.setup.insert(0, code) + else: + self.setup.append(code) + elif code.type == 'testcleanup': + self.cleanup.append(code) + elif code.type == 'doctest': + self.tests.append([code]) + elif code.type == 'testcode': + self.tests.append([code, None]) + elif code.type == 'testoutput': + if self.tests and len(self.tests[-1]) == 2: + self.tests[-1][1] = code + else: + raise RuntimeError(__('invalid TestCode type')) + + def __repr__(self) -> str: + return 'TestGroup(name=%r, setup=%r, cleanup=%r, tests=%r)' % ( + self.name, self.setup, self.cleanup, self.tests) + + +class TestCode: + def __init__(self, code: str, type: str, filename: str, + lineno: int, options: Dict = None) -> None: + self.code = code + self.type = type + self.filename = filename + self.lineno = lineno + self.options = options or {} + + def __repr__(self) -> str: + return 'TestCode(%r, %r, filename=%r, lineno=%r, options=%r)' % ( + self.code, self.type, self.filename, self.lineno, self.options) + + +class SphinxDocTestRunner(doctest.DocTestRunner): + def summarize(self, out: Callable, verbose: bool = None # type: ignore + ) -> Tuple[int, int]: + string_io = StringIO() + old_stdout = sys.stdout + sys.stdout = string_io + try: + res = super().summarize(verbose) + finally: + sys.stdout = old_stdout + out(string_io.getvalue()) + return res + + def _DocTestRunner__patched_linecache_getlines(self, filename: str, + module_globals: Any = None) -> Any: + # this is overridden from DocTestRunner adding the try-except below + m = self._DocTestRunner__LINECACHE_FILENAME_RE.match(filename) # type: ignore + if m and m.group('name') == self.test.name: + try: + example = self.test.examples[int(m.group('examplenum'))] + # because we compile multiple doctest blocks with the same name + # (viz. the group name) this might, for outer stack frames in a + # traceback, get the wrong test which might not have enough examples + except IndexError: + pass + else: + return example.source.splitlines(True) + return self.save_linecache_getlines(filename, module_globals) # type: ignore + + +# the new builder -- use sphinx-build.py -b doctest to run + +class DocTestBuilder(Builder): + """ + Runs test snippets in the documentation. + """ + name = 'doctest' + epilog = __('Testing of doctests in the sources finished, look at the ' + 'results in %(outdir)s/output.txt.') + + def init(self) -> None: + # default options + self.opt = self.config.doctest_default_flags + + # HACK HACK HACK + # doctest compiles its snippets with type 'single'. That is nice + # for doctest examples but unusable for multi-statement code such + # as setup code -- to be able to use doctest error reporting with + # that code nevertheless, we monkey-patch the "compile" it uses. + doctest.compile = self.compile # type: ignore + + sys.path[0:0] = self.config.doctest_path + + self.type = 'single' + + self.total_failures = 0 + self.total_tries = 0 + self.setup_failures = 0 + self.setup_tries = 0 + self.cleanup_failures = 0 + self.cleanup_tries = 0 + + date = time.strftime('%Y-%m-%d %H:%M:%S') + + self.outfile = open(path.join(self.outdir, 'output.txt'), 'w', encoding='utf-8') + self.outfile.write(('Results of doctest builder run on %s\n' + '==================================%s\n') % + (date, '=' * len(date))) + + def _out(self, text: str) -> None: + logger.info(text, nonl=True) + self.outfile.write(text) + + def _warn_out(self, text: str) -> None: + if self.app.quiet or self.app.warningiserror: + logger.warning(text) + else: + logger.info(text, nonl=True) + self.outfile.write(text) + + def get_target_uri(self, docname: str, typ: str = None) -> str: + return '' + + def get_outdated_docs(self) -> Set[str]: + return self.env.found_docs + + def finish(self) -> None: + # write executive summary + def s(v: int) -> str: + return 's' if v != 1 else '' + repl = (self.total_tries, s(self.total_tries), + self.total_failures, s(self.total_failures), + self.setup_failures, s(self.setup_failures), + self.cleanup_failures, s(self.cleanup_failures)) + self._out(''' +Doctest summary +=============== +%5d test%s +%5d failure%s in tests +%5d failure%s in setup code +%5d failure%s in cleanup code +''' % repl) + self.outfile.close() + + if self.total_failures or self.setup_failures or self.cleanup_failures: + self.app.statuscode = 1 + + def write(self, build_docnames: Iterable[str], updated_docnames: Sequence[str], + method: str = 'update') -> None: + if build_docnames is None: + build_docnames = sorted(self.env.all_docs) + + logger.info(bold('running tests...')) + for docname in build_docnames: + # no need to resolve the doctree + doctree = self.env.get_doctree(docname) + self.test_doc(docname, doctree) + + def get_filename_for_node(self, node: Node, docname: str) -> str: + """Try to get the file which actually contains the doctest, not the + filename of the document it's included in.""" + try: + filename = relpath(node.source, self.env.srcdir)\ + .rsplit(':docstring of ', maxsplit=1)[0] + except Exception: + filename = self.env.doc2path(docname, base=None) + return filename + + @staticmethod + def get_line_number(node: Node) -> int: + """Get the real line number or admit we don't know.""" + # TODO: Work out how to store or calculate real (file-relative) + # line numbers for doctest blocks in docstrings. + if ':docstring of ' in path.basename(node.source or ''): + # The line number is given relative to the stripped docstring, + # not the file. This is correct where it is set, in + # `docutils.nodes.Node.setup_child`, but Sphinx should report + # relative to the file, not the docstring. + return None + if node.line is not None: + # TODO: find the root cause of this off by one error. + return node.line - 1 + return None + + def skipped(self, node: Element) -> bool: + if 'skipif' not in node: + return False + else: + condition = node['skipif'] + context = {} # type: Dict[str, Any] + if self.config.doctest_global_setup: + exec(self.config.doctest_global_setup, context) + should_skip = eval(condition, context) + if self.config.doctest_global_cleanup: + exec(self.config.doctest_global_cleanup, context) + return should_skip + + def test_doc(self, docname: str, doctree: Node) -> None: + groups = {} # type: Dict[str, TestGroup] + add_to_all_groups = [] + self.setup_runner = SphinxDocTestRunner(verbose=False, + optionflags=self.opt) + self.test_runner = SphinxDocTestRunner(verbose=False, + optionflags=self.opt) + self.cleanup_runner = SphinxDocTestRunner(verbose=False, + optionflags=self.opt) + + self.test_runner._fakeout = self.setup_runner._fakeout # type: ignore + self.cleanup_runner._fakeout = self.setup_runner._fakeout # type: ignore + + if self.config.doctest_test_doctest_blocks: + def condition(node: Node) -> bool: + return (isinstance(node, (nodes.literal_block, nodes.comment)) and + 'testnodetype' in node) or \ + isinstance(node, nodes.doctest_block) + else: + def condition(node: Node) -> bool: + return isinstance(node, (nodes.literal_block, nodes.comment)) \ + and 'testnodetype' in node + for node in doctree.traverse(condition): # type: Element + if self.skipped(node): + continue + + source = node['test'] if 'test' in node else node.astext() + filename = self.get_filename_for_node(node, docname) + line_number = self.get_line_number(node) + if not source: + logger.warning(__('no code/output in %s block at %s:%s'), + node.get('testnodetype', 'doctest'), + filename, line_number) + code = TestCode(source, type=node.get('testnodetype', 'doctest'), + filename=filename, lineno=line_number, + options=node.get('options')) + node_groups = node.get('groups', ['default']) + if '*' in node_groups: + add_to_all_groups.append(code) + continue + for groupname in node_groups: + if groupname not in groups: + groups[groupname] = TestGroup(groupname) + groups[groupname].add_code(code) + for code in add_to_all_groups: + for group in groups.values(): + group.add_code(code) + if self.config.doctest_global_setup: + code = TestCode(self.config.doctest_global_setup, + 'testsetup', filename=None, lineno=0) + for group in groups.values(): + group.add_code(code, prepend=True) + if self.config.doctest_global_cleanup: + code = TestCode(self.config.doctest_global_cleanup, + 'testcleanup', filename=None, lineno=0) + for group in groups.values(): + group.add_code(code) + if not groups: + return + + self._out('\nDocument: %s\n----------%s\n' % + (docname, '-' * len(docname))) + for group in groups.values(): + self.test_group(group) + # Separately count results from setup code + res_f, res_t = self.setup_runner.summarize(self._out, verbose=False) + self.setup_failures += res_f + self.setup_tries += res_t + if self.test_runner.tries: + res_f, res_t = self.test_runner.summarize(self._out, verbose=True) + self.total_failures += res_f + self.total_tries += res_t + if self.cleanup_runner.tries: + res_f, res_t = self.cleanup_runner.summarize(self._out, + verbose=True) + self.cleanup_failures += res_f + self.cleanup_tries += res_t + + def compile(self, code: str, name: str, type: str, flags: Any, dont_inherit: bool) -> Any: + return compile(code, name, self.type, flags, dont_inherit) + + def test_group(self, group: TestGroup) -> None: + ns = {} # type: Dict + + def run_setup_cleanup(runner: Any, testcodes: List[TestCode], what: Any) -> bool: + examples = [] + for testcode in testcodes: + example = doctest.Example(testcode.code, '', lineno=testcode.lineno) + examples.append(example) + if not examples: + return True + # simulate a doctest with the code + sim_doctest = doctest.DocTest(examples, {}, + '%s (%s code)' % (group.name, what), + testcodes[0].filename, 0, None) + sim_doctest.globs = ns + old_f = runner.failures + self.type = 'exec' # the snippet may contain multiple statements + runner.run(sim_doctest, out=self._warn_out, clear_globs=False) + if runner.failures > old_f: + return False + return True + + # run the setup code + if not run_setup_cleanup(self.setup_runner, group.setup, 'setup'): + # if setup failed, don't run the group + return + + # run the tests + for code in group.tests: + if len(code) == 1: + # ordinary doctests (code/output interleaved) + try: + test = parser.get_doctest(code[0].code, {}, group.name, + code[0].filename, code[0].lineno) + except Exception: + logger.warning(__('ignoring invalid doctest code: %r'), code[0].code, + location=(code[0].filename, code[0].lineno)) + continue + if not test.examples: + continue + for example in test.examples: + # apply directive's comparison options + new_opt = code[0].options.copy() + new_opt.update(example.options) + example.options = new_opt + self.type = 'single' # as for ordinary doctests + else: + # testcode and output separate + output = code[1].code if code[1] else '' + options = code[1].options if code[1] else {} + # disable <BLANKLINE> processing as it is not needed + options[doctest.DONT_ACCEPT_BLANKLINE] = True + # find out if we're testing an exception + m = parser._EXCEPTION_RE.match(output) # type: ignore + if m: + exc_msg = m.group('msg') + else: + exc_msg = None + example = doctest.Example(code[0].code, output, exc_msg=exc_msg, + lineno=code[0].lineno, options=options) + test = doctest.DocTest([example], {}, group.name, + code[0].filename, code[0].lineno, None) + self.type = 'exec' # multiple statements again + # DocTest.__init__ copies the globs namespace, which we don't want + test.globs = ns + # also don't clear the globs namespace after running the doctest + self.test_runner.run(test, out=self._warn_out, clear_globs=False) + + # run the cleanup + run_setup_cleanup(self.cleanup_runner, group.cleanup, 'cleanup') + + +def setup(app: "Sphinx") -> Dict[str, Any]: + app.add_directive('testsetup', TestsetupDirective) + app.add_directive('testcleanup', TestcleanupDirective) + app.add_directive('doctest', DoctestDirective) + app.add_directive('testcode', TestcodeDirective) + app.add_directive('testoutput', TestoutputDirective) + app.add_builder(DocTestBuilder) + # this config value adds to sys.path + app.add_config_value('doctest_path', [], False) + app.add_config_value('doctest_test_doctest_blocks', 'default', False) + app.add_config_value('doctest_global_setup', '', False) + app.add_config_value('doctest_global_cleanup', '', False) + app.add_config_value( + 'doctest_default_flags', + doctest.DONT_ACCEPT_TRUE_FOR_1 | doctest.ELLIPSIS | doctest.IGNORE_EXCEPTION_DETAIL, + False) + return {'version': sphinx.__display_version__, 'parallel_read_safe': True} diff --git a/sphinx/sphinx/ext/duration.py b/sphinx/sphinx/ext/duration.py new file mode 100644 index 0000000..669baf2 --- /dev/null +++ b/sphinx/sphinx/ext/duration.py @@ -0,0 +1,96 @@ +""" + sphinx.ext.duration + ~~~~~~~~~~~~~~~~~~~ + + Measure durations of Sphinx processing. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from datetime import datetime, timedelta +from itertools import islice +from operator import itemgetter +from typing import Any, Dict, List +from typing import cast + +from docutils import nodes + +from sphinx.application import Sphinx +from sphinx.domains import Domain +from sphinx.locale import __ +from sphinx.util import logging + +logger = logging.getLogger(__name__) + + +class DurationDomain(Domain): + """A domain for durations of Sphinx processing.""" + name = 'duration' + + @property + def reading_durations(self) -> Dict[str, timedelta]: + return self.data.setdefault('reading_durations', {}) + + def note_reading_duration(self, duration: timedelta) -> None: + self.reading_durations[self.env.docname] = duration + + def clear(self) -> None: + self.reading_durations.clear() + + def clear_doc(self, docname: str) -> None: + self.reading_durations.pop(docname, None) + + def merge_domaindata(self, docnames: List[str], otherdata: Dict[str, timedelta]) -> None: + for docname, duration in otherdata.items(): + if docname in docnames: + self.reading_durations[docname] = duration + + +def on_builder_inited(app: Sphinx) -> None: + """Initialize DurationDomain on bootstrap. + + This clears results of last build. + """ + domain = cast(DurationDomain, app.env.get_domain('duration')) + domain.clear() + + +def on_source_read(app: Sphinx, docname: str, content: List[str]) -> None: + """Start to measure reading duration.""" + app.env.temp_data['started_at'] = datetime.now() + + +def on_doctree_read(app: Sphinx, doctree: nodes.document) -> None: + """Record a reading duration.""" + started_at = app.env.temp_data.get('started_at') + duration = datetime.now() - started_at + domain = cast(DurationDomain, app.env.get_domain('duration')) + domain.note_reading_duration(duration) + + +def on_build_finished(app: Sphinx, error: Exception) -> None: + """Display duration ranking on current build.""" + domain = cast(DurationDomain, app.env.get_domain('duration')) + durations = sorted(domain.reading_durations.items(), key=itemgetter(1), reverse=True) + if not durations: + return + + logger.info('') + logger.info(__('====================== slowest reading durations =======================')) + for docname, d in islice(durations, 5): + logger.info('%d.%03d %s', d.seconds, d.microseconds / 1000, docname) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_domain(DurationDomain) + app.connect('builder-inited', on_builder_inited) + app.connect('source-read', on_source_read) + app.connect('doctree-read', on_doctree_read) + app.connect('build-finished', on_build_finished) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/ext/extlinks.py b/sphinx/sphinx/ext/extlinks.py new file mode 100644 index 0000000..ff3adb3 --- /dev/null +++ b/sphinx/sphinx/ext/extlinks.py @@ -0,0 +1,70 @@ +""" + sphinx.ext.extlinks + ~~~~~~~~~~~~~~~~~~~ + + Extension to save typing and prevent hard-coding of base URLs in the reST + files. + + This adds a new config value called ``extlinks`` that is created like this:: + + extlinks = {'exmpl': ('https://example.invalid/%s.html', prefix), ...} + + Now you can use e.g. :exmpl:`foo` in your documents. This will create a + link to ``https://example.invalid/foo.html``. The link caption depends on + the *prefix* value given: + + - If it is ``None``, the caption will be the full URL. + - If it is a string (empty or not), the caption will be the prefix prepended + to the role content. + + You can also give an explicit caption, e.g. :exmpl:`Foo <foo>`. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Any, Dict, List, Tuple + +from docutils import nodes, utils +from docutils.nodes import Node, system_message +from docutils.parsers.rst.states import Inliner + +import sphinx +from sphinx.application import Sphinx +from sphinx.util.nodes import split_explicit_title +from sphinx.util.typing import RoleFunction + + +def make_link_role(base_url: str, prefix: str) -> RoleFunction: + def role(typ: str, rawtext: str, text: str, lineno: int, + inliner: Inliner, options: Dict = {}, content: List[str] = [] + ) -> Tuple[List[Node], List[system_message]]: + text = utils.unescape(text) + has_explicit_title, title, part = split_explicit_title(text) + try: + full_url = base_url % part + except (TypeError, ValueError): + inliner.reporter.warning( + 'unable to expand %s extlink with base URL %r, please make ' + 'sure the base contains \'%%s\' exactly once' + % (typ, base_url), line=lineno) + full_url = base_url + part + if not has_explicit_title: + if prefix is None: + title = full_url + else: + title = prefix + part + pnode = nodes.reference(title, title, internal=False, refuri=full_url) + return [pnode], [] + return role + + +def setup_link_roles(app: Sphinx) -> None: + for name, (base_url, prefix) in app.config.extlinks.items(): + app.add_role(name, make_link_role(base_url, prefix)) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_config_value('extlinks', {}, 'env') + app.connect('builder-inited', setup_link_roles) + return {'version': sphinx.__display_version__, 'parallel_read_safe': True} diff --git a/sphinx/sphinx/ext/githubpages.py b/sphinx/sphinx/ext/githubpages.py new file mode 100644 index 0000000..4564ce6 --- /dev/null +++ b/sphinx/sphinx/ext/githubpages.py @@ -0,0 +1,36 @@ +""" + sphinx.ext.githubpages + ~~~~~~~~~~~~~~~~~~~~~~ + + To publish HTML docs at GitHub Pages, create .nojekyll file. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import os +import urllib +from typing import Any, Dict + +import sphinx +from sphinx.application import Sphinx +from sphinx.environment import BuildEnvironment + + +def create_nojekyll_and_cname(app: Sphinx, env: BuildEnvironment) -> None: + if app.builder.format == 'html': + open(os.path.join(app.builder.outdir, '.nojekyll'), 'wt').close() + + html_baseurl = app.config.html_baseurl + if html_baseurl: + domain = urllib.parse.urlparse(html_baseurl).hostname + if domain and not domain.endswith(".github.io"): + with open(os.path.join(app.builder.outdir, 'CNAME'), 'wt') as f: + # NOTE: don't write a trailing newline. The `CNAME` file that's + # auto-generated by the Github UI doesn't have one. + f.write(domain) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.connect('env-updated', create_nojekyll_and_cname) + return {'version': sphinx.__display_version__, 'parallel_read_safe': True} diff --git a/sphinx/sphinx/ext/graphviz.py b/sphinx/sphinx/ext/graphviz.py new file mode 100644 index 0000000..27b64fb --- /dev/null +++ b/sphinx/sphinx/ext/graphviz.py @@ -0,0 +1,410 @@ +""" + sphinx.ext.graphviz + ~~~~~~~~~~~~~~~~~~~ + + Allow graphviz-formatted graphs to be included in Sphinx-generated + documents inline. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import posixpath +import re +import subprocess +from hashlib import sha1 +from os import path +from subprocess import CalledProcessError, PIPE +from typing import Any, Dict, List, Tuple + +from docutils import nodes +from docutils.nodes import Node +from docutils.parsers.rst import Directive, directives + +import sphinx +from sphinx.application import Sphinx +from sphinx.errors import SphinxError +from sphinx.locale import _, __ +from sphinx.util import logging +from sphinx.util.docutils import SphinxDirective, SphinxTranslator +from sphinx.util.fileutil import copy_asset +from sphinx.util.i18n import search_image_for_language +from sphinx.util.nodes import set_source_info +from sphinx.util.osutil import ensuredir +from sphinx.writers.html import HTMLTranslator +from sphinx.writers.latex import LaTeXTranslator +from sphinx.writers.manpage import ManualPageTranslator +from sphinx.writers.texinfo import TexinfoTranslator +from sphinx.writers.text import TextTranslator + +logger = logging.getLogger(__name__) + + +class GraphvizError(SphinxError): + category = 'Graphviz error' + + +class ClickableMapDefinition: + """A manipulator for clickable map file of graphviz.""" + maptag_re = re.compile('<map id="(.*?)"') + href_re = re.compile('href=".*?"') + + def __init__(self, filename: str, content: str, dot: str = '') -> None: + self.id = None # type: str + self.filename = filename + self.content = content.splitlines() + self.clickable = [] # type: List[str] + + self.parse(dot=dot) + + def parse(self, dot: str = None) -> None: + matched = self.maptag_re.match(self.content[0]) + if not matched: + raise GraphvizError('Invalid clickable map file found: %s' % self.filename) + + self.id = matched.group(1) + if self.id == '%3': + # graphviz generates wrong ID if graph name not specified + # https://gitlab.com/graphviz/graphviz/issues/1327 + hashed = sha1(dot.encode()).hexdigest() + self.id = 'grapviz%s' % hashed[-10:] + self.content[0] = self.content[0].replace('%3', self.id) + + for line in self.content: + if self.href_re.search(line): + self.clickable.append(line) + + def generate_clickable_map(self) -> str: + """Generate clickable map tags if clickable item exists. + + If not exists, this only returns empty string. + """ + if self.clickable: + return '\n'.join([self.content[0]] + self.clickable + [self.content[-1]]) + else: + return '' + + +class graphviz(nodes.General, nodes.Inline, nodes.Element): + pass + + +def figure_wrapper(directive: Directive, node: graphviz, caption: str) -> nodes.figure: + figure_node = nodes.figure('', node) + if 'align' in node: + figure_node['align'] = node.attributes.pop('align') + + inodes, messages = directive.state.inline_text(caption, directive.lineno) + caption_node = nodes.caption(caption, '', *inodes) + caption_node.extend(messages) + set_source_info(directive, caption_node) + figure_node += caption_node + return figure_node + + +def align_spec(argument: Any) -> str: + return directives.choice(argument, ('left', 'center', 'right')) + + +class Graphviz(SphinxDirective): + """ + Directive to insert arbitrary dot markup. + """ + has_content = True + required_arguments = 0 + optional_arguments = 1 + final_argument_whitespace = False + option_spec = { + 'alt': directives.unchanged, + 'align': align_spec, + 'caption': directives.unchanged, + 'layout': directives.unchanged, + 'graphviz_dot': directives.unchanged, # an old alias of `layout` option + 'name': directives.unchanged, + 'class': directives.class_option, + } + + def run(self) -> List[Node]: + if self.arguments: + document = self.state.document + if self.content: + return [document.reporter.warning( + __('Graphviz directive cannot have both content and ' + 'a filename argument'), line=self.lineno)] + argument = search_image_for_language(self.arguments[0], self.env) + rel_filename, filename = self.env.relfn2path(argument) + self.env.note_dependency(rel_filename) + try: + with open(filename, encoding='utf-8') as fp: + dotcode = fp.read() + except OSError: + return [document.reporter.warning( + __('External Graphviz file %r not found or reading ' + 'it failed') % filename, line=self.lineno)] + else: + dotcode = '\n'.join(self.content) + if not dotcode.strip(): + return [self.state_machine.reporter.warning( + __('Ignoring "graphviz" directive without content.'), + line=self.lineno)] + node = graphviz() + node['code'] = dotcode + node['options'] = {'docname': self.env.docname} + + if 'graphviz_dot' in self.options: + node['options']['graphviz_dot'] = self.options['graphviz_dot'] + if 'layout' in self.options: + node['options']['graphviz_dot'] = self.options['layout'] + if 'alt' in self.options: + node['alt'] = self.options['alt'] + if 'align' in self.options: + node['align'] = self.options['align'] + if 'class' in self.options: + node['classes'] = self.options['class'] + + if 'caption' not in self.options: + self.add_name(node) + return [node] + else: + figure = figure_wrapper(self, node, self.options['caption']) + self.add_name(figure) + return [figure] + + +class GraphvizSimple(SphinxDirective): + """ + Directive to insert arbitrary dot markup. + """ + has_content = True + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = False + option_spec = { + 'alt': directives.unchanged, + 'align': align_spec, + 'caption': directives.unchanged, + 'graphviz_dot': directives.unchanged, + 'name': directives.unchanged, + 'class': directives.class_option, + } + + def run(self) -> List[Node]: + node = graphviz() + node['code'] = '%s %s {\n%s\n}\n' % \ + (self.name, self.arguments[0], '\n'.join(self.content)) + node['options'] = {'docname': self.env.docname} + if 'graphviz_dot' in self.options: + node['options']['graphviz_dot'] = self.options['graphviz_dot'] + if 'alt' in self.options: + node['alt'] = self.options['alt'] + if 'align' in self.options: + node['align'] = self.options['align'] + if 'class' in self.options: + node['classes'] = self.options['class'] + + if 'caption' not in self.options: + self.add_name(node) + return [node] + else: + figure = figure_wrapper(self, node, self.options['caption']) + self.add_name(figure) + return [figure] + + +def render_dot(self: SphinxTranslator, code: str, options: Dict, + format: str, prefix: str = 'graphviz') -> Tuple[str, str]: + """Render graphviz code into a PNG or PDF output file.""" + graphviz_dot = options.get('graphviz_dot', self.builder.config.graphviz_dot) + hashkey = (code + str(options) + str(graphviz_dot) + + str(self.builder.config.graphviz_dot_args)).encode() + + fname = '%s-%s.%s' % (prefix, sha1(hashkey).hexdigest(), format) + relfn = posixpath.join(self.builder.imgpath, fname) + outfn = path.join(self.builder.outdir, self.builder.imagedir, fname) + + if path.isfile(outfn): + return relfn, outfn + + if (hasattr(self.builder, '_graphviz_warned_dot') and + self.builder._graphviz_warned_dot.get(graphviz_dot)): # type: ignore # NOQA + return None, None + + ensuredir(path.dirname(outfn)) + + dot_args = [graphviz_dot] + dot_args.extend(self.builder.config.graphviz_dot_args) + dot_args.extend(['-T' + format, '-o' + outfn]) + + docname = options.get('docname', 'index') + cwd = path.dirname(path.join(self.builder.srcdir, docname)) + + if format == 'png': + dot_args.extend(['-Tcmapx', '-o%s.map' % outfn]) + + try: + ret = subprocess.run(dot_args, input=code.encode(), stdout=PIPE, stderr=PIPE, + cwd=cwd, check=True) + if not path.isfile(outfn): + raise GraphvizError(__('dot did not produce an output file:\n[stderr]\n%r\n' + '[stdout]\n%r') % (ret.stderr, ret.stdout)) + return relfn, outfn + except OSError: + logger.warning(__('dot command %r cannot be run (needed for graphviz ' + 'output), check the graphviz_dot setting'), graphviz_dot) + if not hasattr(self.builder, '_graphviz_warned_dot'): + self.builder._graphviz_warned_dot = {} # type: ignore + self.builder._graphviz_warned_dot[graphviz_dot] = True # type: ignore + return None, None + except CalledProcessError as exc: + raise GraphvizError(__('dot exited with error:\n[stderr]\n%r\n' + '[stdout]\n%r') % (exc.stderr, exc.stdout)) + + +def render_dot_html(self: HTMLTranslator, node: graphviz, code: str, options: Dict, + prefix: str = 'graphviz', imgcls: str = None, alt: str = None + ) -> Tuple[str, str]: + format = self.builder.config.graphviz_output_format + try: + if format not in ('png', 'svg'): + raise GraphvizError(__("graphviz_output_format must be one of 'png', " + "'svg', but is %r") % format) + fname, outfn = render_dot(self, code, options, format, prefix) + except GraphvizError as exc: + logger.warning(__('dot code %r: %s'), code, exc) + raise nodes.SkipNode + + classes = [imgcls, 'graphviz'] + node.get('classes', []) + imgcls = ' '.join(filter(None, classes)) + + if fname is None: + self.body.append(self.encode(code)) + else: + if alt is None: + alt = node.get('alt', self.encode(code).strip()) + if 'align' in node: + self.body.append('<div align="%s" class="align-%s">' % + (node['align'], node['align'])) + if format == 'svg': + self.body.append('<div class="graphviz">') + self.body.append('<object data="%s" type="image/svg+xml" class="%s">\n' % + (fname, imgcls)) + self.body.append('<p class="warning">%s</p>' % alt) + self.body.append('</object></div>\n') + else: + with open(outfn + '.map', encoding='utf-8') as mapfile: + imgmap = ClickableMapDefinition(outfn + '.map', mapfile.read(), dot=code) + if imgmap.clickable: + # has a map + self.body.append('<div class="graphviz">') + self.body.append('<img src="%s" alt="%s" usemap="#%s" class="%s" />' % + (fname, alt, imgmap.id, imgcls)) + self.body.append('</div>\n') + self.body.append(imgmap.generate_clickable_map()) + else: + # nothing in image map + self.body.append('<div class="graphviz">') + self.body.append('<img src="%s" alt="%s" class="%s" />' % + (fname, alt, imgcls)) + self.body.append('</div>\n') + if 'align' in node: + self.body.append('</div>\n') + + raise nodes.SkipNode + + +def html_visit_graphviz(self: HTMLTranslator, node: graphviz) -> None: + render_dot_html(self, node, node['code'], node['options']) + + +def render_dot_latex(self: LaTeXTranslator, node: graphviz, code: str, + options: Dict, prefix: str = 'graphviz') -> None: + try: + fname, outfn = render_dot(self, code, options, 'pdf', prefix) + except GraphvizError as exc: + logger.warning(__('dot code %r: %s'), code, exc) + raise nodes.SkipNode + + is_inline = self.is_inline(node) + + if not is_inline: + pre = '' + post = '' + if 'align' in node: + if node['align'] == 'left': + pre = '{' + post = r'\hspace*{\fill}}' + elif node['align'] == 'right': + pre = r'{\hspace*{\fill}' + post = '}' + elif node['align'] == 'center': + pre = r'{\hfill' + post = r'\hspace*{\fill}}' + self.body.append('\n%s' % pre) + + self.body.append(r'\sphinxincludegraphics[]{%s}' % fname) + + if not is_inline: + self.body.append('%s\n' % post) + + raise nodes.SkipNode + + +def latex_visit_graphviz(self: LaTeXTranslator, node: graphviz) -> None: + render_dot_latex(self, node, node['code'], node['options']) + + +def render_dot_texinfo(self: TexinfoTranslator, node: graphviz, code: str, + options: Dict, prefix: str = 'graphviz') -> None: + try: + fname, outfn = render_dot(self, code, options, 'png', prefix) + except GraphvizError as exc: + logger.warning(__('dot code %r: %s'), code, exc) + raise nodes.SkipNode + if fname is not None: + self.body.append('@image{%s,,,[graphviz],png}\n' % fname[:-4]) + raise nodes.SkipNode + + +def texinfo_visit_graphviz(self: TexinfoTranslator, node: graphviz) -> None: + render_dot_texinfo(self, node, node['code'], node['options']) + + +def text_visit_graphviz(self: TextTranslator, node: graphviz) -> None: + if 'alt' in node.attributes: + self.add_text(_('[graph: %s]') % node['alt']) + else: + self.add_text(_('[graph]')) + raise nodes.SkipNode + + +def man_visit_graphviz(self: ManualPageTranslator, node: graphviz) -> None: + if 'alt' in node.attributes: + self.body.append(_('[graph: %s]') % node['alt']) + else: + self.body.append(_('[graph]')) + raise nodes.SkipNode + + +def on_build_finished(app: Sphinx, exc: Exception) -> None: + if exc is None: + src = path.join(sphinx.package_dir, 'templates', 'graphviz', 'graphviz.css') + dst = path.join(app.outdir, '_static') + copy_asset(src, dst) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_node(graphviz, + html=(html_visit_graphviz, None), + latex=(latex_visit_graphviz, None), + texinfo=(texinfo_visit_graphviz, None), + text=(text_visit_graphviz, None), + man=(man_visit_graphviz, None)) + app.add_directive('graphviz', Graphviz) + app.add_directive('graph', GraphvizSimple) + app.add_directive('digraph', GraphvizSimple) + app.add_config_value('graphviz_dot', 'dot', 'html') + app.add_config_value('graphviz_dot_args', [], 'html') + app.add_config_value('graphviz_output_format', 'png', 'html') + app.add_css_file('graphviz.css') + app.connect('build-finished', on_build_finished) + return {'version': sphinx.__display_version__, 'parallel_read_safe': True} diff --git a/sphinx/sphinx/ext/ifconfig.py b/sphinx/sphinx/ext/ifconfig.py new file mode 100644 index 0000000..0e65250 --- /dev/null +++ b/sphinx/sphinx/ext/ifconfig.py @@ -0,0 +1,80 @@ +""" + sphinx.ext.ifconfig + ~~~~~~~~~~~~~~~~~~~ + + Provides the ``ifconfig`` directive that allows to write documentation + that is included depending on configuration variables. + + Usage:: + + .. ifconfig:: releaselevel in ('alpha', 'beta', 'rc') + + This stuff is only included in the built docs for unstable versions. + + The argument for ``ifconfig`` is a plain Python expression, evaluated in the + namespace of the project configuration (that is, all variables from + ``conf.py`` are available.) + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Any, Dict, List + +from docutils import nodes +from docutils.nodes import Node + +import sphinx +from sphinx.application import Sphinx +from sphinx.util.docutils import SphinxDirective +from sphinx.util.nodes import nested_parse_with_titles + + +class ifconfig(nodes.Element): + pass + + +class IfConfig(SphinxDirective): + + has_content = True + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + node = ifconfig() + node.document = self.state.document + self.set_source_info(node) + node['expr'] = self.arguments[0] + nested_parse_with_titles(self.state, self.content, node) + return [node] + + +def process_ifconfig_nodes(app: Sphinx, doctree: nodes.document, docname: str) -> None: + ns = {confval.name: confval.value for confval in app.config} + ns.update(app.config.__dict__.copy()) + ns['builder'] = app.builder.name + for node in doctree.traverse(ifconfig): + try: + res = eval(node['expr'], ns) + except Exception as err: + # handle exceptions in a clean fashion + from traceback import format_exception_only + msg = ''.join(format_exception_only(err.__class__, err)) + newnode = doctree.reporter.error('Exception occured in ' + 'ifconfig expression: \n%s' % + msg, base_node=node) + node.replace_self(newnode) + else: + if not res: + node.replace_self([]) + else: + node.replace_self(node.children) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_node(ifconfig) + app.add_directive('ifconfig', IfConfig) + app.connect('doctree-resolved', process_ifconfig_nodes) + return {'version': sphinx.__display_version__, 'parallel_read_safe': True} diff --git a/sphinx/sphinx/ext/imgconverter.py b/sphinx/sphinx/ext/imgconverter.py new file mode 100644 index 0000000..bf4b9b9 --- /dev/null +++ b/sphinx/sphinx/ext/imgconverter.py @@ -0,0 +1,94 @@ +""" + sphinx.ext.imgconverter + ~~~~~~~~~~~~~~~~~~~~~~~ + + Image converter extension for Sphinx + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import subprocess +import sys +from subprocess import CalledProcessError, PIPE +from typing import Any, Dict + +from sphinx.application import Sphinx +from sphinx.errors import ExtensionError +from sphinx.locale import __ +from sphinx.transforms.post_transforms.images import ImageConverter +from sphinx.util import logging + + +logger = logging.getLogger(__name__) + + +class ImagemagickConverter(ImageConverter): + conversion_rules = [ + ('image/svg+xml', 'image/png'), + ('image/gif', 'image/png'), + ('application/pdf', 'image/png'), + ('application/illustrator', 'image/png'), + ] + + def is_available(self) -> bool: + """Confirms the converter is available or not.""" + try: + args = [self.config.image_converter, '-version'] + logger.debug('Invoking %r ...', args) + subprocess.run(args, stdout=PIPE, stderr=PIPE, check=True) + return True + except OSError: + logger.warning(__('convert command %r cannot be run, ' + 'check the image_converter setting'), + self.config.image_converter) + return False + except CalledProcessError as exc: + logger.warning(__('convert exited with error:\n' + '[stderr]\n%r\n[stdout]\n%r'), + exc.stderr, exc.stdout) + return False + + def convert(self, _from: str, _to: str) -> bool: + """Converts the image to expected one.""" + try: + # append an index 0 to source filename to pick up the first frame + # (or first page) of image (ex. Animation GIF, PDF) + _from += '[0]' + + args = ([self.config.image_converter] + + self.config.image_converter_args + + [_from, _to]) + logger.debug('Invoking %r ...', args) + subprocess.run(args, stdout=PIPE, stderr=PIPE, check=True) + return True + except OSError: + logger.warning(__('convert command %r cannot be run, ' + 'check the image_converter setting'), + self.config.image_converter) + return False + except CalledProcessError as exc: + raise ExtensionError(__('convert exited with error:\n' + '[stderr]\n%r\n[stdout]\n%r') % + (exc.stderr, exc.stdout)) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_post_transform(ImagemagickConverter) + if sys.platform == 'win32': + # On Windows, we use Imagemagik v7 by default to avoid the trouble for + # convert.exe bundled with Windows. + app.add_config_value('image_converter', 'magick', 'env') + app.add_config_value('image_converter_args', ['convert'], 'env') + else: + # On other platform, we use Imagemagick v6 by default. Especially, + # Debian/Ubuntu are still based of v6. So we can't use "magick" command + # for these platforms. + app.add_config_value('image_converter', 'convert', 'env') + app.add_config_value('image_converter_args', [], 'env') + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/ext/imgmath.py b/sphinx/sphinx/ext/imgmath.py new file mode 100644 index 0000000..4297ad1 --- /dev/null +++ b/sphinx/sphinx/ext/imgmath.py @@ -0,0 +1,402 @@ +""" + sphinx.ext.imgmath + ~~~~~~~~~~~~~~~~~~ + + Render math in HTML via dvipng or dvisvgm. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import posixpath +import re +import shutil +import subprocess +import sys +import tempfile +from hashlib import sha1 +from os import path +from subprocess import CalledProcessError, PIPE +from typing import Any, Dict, List, Tuple + +from docutils import nodes +from docutils.nodes import Element + +import sphinx +from sphinx import package_dir +from sphinx.application import Sphinx +from sphinx.builders import Builder +from sphinx.config import Config +from sphinx.deprecation import RemovedInSphinx40Warning, deprecated_alias +from sphinx.errors import SphinxError +from sphinx.locale import _, __ +from sphinx.util import logging +from sphinx.util.math import get_node_equation_number, wrap_displaymath +from sphinx.util.osutil import ensuredir +from sphinx.util.png import read_png_depth, write_png_depth +from sphinx.util.template import LaTeXRenderer +from sphinx.writers.html import HTMLTranslator + +logger = logging.getLogger(__name__) + +templates_path = path.join(package_dir, 'templates', 'imgmath') + + +class MathExtError(SphinxError): + category = 'Math extension error' + + def __init__(self, msg: str, stderr: bytes = None, stdout: bytes = None) -> None: + if stderr: + msg += '\n[stderr]\n' + stderr.decode(sys.getdefaultencoding(), 'replace') + if stdout: + msg += '\n[stdout]\n' + stdout.decode(sys.getdefaultencoding(), 'replace') + super().__init__(msg) + + +class InvokeError(SphinxError): + """errors on invoking converters.""" + + +SUPPORT_FORMAT = ('png', 'svg') + +DOC_HEAD = r''' +\documentclass[12pt]{article} +\usepackage[utf8x]{inputenc} +\usepackage{amsmath} +\usepackage{amsthm} +\usepackage{amssymb} +\usepackage{amsfonts} +\usepackage{anyfontsize} +\usepackage{bm} +\pagestyle{empty} +''' + +DOC_BODY = r''' +\begin{document} +\fontsize{%d}{%d}\selectfont %s +\end{document} +''' + +DOC_BODY_PREVIEW = r''' +\usepackage[active]{preview} +\begin{document} +\begin{preview} +\fontsize{%s}{%s}\selectfont %s +\end{preview} +\end{document} +''' + +depth_re = re.compile(br'\[\d+ depth=(-?\d+)\]') +depthsvg_re = re.compile(br'.*, depth=(.*)pt') +depthsvgcomment_re = re.compile(r'<!-- DEPTH=(-?\d+) -->') + + +def read_svg_depth(filename: str) -> int: + """Read the depth from comment at last line of SVG file + """ + with open(filename, 'r') as f: + for line in f: + pass + # Only last line is checked + matched = depthsvgcomment_re.match(line) + if matched: + return int(matched.group(1)) + return None + + +def write_svg_depth(filename: str, depth: int) -> None: + """Write the depth to SVG file as a comment at end of file + """ + with open(filename, 'a') as f: + f.write('\n<!-- DEPTH=%s -->' % depth) + + +def generate_latex_macro(image_format: str, + math: str, config: Config, confdir: str = '') -> str: + """Generate LaTeX macro.""" + variables = { + 'fontsize': config.imgmath_font_size, + 'baselineskip': int(round(config.imgmath_font_size * 1.2)), + 'preamble': config.imgmath_latex_preamble, + 'tightpage': '' if image_format == 'png' else ',tightpage', + 'math': math + } + + if config.imgmath_use_preview: + template_name = 'preview.tex_t' + else: + template_name = 'template.tex_t' + + for template_dir in config.templates_path: + template = path.join(confdir, template_dir, template_name) + if path.exists(template): + return LaTeXRenderer().render(template, variables) + + return LaTeXRenderer(templates_path).render(template_name, variables) + + +def ensure_tempdir(builder: Builder) -> str: + """Create temporary directory. + + use only one tempdir per build -- the use of a directory is cleaner + than using temporary files, since we can clean up everything at once + just removing the whole directory (see cleanup_tempdir) + """ + if not hasattr(builder, '_imgmath_tempdir'): + builder._imgmath_tempdir = tempfile.mkdtemp() # type: ignore + + return builder._imgmath_tempdir # type: ignore + + +def compile_math(latex: str, builder: Builder) -> str: + """Compile LaTeX macros for math to DVI.""" + tempdir = ensure_tempdir(builder) + filename = path.join(tempdir, 'math.tex') + with open(filename, 'w', encoding='utf-8') as f: + f.write(latex) + + # build latex command; old versions of latex don't have the + # --output-directory option, so we have to manually chdir to the + # temp dir to run it. + command = [builder.config.imgmath_latex, '--interaction=nonstopmode'] + # add custom args from the config file + command.extend(builder.config.imgmath_latex_args) + command.append('math.tex') + + try: + subprocess.run(command, stdout=PIPE, stderr=PIPE, cwd=tempdir, check=True) + return path.join(tempdir, 'math.dvi') + except OSError: + logger.warning(__('LaTeX command %r cannot be run (needed for math ' + 'display), check the imgmath_latex setting'), + builder.config.imgmath_latex) + raise InvokeError + except CalledProcessError as exc: + raise MathExtError('latex exited with error', exc.stderr, exc.stdout) + + +def convert_dvi_to_image(command: List[str], name: str) -> Tuple[bytes, bytes]: + """Convert DVI file to specific image format.""" + try: + ret = subprocess.run(command, stdout=PIPE, stderr=PIPE, check=True) + return ret.stdout, ret.stderr + except OSError: + logger.warning(__('%s command %r cannot be run (needed for math ' + 'display), check the imgmath_%s setting'), + name, command[0], name) + raise InvokeError + except CalledProcessError as exc: + raise MathExtError('%s exited with error' % name, exc.stderr, exc.stdout) + + +def convert_dvi_to_png(dvipath: str, builder: Builder) -> Tuple[str, int]: + """Convert DVI file to PNG image.""" + tempdir = ensure_tempdir(builder) + filename = path.join(tempdir, 'math.png') + + name = 'dvipng' + command = [builder.config.imgmath_dvipng, '-o', filename, '-T', 'tight', '-z9'] + command.extend(builder.config.imgmath_dvipng_args) + if builder.config.imgmath_use_preview: + command.append('--depth') + command.append(dvipath) + + stdout, stderr = convert_dvi_to_image(command, name) + + depth = None + if builder.config.imgmath_use_preview: + for line in stdout.splitlines(): + matched = depth_re.match(line) + if matched: + depth = int(matched.group(1)) + write_png_depth(filename, depth) + break + + return filename, depth + + +def convert_dvi_to_svg(dvipath: str, builder: Builder) -> Tuple[str, int]: + """Convert DVI file to SVG image.""" + tempdir = ensure_tempdir(builder) + filename = path.join(tempdir, 'math.svg') + + name = 'dvisvgm' + command = [builder.config.imgmath_dvisvgm, '-o', filename] + command.extend(builder.config.imgmath_dvisvgm_args) + command.append(dvipath) + + stdout, stderr = convert_dvi_to_image(command, name) + + depth = None + if builder.config.imgmath_use_preview: + for line in stderr.splitlines(): # not stdout ! + matched = depthsvg_re.match(line) + if matched: + depth = round(float(matched.group(1)) * 100 / 72.27) # assume 100ppi + write_svg_depth(filename, depth) + break + + return filename, depth + + +def render_math(self: HTMLTranslator, math: str) -> Tuple[str, int]: + """Render the LaTeX math expression *math* using latex and dvipng or + dvisvgm. + + Return the filename relative to the built document and the "depth", + that is, the distance of image bottom and baseline in pixels, if the + option to use preview_latex is switched on. + + Error handling may seem strange, but follows a pattern: if LaTeX or dvipng + (dvisvgm) aren't available, only a warning is generated (since that enables + people on machines without these programs to at least build the rest of the + docs successfully). If the programs are there, however, they may not fail + since that indicates a problem in the math source. + """ + image_format = self.builder.config.imgmath_image_format.lower() + if image_format not in SUPPORT_FORMAT: + raise MathExtError('imgmath_image_format must be either "png" or "svg"') + + latex = generate_latex_macro(image_format, + math, + self.builder.config, + self.builder.confdir) + + filename = "%s.%s" % (sha1(latex.encode()).hexdigest(), image_format) + relfn = posixpath.join(self.builder.imgpath, 'math', filename) + outfn = path.join(self.builder.outdir, self.builder.imagedir, 'math', filename) + if path.isfile(outfn): + if image_format == 'png': + depth = read_png_depth(outfn) + elif image_format == 'svg': + depth = read_svg_depth(outfn) + return relfn, depth + + # if latex or dvipng (dvisvgm) has failed once, don't bother to try again + if hasattr(self.builder, '_imgmath_warned_latex') or \ + hasattr(self.builder, '_imgmath_warned_image_translator'): + return None, None + + # .tex -> .dvi + try: + dvipath = compile_math(latex, self.builder) + except InvokeError: + self.builder._imgmath_warned_latex = True # type: ignore + return None, None + + # .dvi -> .png/.svg + try: + if image_format == 'png': + imgpath, depth = convert_dvi_to_png(dvipath, self.builder) + elif image_format == 'svg': + imgpath, depth = convert_dvi_to_svg(dvipath, self.builder) + except InvokeError: + self.builder._imgmath_warned_image_translator = True # type: ignore + return None, None + + # Move generated image on tempdir to build dir + ensuredir(path.dirname(outfn)) + shutil.move(imgpath, outfn) + + return relfn, depth + + +def cleanup_tempdir(app: Sphinx, exc: Exception) -> None: + if exc: + return + if not hasattr(app.builder, '_imgmath_tempdir'): + return + try: + shutil.rmtree(app.builder._mathpng_tempdir) # type: ignore + except Exception: + pass + + +def get_tooltip(self: HTMLTranslator, node: Element) -> str: + if self.builder.config.imgmath_add_tooltips: + return ' alt="%s"' % self.encode(node.astext()).strip() + return '' + + +def html_visit_math(self: HTMLTranslator, node: nodes.math) -> None: + try: + fname, depth = render_math(self, '$' + node.astext() + '$') + except MathExtError as exc: + msg = str(exc) + sm = nodes.system_message(msg, type='WARNING', level=2, + backrefs=[], source=node.astext()) + sm.walkabout(self) + logger.warning(__('display latex %r: %s'), node.astext(), msg) + raise nodes.SkipNode + if fname is None: + # something failed -- use text-only as a bad substitute + self.body.append('<span class="math">%s</span>' % + self.encode(node.astext()).strip()) + else: + c = ('<img class="math" src="%s"' % fname) + get_tooltip(self, node) + if depth is not None: + c += ' style="vertical-align: %dpx"' % (-depth) + self.body.append(c + '/>') + raise nodes.SkipNode + + +def html_visit_displaymath(self: HTMLTranslator, node: nodes.math_block) -> None: + if node['nowrap']: + latex = node.astext() + else: + latex = wrap_displaymath(node.astext(), None, False) + try: + fname, depth = render_math(self, latex) + except MathExtError as exc: + msg = str(exc) + sm = nodes.system_message(msg, type='WARNING', level=2, + backrefs=[], source=node.astext()) + sm.walkabout(self) + logger.warning(__('inline latex %r: %s'), node.astext(), msg) + raise nodes.SkipNode + self.body.append(self.starttag(node, 'div', CLASS='math')) + self.body.append('<p>') + if node['number']: + number = get_node_equation_number(self, node) + self.body.append('<span class="eqno">(%s)' % number) + self.add_permalink_ref(node, _('Permalink to this equation')) + self.body.append('</span>') + if fname is None: + # something failed -- use text-only as a bad substitute + self.body.append('<span class="math">%s</span></p>\n</div>' % + self.encode(node.astext()).strip()) + else: + self.body.append(('<img src="%s"' % fname) + get_tooltip(self, node) + + '/></p>\n</div>') + raise nodes.SkipNode + + +deprecated_alias('sphinx.ext.imgmath', + { + 'DOC_BODY': DOC_BODY, + 'DOC_BODY_PREVIEW': DOC_BODY_PREVIEW, + 'DOC_HEAD': DOC_HEAD, + }, + RemovedInSphinx40Warning) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_html_math_renderer('imgmath', + (html_visit_math, None), + (html_visit_displaymath, None)) + + app.add_config_value('imgmath_image_format', 'png', 'html') + app.add_config_value('imgmath_dvipng', 'dvipng', 'html') + app.add_config_value('imgmath_dvisvgm', 'dvisvgm', 'html') + app.add_config_value('imgmath_latex', 'latex', 'html') + app.add_config_value('imgmath_use_preview', False, 'html') + app.add_config_value('imgmath_dvipng_args', + ['-gamma', '1.5', '-D', '110', '-bg', 'Transparent'], + 'html') + app.add_config_value('imgmath_dvisvgm_args', ['--no-fonts'], 'html') + app.add_config_value('imgmath_latex_args', [], 'html') + app.add_config_value('imgmath_latex_preamble', '', 'html') + app.add_config_value('imgmath_add_tooltips', True, 'html') + app.add_config_value('imgmath_font_size', 12, 'html') + app.connect('build-finished', cleanup_tempdir) + return {'version': sphinx.__display_version__, 'parallel_read_safe': True} diff --git a/sphinx/sphinx/ext/inheritance_diagram.py b/sphinx/sphinx/ext/inheritance_diagram.py new file mode 100644 index 0000000..db2a15b --- /dev/null +++ b/sphinx/sphinx/ext/inheritance_diagram.py @@ -0,0 +1,475 @@ +r""" + sphinx.ext.inheritance_diagram + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Defines a docutils directive for inserting inheritance diagrams. + + Provide the directive with one or more classes or modules (separated + by whitespace). For modules, all of the classes in that module will + be used. + + Example:: + + Given the following classes: + + class A: pass + class B(A): pass + class C(A): pass + class D(B, C): pass + class E(B): pass + + .. inheritance-diagram: D E + + Produces a graph like the following: + + A + / \ + B C + / \ / + E D + + The graph is inserted as a PNG+image map into HTML and a PDF in + LaTeX. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import builtins +import inspect +import re +from hashlib import md5 +from importlib import import_module +from typing import Any, Dict, Iterable, List, Tuple +from typing import cast + +from docutils import nodes +from docutils.nodes import Node +from docutils.parsers.rst import directives + +import sphinx +from sphinx import addnodes +from sphinx.application import Sphinx +from sphinx.environment import BuildEnvironment +from sphinx.ext.graphviz import ( + graphviz, figure_wrapper, + render_dot_html, render_dot_latex, render_dot_texinfo +) +from sphinx.util.docutils import SphinxDirective +from sphinx.writers.html import HTMLTranslator +from sphinx.writers.latex import LaTeXTranslator +from sphinx.writers.texinfo import TexinfoTranslator + + +module_sig_re = re.compile(r'''^(?:([\w.]*)\.)? # module names + (\w+) \s* $ # class/final module name + ''', re.VERBOSE) + + +def try_import(objname: str) -> Any: + """Import a object or module using *name* and *currentmodule*. + *name* should be a relative name from *currentmodule* or + a fully-qualified name. + + Returns imported object or module. If failed, returns None value. + """ + try: + return import_module(objname) + except TypeError: + # Relative import + return None + except ImportError: + matched = module_sig_re.match(objname) + + if not matched: + return None + + modname, attrname = matched.groups() + + if modname is None: + return None + try: + module = import_module(modname) + return getattr(module, attrname, None) + except ImportError: + return None + + +def import_classes(name: str, currmodule: str) -> Any: + """Import a class using its fully-qualified *name*.""" + target = None + + # import class or module using currmodule + if currmodule: + target = try_import(currmodule + '.' + name) + + # import class or module without currmodule + if target is None: + target = try_import(name) + + if target is None: + raise InheritanceException( + 'Could not import class or module %r specified for ' + 'inheritance diagram' % name) + + if inspect.isclass(target): + # If imported object is a class, just return it + return [target] + elif inspect.ismodule(target): + # If imported object is a module, return classes defined on it + classes = [] + for cls in target.__dict__.values(): + if inspect.isclass(cls) and cls.__module__ == target.__name__: + classes.append(cls) + return classes + raise InheritanceException('%r specified for inheritance diagram is ' + 'not a class or module' % name) + + +class InheritanceException(Exception): + pass + + +class InheritanceGraph: + """ + Given a list of classes, determines the set of classes that they inherit + from all the way to the root "object", and then is able to generate a + graphviz dot graph from them. + """ + def __init__(self, class_names: List[str], currmodule: str, show_builtins: bool = False, + private_bases: bool = False, parts: int = 0, aliases: Dict[str, str] = None, + top_classes: List[Any] = []) -> None: + """*class_names* is a list of child classes to show bases from. + + If *show_builtins* is True, then Python builtins will be shown + in the graph. + """ + self.class_names = class_names + classes = self._import_classes(class_names, currmodule) + self.class_info = self._class_info(classes, show_builtins, + private_bases, parts, aliases, top_classes) + if not self.class_info: + raise InheritanceException('No classes found for ' + 'inheritance diagram') + + def _import_classes(self, class_names: List[str], currmodule: str) -> List[Any]: + """Import a list of classes.""" + classes = [] # type: List[Any] + for name in class_names: + classes.extend(import_classes(name, currmodule)) + return classes + + def _class_info(self, classes: List[Any], show_builtins: bool, private_bases: bool, + parts: int, aliases: Dict[str, str], top_classes: List[Any] + ) -> List[Tuple[str, str, List[str], str]]: + """Return name and bases for all classes that are ancestors of + *classes*. + + *parts* gives the number of dotted name parts to include in the + displayed node names, from right to left. If given as a negative, the + number of parts to drop from the left. A value of 0 displays the full + dotted name. E.g. ``sphinx.ext.inheritance_diagram.InheritanceGraph`` + with ``parts=2`` or ``parts=-2`` gets displayed as + ``inheritance_diagram.InheritanceGraph``, and as + ``ext.inheritance_diagram.InheritanceGraph`` with ``parts=3`` or + ``parts=-1``. + + *top_classes* gives the name(s) of the top most ancestor class to + traverse to. Multiple names can be specified separated by comma. + """ + all_classes = {} + py_builtins = vars(builtins).values() + + def recurse(cls: Any) -> None: + if not show_builtins and cls in py_builtins: + return + if not private_bases and cls.__name__.startswith('_'): + return + + nodename = self.class_name(cls, parts, aliases) + fullname = self.class_name(cls, 0, aliases) + + # Use first line of docstring as tooltip, if available + tooltip = None + try: + if cls.__doc__: + doc = cls.__doc__.strip().split("\n")[0] + if doc: + tooltip = '"%s"' % doc.replace('"', '\\"') + except Exception: # might raise AttributeError for strange classes + pass + + baselist = [] # type: List[str] + all_classes[cls] = (nodename, fullname, baselist, tooltip) + + if fullname in top_classes: + return + + for base in cls.__bases__: + if not show_builtins and base in py_builtins: + continue + if not private_bases and base.__name__.startswith('_'): + continue + baselist.append(self.class_name(base, parts, aliases)) + if base not in all_classes: + recurse(base) + + for cls in classes: + recurse(cls) + + return list(all_classes.values()) + + def class_name(self, cls: Any, parts: int = 0, aliases: Dict[str, str] = None) -> str: + """Given a class object, return a fully-qualified name. + + This works for things I've tested in matplotlib so far, but may not be + completely general. + """ + module = cls.__module__ + if module in ('__builtin__', 'builtins'): + fullname = cls.__name__ + else: + fullname = '%s.%s' % (module, cls.__qualname__) + if parts == 0: + result = fullname + else: + name_parts = fullname.split('.') + result = '.'.join(name_parts[-parts:]) + if aliases is not None and result in aliases: + return aliases[result] + return result + + def get_all_class_names(self) -> List[str]: + """Get all of the class names involved in the graph.""" + return [fullname for (_, fullname, _, _) in self.class_info] + + # These are the default attrs for graphviz + default_graph_attrs = { + 'rankdir': 'LR', + 'size': '"8.0, 12.0"', + 'bgcolor': 'transparent', + } + default_node_attrs = { + 'shape': 'box', + 'fontsize': 10, + 'height': 0.25, + 'fontname': '"Vera Sans, DejaVu Sans, Liberation Sans, ' + 'Arial, Helvetica, sans"', + 'style': '"setlinewidth(0.5),filled"', + 'fillcolor': 'white', + } + default_edge_attrs = { + 'arrowsize': 0.5, + 'style': '"setlinewidth(0.5)"', + } + + def _format_node_attrs(self, attrs: Dict) -> str: + return ','.join(['%s=%s' % x for x in sorted(attrs.items())]) + + def _format_graph_attrs(self, attrs: Dict) -> str: + return ''.join(['%s=%s;\n' % x for x in sorted(attrs.items())]) + + def generate_dot(self, name: str, urls: Dict = {}, env: BuildEnvironment = None, + graph_attrs: Dict = {}, node_attrs: Dict = {}, edge_attrs: Dict = {} + ) -> str: + """Generate a graphviz dot graph from the classes that were passed in + to __init__. + + *name* is the name of the graph. + + *urls* is a dictionary mapping class names to HTTP URLs. + + *graph_attrs*, *node_attrs*, *edge_attrs* are dictionaries containing + key/value pairs to pass on as graphviz properties. + """ + g_attrs = self.default_graph_attrs.copy() + n_attrs = self.default_node_attrs.copy() + e_attrs = self.default_edge_attrs.copy() + g_attrs.update(graph_attrs) + n_attrs.update(node_attrs) + e_attrs.update(edge_attrs) + if env: + g_attrs.update(env.config.inheritance_graph_attrs) + n_attrs.update(env.config.inheritance_node_attrs) + e_attrs.update(env.config.inheritance_edge_attrs) + + res = [] # type: List[str] + res.append('digraph %s {\n' % name) + res.append(self._format_graph_attrs(g_attrs)) + + for name, fullname, bases, tooltip in sorted(self.class_info): + # Write the node + this_node_attrs = n_attrs.copy() + if fullname in urls: + this_node_attrs['URL'] = '"%s"' % urls[fullname] + this_node_attrs['target'] = '"_top"' + if tooltip: + this_node_attrs['tooltip'] = tooltip + res.append(' "%s" [%s];\n' % + (name, self._format_node_attrs(this_node_attrs))) + + # Write the edges + for base_name in bases: + res.append(' "%s" -> "%s" [%s];\n' % + (base_name, name, + self._format_node_attrs(e_attrs))) + res.append('}\n') + return ''.join(res) + + +class inheritance_diagram(graphviz): + """ + A docutils node to use as a placeholder for the inheritance diagram. + """ + pass + + +class InheritanceDiagram(SphinxDirective): + """ + Run when the inheritance_diagram directive is first encountered. + """ + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = { + 'parts': int, + 'private-bases': directives.flag, + 'caption': directives.unchanged, + 'top-classes': directives.unchanged_required, + } + + def run(self) -> List[Node]: + node = inheritance_diagram() + node.document = self.state.document + class_names = self.arguments[0].split() + class_role = self.env.get_domain('py').role('class') + # Store the original content for use as a hash + node['parts'] = self.options.get('parts', 0) + node['content'] = ', '.join(class_names) + node['top-classes'] = [] + for cls in self.options.get('top-classes', '').split(','): + cls = cls.strip() + if cls: + node['top-classes'].append(cls) + + # Create a graph starting with the list of classes + try: + graph = InheritanceGraph( + class_names, self.env.ref_context.get('py:module'), + parts=node['parts'], + private_bases='private-bases' in self.options, + aliases=self.config.inheritance_alias, + top_classes=node['top-classes']) + except InheritanceException as err: + return [node.document.reporter.warning(err, line=self.lineno)] + + # Create xref nodes for each target of the graph's image map and + # add them to the doc tree so that Sphinx can resolve the + # references to real URLs later. These nodes will eventually be + # removed from the doctree after we're done with them. + for name in graph.get_all_class_names(): + refnodes, x = class_role( # type: ignore + 'class', ':class:`%s`' % name, name, 0, self.state) # type: ignore + node.extend(refnodes) + # Store the graph object so we can use it to generate the + # dot file later + node['graph'] = graph + + if 'caption' not in self.options: + self.add_name(node) + return [node] + else: + figure = figure_wrapper(self, node, self.options['caption']) + self.add_name(figure) + return [figure] + + +def get_graph_hash(node: inheritance_diagram) -> str: + encoded = (node['content'] + str(node['parts'])).encode() + return md5(encoded).hexdigest()[-10:] + + +def html_visit_inheritance_diagram(self: HTMLTranslator, node: inheritance_diagram) -> None: + """ + Output the graph for HTML. This will insert a PNG with clickable + image map. + """ + graph = node['graph'] + + graph_hash = get_graph_hash(node) + name = 'inheritance%s' % graph_hash + + # Create a mapping from fully-qualified class names to URLs. + graphviz_output_format = self.builder.env.config.graphviz_output_format.upper() + current_filename = self.builder.current_docname + self.builder.out_suffix + urls = {} + pending_xrefs = cast(Iterable[addnodes.pending_xref], node) + for child in pending_xrefs: + if child.get('refuri') is not None: + if graphviz_output_format == 'SVG': + urls[child['reftitle']] = "../" + child.get('refuri') + else: + urls[child['reftitle']] = child.get('refuri') + elif child.get('refid') is not None: + if graphviz_output_format == 'SVG': + urls[child['reftitle']] = '../' + current_filename + '#' + child.get('refid') + else: + urls[child['reftitle']] = '#' + child.get('refid') + + dotcode = graph.generate_dot(name, urls, env=self.builder.env) + render_dot_html(self, node, dotcode, {}, 'inheritance', 'inheritance', + alt='Inheritance diagram of ' + node['content']) + raise nodes.SkipNode + + +def latex_visit_inheritance_diagram(self: LaTeXTranslator, node: inheritance_diagram) -> None: + """ + Output the graph for LaTeX. This will insert a PDF. + """ + graph = node['graph'] + + graph_hash = get_graph_hash(node) + name = 'inheritance%s' % graph_hash + + dotcode = graph.generate_dot(name, env=self.builder.env, + graph_attrs={'size': '"6.0,6.0"'}) + render_dot_latex(self, node, dotcode, {}, 'inheritance') + raise nodes.SkipNode + + +def texinfo_visit_inheritance_diagram(self: TexinfoTranslator, node: inheritance_diagram + ) -> None: + """ + Output the graph for Texinfo. This will insert a PNG. + """ + graph = node['graph'] + + graph_hash = get_graph_hash(node) + name = 'inheritance%s' % graph_hash + + dotcode = graph.generate_dot(name, env=self.builder.env, + graph_attrs={'size': '"6.0,6.0"'}) + render_dot_texinfo(self, node, dotcode, {}, 'inheritance') + raise nodes.SkipNode + + +def skip(self: nodes.NodeVisitor, node: inheritance_diagram) -> None: + raise nodes.SkipNode + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.setup_extension('sphinx.ext.graphviz') + app.add_node( + inheritance_diagram, + latex=(latex_visit_inheritance_diagram, None), + html=(html_visit_inheritance_diagram, None), + text=(skip, None), + man=(skip, None), + texinfo=(texinfo_visit_inheritance_diagram, None)) + app.add_directive('inheritance-diagram', InheritanceDiagram) + app.add_config_value('inheritance_graph_attrs', {}, False) + app.add_config_value('inheritance_node_attrs', {}, False) + app.add_config_value('inheritance_edge_attrs', {}, False) + app.add_config_value('inheritance_alias', {}, False) + return {'version': sphinx.__display_version__, 'parallel_read_safe': True} diff --git a/sphinx/sphinx/ext/intersphinx.py b/sphinx/sphinx/ext/intersphinx.py new file mode 100644 index 0000000..02f605b --- /dev/null +++ b/sphinx/sphinx/ext/intersphinx.py @@ -0,0 +1,419 @@ +""" + sphinx.ext.intersphinx + ~~~~~~~~~~~~~~~~~~~~~~ + + Insert links to objects documented in remote Sphinx documentation. + + This works as follows: + + * Each Sphinx HTML build creates a file named "objects.inv" that contains a + mapping from object names to URIs relative to the HTML set's root. + + * Projects using the Intersphinx extension can specify links to such mapping + files in the `intersphinx_mapping` config value. The mapping will then be + used to resolve otherwise missing references to objects into links to the + other documentation. + + * By default, the mapping file is assumed to be at the same location as the + rest of the documentation; however, the location of the mapping file can + also be specified individually, e.g. if the docs should be buildable + without Internet access. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import concurrent.futures +import functools +import posixpath +import sys +import time +from os import path +from typing import Any, Dict, IO, List, Tuple +from urllib.parse import urlsplit, urlunsplit + +from docutils import nodes +from docutils.nodes import Element, TextElement +from docutils.utils import relative_path + +import sphinx +from sphinx.application import Sphinx +from sphinx.builders.html import INVENTORY_FILENAME +from sphinx.config import Config +from sphinx.environment import BuildEnvironment +from sphinx.locale import _, __ +from sphinx.util import requests, logging +from sphinx.util.inventory import InventoryFile +from sphinx.util.typing import Inventory + + +logger = logging.getLogger(__name__) + + +class InventoryAdapter: + """Inventory adapter for environment""" + + def __init__(self, env: BuildEnvironment) -> None: + self.env = env + + if not hasattr(env, 'intersphinx_cache'): + self.env.intersphinx_cache = {} # type: ignore + self.env.intersphinx_inventory = {} # type: ignore + self.env.intersphinx_named_inventory = {} # type: ignore + + @property + def cache(self) -> Dict[str, Tuple[str, int, Inventory]]: + return self.env.intersphinx_cache # type: ignore + + @property + def main_inventory(self) -> Inventory: + return self.env.intersphinx_inventory # type: ignore + + @property + def named_inventory(self) -> Dict[str, Inventory]: + return self.env.intersphinx_named_inventory # type: ignore + + def clear(self) -> None: + self.env.intersphinx_inventory.clear() # type: ignore + self.env.intersphinx_named_inventory.clear() # type: ignore + + +def _strip_basic_auth(url: str) -> str: + """Returns *url* with basic auth credentials removed. Also returns the + basic auth username and password if they're present in *url*. + + E.g.: https://user:pass@example.com => https://example.com + + *url* need not include basic auth credentials. + + :param url: url which may or may not contain basic auth credentials + :type url: ``str`` + + :return: *url* with any basic auth creds removed + :rtype: ``str`` + """ + frags = list(urlsplit(url)) + # swap out "user[:pass]@hostname" for "hostname" + if '@' in frags[1]: + frags[1] = frags[1].split('@')[1] + return urlunsplit(frags) + + +def _read_from_url(url: str, config: Config = None) -> IO: + """Reads data from *url* with an HTTP *GET*. + + This function supports fetching from resources which use basic HTTP auth as + laid out by RFC1738 § 3.1. See § 5 for grammar definitions for URLs. + + .. seealso: + + https://www.ietf.org/rfc/rfc1738.txt + + :param url: URL of an HTTP resource + :type url: ``str`` + + :return: data read from resource described by *url* + :rtype: ``file``-like object + """ + r = requests.get(url, stream=True, config=config, timeout=config.intersphinx_timeout) + r.raise_for_status() + r.raw.url = r.url + # decode content-body based on the header. + # ref: https://github.com/kennethreitz/requests/issues/2155 + r.raw.read = functools.partial(r.raw.read, decode_content=True) + return r.raw + + +def _get_safe_url(url: str) -> str: + """Gets version of *url* with basic auth passwords obscured. This function + returns results suitable for printing and logging. + + E.g.: https://user:12345@example.com => https://user@example.com + + :param url: a url + :type url: ``str`` + + :return: *url* with password removed + :rtype: ``str`` + """ + parts = urlsplit(url) + if parts.username is None: + return url + else: + frags = list(parts) + if parts.port: + frags[1] = '{}@{}:{}'.format(parts.username, parts.hostname, parts.port) + else: + frags[1] = '{}@{}'.format(parts.username, parts.hostname) + + return urlunsplit(frags) + + +def fetch_inventory(app: Sphinx, uri: str, inv: Any) -> Any: + """Fetch, parse and return an intersphinx inventory file.""" + # both *uri* (base URI of the links to generate) and *inv* (actual + # location of the inventory file) can be local or remote URIs + localuri = '://' not in uri + if not localuri: + # case: inv URI points to remote resource; strip any existing auth + uri = _strip_basic_auth(uri) + try: + if '://' in inv: + f = _read_from_url(inv, config=app.config) + else: + f = open(path.join(app.srcdir, inv), 'rb') + except Exception as err: + err.args = ('intersphinx inventory %r not fetchable due to %s: %s', + inv, err.__class__, str(err)) + raise + try: + if hasattr(f, 'url'): + newinv = f.url # type: ignore + if inv != newinv: + logger.info(__('intersphinx inventory has moved: %s -> %s'), inv, newinv) + + if uri in (inv, path.dirname(inv), path.dirname(inv) + '/'): + uri = path.dirname(newinv) + with f: + try: + join = path.join if localuri else posixpath.join + invdata = InventoryFile.load(f, uri, join) + except ValueError as exc: + raise ValueError('unknown or unsupported inventory version: %r' % exc) + except Exception as err: + err.args = ('intersphinx inventory %r not readable due to %s: %s', + inv, err.__class__.__name__, str(err)) + raise + else: + return invdata + + +def fetch_inventory_group( + name: str, uri: str, invs: Any, cache: Any, app: Any, now: float +) -> bool: + cache_time = now - app.config.intersphinx_cache_limit * 86400 + failures = [] + try: + for inv in invs: + if not inv: + inv = posixpath.join(uri, INVENTORY_FILENAME) + # decide whether the inventory must be read: always read local + # files; remote ones only if the cache time is expired + if '://' not in inv or uri not in cache or cache[uri][1] < cache_time: + safe_inv_url = _get_safe_url(inv) + logger.info(__('loading intersphinx inventory from %s...'), safe_inv_url) + try: + invdata = fetch_inventory(app, uri, inv) + except Exception as err: + failures.append(err.args) + continue + if invdata: + cache[uri] = (name, now, invdata) + return True + return False + finally: + if failures == []: + pass + elif len(failures) < len(invs): + logger.info(__("encountered some issues with some of the inventories," + " but they had working alternatives:")) + for fail in failures: + logger.info(*fail) + else: + issues = '\n'.join([f[0] % f[1:] for f in failures]) + logger.warning(__("failed to reach any of the inventories " + "with the following issues:") + "\n" + issues) + + +def load_mappings(app: Sphinx) -> None: + """Load all intersphinx mappings into the environment.""" + now = int(time.time()) + inventories = InventoryAdapter(app.builder.env) + + with concurrent.futures.ThreadPoolExecutor() as pool: + futures = [] + for name, (uri, invs) in app.config.intersphinx_mapping.values(): + futures.append(pool.submit( + fetch_inventory_group, name, uri, invs, inventories.cache, app, now + )) + updated = [f.result() for f in concurrent.futures.as_completed(futures)] + + if any(updated): + inventories.clear() + + # Duplicate values in different inventories will shadow each + # other; which one will override which can vary between builds + # since they are specified using an unordered dict. To make + # it more consistent, we sort the named inventories and then + # add the unnamed inventories last. This means that the + # unnamed inventories will shadow the named ones but the named + # ones can still be accessed when the name is specified. + cached_vals = list(inventories.cache.values()) + named_vals = sorted(v for v in cached_vals if v[0]) + unnamed_vals = [v for v in cached_vals if not v[0]] + for name, _x, invdata in named_vals + unnamed_vals: + if name: + inventories.named_inventory[name] = invdata + for type, objects in invdata.items(): + inventories.main_inventory.setdefault(type, {}).update(objects) + + +def missing_reference(app: Sphinx, env: BuildEnvironment, node: Element, contnode: TextElement + ) -> nodes.reference: + """Attempt to resolve a missing reference via intersphinx references.""" + target = node['reftarget'] + inventories = InventoryAdapter(env) + objtypes = None # type: List[str] + if node['reftype'] == 'any': + # we search anything! + objtypes = ['%s:%s' % (domain.name, objtype) + for domain in env.domains.values() + for objtype in domain.object_types] + domain = None + else: + domain = node.get('refdomain') + if not domain: + # only objects in domains are in the inventory + return None + objtypes = env.get_domain(domain).objtypes_for_role(node['reftype']) + if not objtypes: + return None + objtypes = ['%s:%s' % (domain, objtype) for objtype in objtypes] + if 'std:cmdoption' in objtypes: + # until Sphinx-1.6, cmdoptions are stored as std:option + objtypes.append('std:option') + if 'py:attribute' in objtypes: + # Since Sphinx-2.1, properties are stored as py:method + objtypes.append('py:method') + to_try = [(inventories.main_inventory, target)] + if domain: + full_qualified_name = env.get_domain(domain).get_full_qualified_name(node) + if full_qualified_name: + to_try.append((inventories.main_inventory, full_qualified_name)) + in_set = None + if ':' in target: + # first part may be the foreign doc set name + setname, newtarget = target.split(':', 1) + if setname in inventories.named_inventory: + in_set = setname + to_try.append((inventories.named_inventory[setname], newtarget)) + if domain: + node['reftarget'] = newtarget + full_qualified_name = env.get_domain(domain).get_full_qualified_name(node) + if full_qualified_name: + to_try.append((inventories.named_inventory[setname], full_qualified_name)) + for inventory, target in to_try: + for objtype in objtypes: + if objtype not in inventory or target not in inventory[objtype]: + continue + proj, version, uri, dispname = inventory[objtype][target] + if '://' not in uri and node.get('refdoc'): + # get correct path in case of subdirectories + uri = path.join(relative_path(node['refdoc'], '.'), uri) + if version: + reftitle = _('(in %s v%s)') % (proj, version) + else: + reftitle = _('(in %s)') % (proj,) + newnode = nodes.reference('', '', internal=False, refuri=uri, reftitle=reftitle) + if node.get('refexplicit'): + # use whatever title was given + newnode.append(contnode) + elif dispname == '-' or \ + (domain == 'std' and node['reftype'] == 'keyword'): + # use whatever title was given, but strip prefix + title = contnode.astext() + if in_set and title.startswith(in_set + ':'): + newnode.append(contnode.__class__(title[len(in_set) + 1:], + title[len(in_set) + 1:])) + else: + newnode.append(contnode) + else: + # else use the given display name (used for :ref:) + newnode.append(contnode.__class__(dispname, dispname)) + return newnode + # at least get rid of the ':' in the target if no explicit title given + if in_set is not None and not node.get('refexplicit', True): + if len(contnode) and isinstance(contnode[0], nodes.Text): + contnode[0] = nodes.Text(newtarget, contnode[0].rawsource) + + return None + + +def normalize_intersphinx_mapping(app: Sphinx, config: Config) -> None: + for key, value in config.intersphinx_mapping.copy().items(): + try: + if isinstance(value, (list, tuple)): + # new format + name, (uri, inv) = key, value + if not isinstance(name, str): + logger.warning(__('intersphinx identifier %r is not string. Ignored'), + name) + config.intersphinx_mapping.pop(key) + continue + else: + # old format, no name + name, uri, inv = None, key, value + + if not isinstance(inv, tuple): + config.intersphinx_mapping[key] = (name, (uri, (inv,))) + else: + config.intersphinx_mapping[key] = (name, (uri, inv)) + except Exception as exc: + logger.warning(__('Failed to read intersphinx_mapping[%s], ignored: %r'), key, exc) + config.intersphinx_mapping.pop(key) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_config_value('intersphinx_mapping', {}, True) + app.add_config_value('intersphinx_cache_limit', 5, False) + app.add_config_value('intersphinx_timeout', None, False) + app.connect('config-inited', normalize_intersphinx_mapping, priority=800) + app.connect('builder-inited', load_mappings) + app.connect('missing-reference', missing_reference) + return { + 'version': sphinx.__display_version__, + 'env_version': 1, + 'parallel_read_safe': True + } + + +def inspect_main(argv: List[str]) -> None: + """Debug functionality to print out an inventory""" + if len(argv) < 1: + print("Print out an inventory file.\n" + "Error: must specify local path or URL to an inventory file.", + file=sys.stderr) + sys.exit(1) + + class MockConfig: + intersphinx_timeout = None # type: int + tls_verify = False + user_agent = None + + class MockApp: + srcdir = '' + config = MockConfig() + + def warn(self, msg: str) -> None: + print(msg, file=sys.stderr) + + try: + filename = argv[0] + invdata = fetch_inventory(MockApp(), '', filename) # type: ignore + for key in sorted(invdata or {}): + print(key) + for entry, einfo in sorted(invdata[key].items()): + print('\t%-40s %s%s' % (entry, + '%-40s: ' % einfo[3] if einfo[3] != '-' else '', + einfo[2])) + except ValueError as exc: + print(exc.args[0] % exc.args[1:]) + except Exception as exc: + print('Unknown error: %r' % exc) + + +if __name__ == '__main__': + import logging as _logging + _logging.basicConfig() + + inspect_main(argv=sys.argv[1:]) diff --git a/sphinx/sphinx/ext/jsmath.py b/sphinx/sphinx/ext/jsmath.py new file mode 100644 index 0000000..75369a5 --- /dev/null +++ b/sphinx/sphinx/ext/jsmath.py @@ -0,0 +1,36 @@ +""" + sphinx.ext.jsmath + ~~~~~~~~~~~~~~~~~ + + Set up everything for use of JSMath to display math in HTML + via JavaScript. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import warnings +from typing import Any, Dict + +from sphinxcontrib.jsmath import ( # NOQA + html_visit_math, + html_visit_displaymath, + install_jsmath, +) + +import sphinx +from sphinx.application import Sphinx +from sphinx.deprecation import RemovedInSphinx40Warning + + +def setup(app: Sphinx) -> Dict[str, Any]: + warnings.warn('sphinx.ext.jsmath has been moved to sphinxcontrib-jsmath.', + RemovedInSphinx40Warning) + + app.setup_extension('sphinxcontrib.jsmath') + + return { + 'version': sphinx.__display_version__, + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/ext/linkcode.py b/sphinx/sphinx/ext/linkcode.py new file mode 100644 index 0000000..68e8603 --- /dev/null +++ b/sphinx/sphinx/ext/linkcode.py @@ -0,0 +1,79 @@ +""" + sphinx.ext.linkcode + ~~~~~~~~~~~~~~~~~~~ + + Add external links to module code in Python object descriptions. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Any, Dict, Set + +from docutils import nodes +from docutils.nodes import Node + +import sphinx +from sphinx import addnodes +from sphinx.application import Sphinx +from sphinx.errors import SphinxError +from sphinx.locale import _ + + +class LinkcodeError(SphinxError): + category = "linkcode error" + + +def doctree_read(app: Sphinx, doctree: Node) -> None: + env = app.builder.env + + resolve_target = getattr(env.config, 'linkcode_resolve', None) + if not callable(env.config.linkcode_resolve): + raise LinkcodeError( + "Function `linkcode_resolve` is not given in conf.py") + + domain_keys = { + 'py': ['module', 'fullname'], + 'c': ['names'], + 'cpp': ['names'], + 'js': ['object', 'fullname'], + } + + for objnode in doctree.traverse(addnodes.desc): + domain = objnode.get('domain') + uris = set() # type: Set[str] + for signode in objnode: + if not isinstance(signode, addnodes.desc_signature): + continue + + # Convert signode to a specified format + info = {} + for key in domain_keys.get(domain, []): + value = signode.get(key) + if not value: + value = '' + info[key] = value + if not info: + continue + + # Call user code to resolve the link + uri = resolve_target(domain, info) + if not uri: + # no source + continue + + if uri in uris or not uri: + # only one link per name, please + continue + uris.add(uri) + + inline = nodes.inline('', _('[source]'), classes=['viewcode-link']) + onlynode = addnodes.only(expr='html') + onlynode += nodes.reference('', '', inline, internal=False, refuri=uri) + signode += onlynode + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.connect('doctree-read', doctree_read) + app.add_config_value('linkcode_resolve', None, '') + return {'version': sphinx.__display_version__, 'parallel_read_safe': True} diff --git a/sphinx/sphinx/ext/mathjax.py b/sphinx/sphinx/ext/mathjax.py new file mode 100644 index 0000000..e13dcbe --- /dev/null +++ b/sphinx/sphinx/ext/mathjax.py @@ -0,0 +1,107 @@ +""" + sphinx.ext.mathjax + ~~~~~~~~~~~~~~~~~~ + + Allow `MathJax <https://www.mathjax.org/>`_ to be used to display math in + Sphinx's HTML writer -- requires the MathJax JavaScript library on your + webserver/computer. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import json +from typing import Any, Dict +from typing import cast + +from docutils import nodes + +import sphinx +from sphinx.application import Sphinx +from sphinx.builders.html import StandaloneHTMLBuilder +from sphinx.domains.math import MathDomain +from sphinx.environment import BuildEnvironment +from sphinx.errors import ExtensionError +from sphinx.locale import _ +from sphinx.util.math import get_node_equation_number +from sphinx.writers.html import HTMLTranslator + + +def html_visit_math(self: HTMLTranslator, node: nodes.math) -> None: + self.body.append(self.starttag(node, 'span', '', CLASS='math notranslate nohighlight')) + self.body.append(self.builder.config.mathjax_inline[0] + + self.encode(node.astext()) + + self.builder.config.mathjax_inline[1] + '</span>') + raise nodes.SkipNode + + +def html_visit_displaymath(self: HTMLTranslator, node: nodes.math_block) -> None: + self.body.append(self.starttag(node, 'div', CLASS='math notranslate nohighlight')) + if node['nowrap']: + self.body.append(self.encode(node.astext())) + self.body.append('</div>') + raise nodes.SkipNode + + # necessary to e.g. set the id property correctly + if node['number']: + number = get_node_equation_number(self, node) + self.body.append('<span class="eqno">(%s)' % number) + self.add_permalink_ref(node, _('Permalink to this equation')) + self.body.append('</span>') + self.body.append(self.builder.config.mathjax_display[0]) + parts = [prt for prt in node.astext().split('\n\n') if prt.strip()] + if len(parts) > 1: # Add alignment if there are more than 1 equation + self.body.append(r' \begin{align}\begin{aligned}') + for i, part in enumerate(parts): + part = self.encode(part) + if r'\\' in part: + self.body.append(r'\begin{split}' + part + r'\end{split}') + else: + self.body.append(part) + if i < len(parts) - 1: # append new line if not the last equation + self.body.append(r'\\') + if len(parts) > 1: # Add alignment if there are more than 1 equation + self.body.append(r'\end{aligned}\end{align} ') + self.body.append(self.builder.config.mathjax_display[1]) + self.body.append('</div>\n') + raise nodes.SkipNode + + +def install_mathjax(app: Sphinx, env: BuildEnvironment) -> None: + if app.builder.format != 'html' or app.builder.math_renderer_name != 'mathjax': # type: ignore # NOQA + return + if not app.config.mathjax_path: + raise ExtensionError('mathjax_path config value must be set for the ' + 'mathjax extension to work') + + builder = cast(StandaloneHTMLBuilder, app.builder) + domain = cast(MathDomain, env.get_domain('math')) + if domain.has_equations(): + # Enable mathjax only if equations exists + options = {'async': 'async'} + if app.config.mathjax_options: + options.update(app.config.mathjax_options) + builder.add_js_file(app.config.mathjax_path, **options) + + if app.config.mathjax_config: + body = "MathJax.Hub.Config(%s)" % json.dumps(app.config.mathjax_config) + builder.add_js_file(None, type="text/x-mathjax-config", body=body) + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_html_math_renderer('mathjax', + (html_visit_math, None), + (html_visit_displaymath, None)) + + # more information for mathjax secure url is here: + # https://docs.mathjax.org/en/latest/start.html#secure-access-to-the-cdn + app.add_config_value('mathjax_path', + 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?' + 'config=TeX-AMS-MML_HTMLorMML', 'html') + app.add_config_value('mathjax_options', {}, 'html') + app.add_config_value('mathjax_inline', [r'\(', r'\)'], 'html') + app.add_config_value('mathjax_display', [r'\[', r'\]'], 'html') + app.add_config_value('mathjax_config', None, 'html') + app.connect('env-updated', install_mathjax) + + return {'version': sphinx.__display_version__, 'parallel_read_safe': True} diff --git a/sphinx/sphinx/ext/napoleon/__init__.py b/sphinx/sphinx/ext/napoleon/__init__.py new file mode 100644 index 0000000..10b1ff3 --- /dev/null +++ b/sphinx/sphinx/ext/napoleon/__init__.py @@ -0,0 +1,463 @@ +""" + sphinx.ext.napoleon + ~~~~~~~~~~~~~~~~~~~ + + Support for NumPy and Google style docstrings. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Any, Dict, List + +from sphinx import __display_version__ as __version__ +from sphinx.application import Sphinx +from sphinx.ext.napoleon.docstring import GoogleDocstring, NumpyDocstring + + +class Config: + """Sphinx napoleon extension settings in `conf.py`. + + Listed below are all the settings used by napoleon and their default + values. These settings can be changed in the Sphinx `conf.py` file. Make + sure that "sphinx.ext.napoleon" is enabled in `conf.py`:: + + # conf.py + + # Add any Sphinx extension module names here, as strings + extensions = ['sphinx.ext.napoleon'] + + # Napoleon settings + napoleon_google_docstring = True + napoleon_numpy_docstring = True + napoleon_include_init_with_doc = False + napoleon_include_private_with_doc = False + napoleon_include_special_with_doc = False + napoleon_use_admonition_for_examples = False + napoleon_use_admonition_for_notes = False + napoleon_use_admonition_for_references = False + napoleon_use_ivar = False + napoleon_use_param = True + napoleon_use_rtype = True + napoleon_use_keyword = True + napoleon_custom_sections = None + + .. _Google style: + https://google.github.io/styleguide/pyguide.html + .. _NumPy style: + https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt + + Attributes + ---------- + napoleon_google_docstring : :obj:`bool` (Defaults to True) + True to parse `Google style`_ docstrings. False to disable support + for Google style docstrings. + napoleon_numpy_docstring : :obj:`bool` (Defaults to True) + True to parse `NumPy style`_ docstrings. False to disable support + for NumPy style docstrings. + napoleon_include_init_with_doc : :obj:`bool` (Defaults to False) + True to list ``__init___`` docstrings separately from the class + docstring. False to fall back to Sphinx's default behavior, which + considers the ``__init___`` docstring as part of the class + documentation. + + **If True**:: + + def __init__(self): + \"\"\" + This will be included in the docs because it has a docstring + \"\"\" + + def __init__(self): + # This will NOT be included in the docs + + napoleon_include_private_with_doc : :obj:`bool` (Defaults to False) + True to include private members (like ``_membername``) with docstrings + in the documentation. False to fall back to Sphinx's default behavior. + + **If True**:: + + def _included(self): + \"\"\" + This will be included in the docs because it has a docstring + \"\"\" + pass + + def _skipped(self): + # This will NOT be included in the docs + pass + + napoleon_include_special_with_doc : :obj:`bool` (Defaults to False) + True to include special members (like ``__membername__``) with + docstrings in the documentation. False to fall back to Sphinx's + default behavior. + + **If True**:: + + def __str__(self): + \"\"\" + This will be included in the docs because it has a docstring + \"\"\" + return unicode(self).encode('utf-8') + + def __unicode__(self): + # This will NOT be included in the docs + return unicode(self.__class__.__name__) + + napoleon_use_admonition_for_examples : :obj:`bool` (Defaults to False) + True to use the ``.. admonition::`` directive for the **Example** and + **Examples** sections. False to use the ``.. rubric::`` directive + instead. One may look better than the other depending on what HTML + theme is used. + + This `NumPy style`_ snippet will be converted as follows:: + + Example + ------- + This is just a quick example + + **If True**:: + + .. admonition:: Example + + This is just a quick example + + **If False**:: + + .. rubric:: Example + + This is just a quick example + + napoleon_use_admonition_for_notes : :obj:`bool` (Defaults to False) + True to use the ``.. admonition::`` directive for **Notes** sections. + False to use the ``.. rubric::`` directive instead. + + Note + ---- + The singular **Note** section will always be converted to a + ``.. note::`` directive. + + See Also + -------- + :attr:`napoleon_use_admonition_for_examples` + + napoleon_use_admonition_for_references : :obj:`bool` (Defaults to False) + True to use the ``.. admonition::`` directive for **References** + sections. False to use the ``.. rubric::`` directive instead. + + See Also + -------- + :attr:`napoleon_use_admonition_for_examples` + + napoleon_use_ivar : :obj:`bool` (Defaults to False) + True to use the ``:ivar:`` role for instance variables. False to use + the ``.. attribute::`` directive instead. + + This `NumPy style`_ snippet will be converted as follows:: + + Attributes + ---------- + attr1 : int + Description of `attr1` + + **If True**:: + + :ivar attr1: Description of `attr1` + :vartype attr1: int + + **If False**:: + + .. attribute:: attr1 + + Description of `attr1` + + :type: int + + napoleon_use_param : :obj:`bool` (Defaults to True) + True to use a ``:param:`` role for each function parameter. False to + use a single ``:parameters:`` role for all the parameters. + + This `NumPy style`_ snippet will be converted as follows:: + + Parameters + ---------- + arg1 : str + Description of `arg1` + arg2 : int, optional + Description of `arg2`, defaults to 0 + + **If True**:: + + :param arg1: Description of `arg1` + :type arg1: str + :param arg2: Description of `arg2`, defaults to 0 + :type arg2: int, optional + + **If False**:: + + :parameters: * **arg1** (*str*) -- + Description of `arg1` + * **arg2** (*int, optional*) -- + Description of `arg2`, defaults to 0 + + napoleon_use_keyword : :obj:`bool` (Defaults to True) + True to use a ``:keyword:`` role for each function keyword argument. + False to use a single ``:keyword arguments:`` role for all the + keywords. + + This behaves similarly to :attr:`napoleon_use_param`. Note unlike + docutils, ``:keyword:`` and ``:param:`` will not be treated the same + way - there will be a separate "Keyword Arguments" section, rendered + in the same fashion as "Parameters" section (type links created if + possible) + + See Also + -------- + :attr:`napoleon_use_param` + + napoleon_use_rtype : :obj:`bool` (Defaults to True) + True to use the ``:rtype:`` role for the return type. False to output + the return type inline with the description. + + This `NumPy style`_ snippet will be converted as follows:: + + Returns + ------- + bool + True if successful, False otherwise + + **If True**:: + + :returns: True if successful, False otherwise + :rtype: bool + + **If False**:: + + :returns: *bool* -- True if successful, False otherwise + + napoleon_custom_sections : :obj:`list` (Defaults to None) + Add a list of custom sections to include, expanding the list of parsed sections. + + The entries can either be strings or tuples, depending on the intention: + * To create a custom "generic" section, just pass a string. + * To create an alias for an existing section, pass a tuple containing the + alias name and the original, in that order. + + If an entry is just a string, it is interpreted as a header for a generic + section. If the entry is a tuple/list/indexed container, the first entry + is the name of the section, the second is the section key to emulate. + + + """ + _config_values = { + 'napoleon_google_docstring': (True, 'env'), + 'napoleon_numpy_docstring': (True, 'env'), + 'napoleon_include_init_with_doc': (False, 'env'), + 'napoleon_include_private_with_doc': (False, 'env'), + 'napoleon_include_special_with_doc': (False, 'env'), + 'napoleon_use_admonition_for_examples': (False, 'env'), + 'napoleon_use_admonition_for_notes': (False, 'env'), + 'napoleon_use_admonition_for_references': (False, 'env'), + 'napoleon_use_ivar': (False, 'env'), + 'napoleon_use_param': (True, 'env'), + 'napoleon_use_rtype': (True, 'env'), + 'napoleon_use_keyword': (True, 'env'), + 'napoleon_custom_sections': (None, 'env') + } + + def __init__(self, **settings: Any) -> None: + for name, (default, rebuild) in self._config_values.items(): + setattr(self, name, default) + for name, value in settings.items(): + setattr(self, name, value) + + +def setup(app: Sphinx) -> Dict[str, Any]: + """Sphinx extension setup function. + + When the extension is loaded, Sphinx imports this module and executes + the ``setup()`` function, which in turn notifies Sphinx of everything + the extension offers. + + Parameters + ---------- + app : sphinx.application.Sphinx + Application object representing the Sphinx process + + See Also + -------- + `The Sphinx documentation on Extensions + <http://sphinx-doc.org/extensions.html>`_ + + `The Extension Tutorial <http://sphinx-doc.org/extdev/tutorial.html>`_ + + `The Extension API <http://sphinx-doc.org/extdev/appapi.html>`_ + + """ + if not isinstance(app, Sphinx): + # probably called by tests + return {'version': __version__, 'parallel_read_safe': True} + + _patch_python_domain() + + app.setup_extension('sphinx.ext.autodoc') + app.connect('autodoc-process-docstring', _process_docstring) + app.connect('autodoc-skip-member', _skip_member) + + for name, (default, rebuild) in Config._config_values.items(): + app.add_config_value(name, default, rebuild) + return {'version': __version__, 'parallel_read_safe': True} + + +def _patch_python_domain() -> None: + try: + from sphinx.domains.python import PyTypedField + except ImportError: + pass + else: + import sphinx.domains.python + from sphinx.locale import _ + for doc_field in sphinx.domains.python.PyObject.doc_field_types: + if doc_field.name == 'parameter': + doc_field.names = ('param', 'parameter', 'arg', 'argument') + break + sphinx.domains.python.PyObject.doc_field_types.append( + PyTypedField('keyword', label=_('Keyword Arguments'), + names=('keyword', 'kwarg', 'kwparam'), + typerolename='obj', typenames=('paramtype', 'kwtype'), + can_collapse=True)) + + +def _process_docstring(app: Sphinx, what: str, name: str, obj: Any, + options: Any, lines: List[str]) -> None: + """Process the docstring for a given python object. + + Called when autodoc has read and processed a docstring. `lines` is a list + of docstring lines that `_process_docstring` modifies in place to change + what Sphinx outputs. + + The following settings in conf.py control what styles of docstrings will + be parsed: + + * ``napoleon_google_docstring`` -- parse Google style docstrings + * ``napoleon_numpy_docstring`` -- parse NumPy style docstrings + + Parameters + ---------- + app : sphinx.application.Sphinx + Application object representing the Sphinx process. + what : str + A string specifying the type of the object to which the docstring + belongs. Valid values: "module", "class", "exception", "function", + "method", "attribute". + name : str + The fully qualified name of the object. + obj : module, class, exception, function, method, or attribute + The object to which the docstring belongs. + options : sphinx.ext.autodoc.Options + The options given to the directive: an object with attributes + inherited_members, undoc_members, show_inheritance and noindex that + are True if the flag option of same name was given to the auto + directive. + lines : list of str + The lines of the docstring, see above. + + .. note:: `lines` is modified *in place* + + """ + result_lines = lines + docstring = None # type: GoogleDocstring + if app.config.napoleon_numpy_docstring: + docstring = NumpyDocstring(result_lines, app.config, app, what, name, + obj, options) + result_lines = docstring.lines() + if app.config.napoleon_google_docstring: + docstring = GoogleDocstring(result_lines, app.config, app, what, name, + obj, options) + result_lines = docstring.lines() + lines[:] = result_lines[:] + + +def _skip_member(app: Sphinx, what: str, name: str, obj: Any, + skip: bool, options: Any) -> bool: + """Determine if private and special class members are included in docs. + + The following settings in conf.py determine if private and special class + members or init methods are included in the generated documentation: + + * ``napoleon_include_init_with_doc`` -- + include init methods if they have docstrings + * ``napoleon_include_private_with_doc`` -- + include private members if they have docstrings + * ``napoleon_include_special_with_doc`` -- + include special members if they have docstrings + + Parameters + ---------- + app : sphinx.application.Sphinx + Application object representing the Sphinx process + what : str + A string specifying the type of the object to which the member + belongs. Valid values: "module", "class", "exception", "function", + "method", "attribute". + name : str + The name of the member. + obj : module, class, exception, function, method, or attribute. + For example, if the member is the __init__ method of class A, then + `obj` will be `A.__init__`. + skip : bool + A boolean indicating if autodoc will skip this member if `_skip_member` + does not override the decision + options : sphinx.ext.autodoc.Options + The options given to the directive: an object with attributes + inherited_members, undoc_members, show_inheritance and noindex that + are True if the flag option of same name was given to the auto + directive. + + Returns + ------- + bool + True if the member should be skipped during creation of the docs, + False if it should be included in the docs. + + """ + has_doc = getattr(obj, '__doc__', False) + is_member = (what == 'class' or what == 'exception' or what == 'module') + if name != '__weakref__' and has_doc and is_member: + cls_is_owner = False + if what == 'class' or what == 'exception': + qualname = getattr(obj, '__qualname__', '') + cls_path, _, _ = qualname.rpartition('.') + if cls_path: + try: + if '.' in cls_path: + import importlib + import functools + + mod = importlib.import_module(obj.__module__) + mod_path = cls_path.split('.') + cls = functools.reduce(getattr, mod_path, mod) + else: + cls = obj.__globals__[cls_path] + except Exception: + cls_is_owner = False + else: + cls_is_owner = (cls and hasattr(cls, name) and # type: ignore + name in cls.__dict__) + else: + cls_is_owner = False + + if what == 'module' or cls_is_owner: + is_init = (name == '__init__') + is_special = (not is_init and name.startswith('__') and + name.endswith('__')) + is_private = (not is_init and not is_special and + name.startswith('_')) + inc_init = app.config.napoleon_include_init_with_doc + inc_special = app.config.napoleon_include_special_with_doc + inc_private = app.config.napoleon_include_private_with_doc + if ((is_special and inc_special) or + (is_private and inc_private) or + (is_init and inc_init)): + return False + return None diff --git a/sphinx/sphinx/ext/napoleon/docstring.py b/sphinx/sphinx/ext/napoleon/docstring.py new file mode 100644 index 0000000..820de6e --- /dev/null +++ b/sphinx/sphinx/ext/napoleon/docstring.py @@ -0,0 +1,1038 @@ +""" + sphinx.ext.napoleon.docstring + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + Classes for docstring parsing and formatting. + + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import inspect +import re +from functools import partial +from typing import Any, Callable, Dict, List, Tuple, Union + +from sphinx.application import Sphinx +from sphinx.config import Config as SphinxConfig +from sphinx.ext.napoleon.iterators import modify_iter +from sphinx.locale import _ + +if False: + # For type annotation + from typing import Type # for python3.5.1 + + +_directive_regex = re.compile(r'\.\. \S+::') +_google_section_regex = re.compile(r'^(\s|\w)+:\s*$') +_google_typed_arg_regex = re.compile(r'\s*(.+?)\s*\(\s*(.*[^\s]+)\s*\)') +_numpy_section_regex = re.compile(r'^[=\-`:\'"~^_*+#<>]{2,}\s*$') +_single_colon_regex = re.compile(r'(?<!:):(?!:)') +_xref_regex = re.compile(r'(:(?:[a-zA-Z0-9]+[\-_+:.])*[a-zA-Z0-9]+:`.+?`)') +_bullet_list_regex = re.compile(r'^(\*|\+|\-)(\s+\S|\s*$)') +_enumerated_list_regex = re.compile( + r'^(?P<paren>\()?' + r'(\d+|#|[ivxlcdm]+|[IVXLCDM]+|[a-zA-Z])' + r'(?(paren)\)|\.)(\s+\S|\s*$)') + + +class GoogleDocstring: + """Convert Google style docstrings to reStructuredText. + + Parameters + ---------- + docstring : :obj:`str` or :obj:`list` of :obj:`str` + The docstring to parse, given either as a string or split into + individual lines. + config: :obj:`sphinx.ext.napoleon.Config` or :obj:`sphinx.config.Config` + The configuration settings to use. If not given, defaults to the + config object on `app`; or if `app` is not given defaults to the + a new :class:`sphinx.ext.napoleon.Config` object. + + + Other Parameters + ---------------- + app : :class:`sphinx.application.Sphinx`, optional + Application object representing the Sphinx process. + what : :obj:`str`, optional + A string specifying the type of the object to which the docstring + belongs. Valid values: "module", "class", "exception", "function", + "method", "attribute". + name : :obj:`str`, optional + The fully qualified name of the object. + obj : module, class, exception, function, method, or attribute + The object to which the docstring belongs. + options : :class:`sphinx.ext.autodoc.Options`, optional + The options given to the directive: an object with attributes + inherited_members, undoc_members, show_inheritance and noindex that + are True if the flag option of same name was given to the auto + directive. + + + Example + ------- + >>> from sphinx.ext.napoleon import Config + >>> config = Config(napoleon_use_param=True, napoleon_use_rtype=True) + >>> docstring = '''One line summary. + ... + ... Extended description. + ... + ... Args: + ... arg1(int): Description of `arg1` + ... arg2(str): Description of `arg2` + ... Returns: + ... str: Description of return value. + ... ''' + >>> print(GoogleDocstring(docstring, config)) + One line summary. + <BLANKLINE> + Extended description. + <BLANKLINE> + :param arg1: Description of `arg1` + :type arg1: int + :param arg2: Description of `arg2` + :type arg2: str + <BLANKLINE> + :returns: Description of return value. + :rtype: str + <BLANKLINE> + + """ + + _name_rgx = re.compile(r"^\s*((?::(?P<role>\S+):)?`(?P<name>~?[a-zA-Z0-9_.-]+)`|" + r" (?P<name2>~?[a-zA-Z0-9_.-]+))\s*", re.X) + + def __init__(self, docstring: Union[str, List[str]], config: SphinxConfig = None, + app: Sphinx = None, what: str = '', name: str = '', + obj: Any = None, options: Any = None) -> None: + self._config = config + self._app = app + + if not self._config: + from sphinx.ext.napoleon import Config + self._config = self._app.config if self._app else Config() # type: ignore + + if not what: + if inspect.isclass(obj): + what = 'class' + elif inspect.ismodule(obj): + what = 'module' + elif callable(obj): + what = 'function' + else: + what = 'object' + + self._what = what + self._name = name + self._obj = obj + self._opt = options + if isinstance(docstring, str): + lines = docstring.splitlines() + else: + lines = docstring + self._line_iter = modify_iter(lines, modifier=lambda s: s.rstrip()) + self._parsed_lines = [] # type: List[str] + self._is_in_section = False + self._section_indent = 0 + if not hasattr(self, '_directive_sections'): + self._directive_sections = [] # type: List[str] + if not hasattr(self, '_sections'): + self._sections = { + 'args': self._parse_parameters_section, + 'arguments': self._parse_parameters_section, + 'attention': partial(self._parse_admonition, 'attention'), + 'attributes': self._parse_attributes_section, + 'caution': partial(self._parse_admonition, 'caution'), + 'danger': partial(self._parse_admonition, 'danger'), + 'error': partial(self._parse_admonition, 'error'), + 'example': self._parse_examples_section, + 'examples': self._parse_examples_section, + 'hint': partial(self._parse_admonition, 'hint'), + 'important': partial(self._parse_admonition, 'important'), + 'keyword args': self._parse_keyword_arguments_section, + 'keyword arguments': self._parse_keyword_arguments_section, + 'methods': self._parse_methods_section, + 'note': partial(self._parse_admonition, 'note'), + 'notes': self._parse_notes_section, + 'other parameters': self._parse_other_parameters_section, + 'parameters': self._parse_parameters_section, + 'return': self._parse_returns_section, + 'returns': self._parse_returns_section, + 'raises': self._parse_raises_section, + 'references': self._parse_references_section, + 'see also': self._parse_see_also_section, + 'tip': partial(self._parse_admonition, 'tip'), + 'todo': partial(self._parse_admonition, 'todo'), + 'warning': partial(self._parse_admonition, 'warning'), + 'warnings': partial(self._parse_admonition, 'warning'), + 'warns': self._parse_warns_section, + 'yield': self._parse_yields_section, + 'yields': self._parse_yields_section, + } # type: Dict[str, Callable] + + self._load_custom_sections() + + self._parse() + + def __str__(self) -> str: + """Return the parsed docstring in reStructuredText format. + + Returns + ------- + unicode + Unicode version of the docstring. + + """ + return '\n'.join(self.lines()) + + def lines(self) -> List[str]: + """Return the parsed lines of the docstring in reStructuredText format. + + Returns + ------- + list(str) + The lines of the docstring in a list. + + """ + return self._parsed_lines + + def _consume_indented_block(self, indent: int = 1) -> List[str]: + lines = [] + line = self._line_iter.peek() + while(not self._is_section_break() and + (not line or self._is_indented(line, indent))): + lines.append(next(self._line_iter)) + line = self._line_iter.peek() + return lines + + def _consume_contiguous(self) -> List[str]: + lines = [] + while (self._line_iter.has_next() and + self._line_iter.peek() and + not self._is_section_header()): + lines.append(next(self._line_iter)) + return lines + + def _consume_empty(self) -> List[str]: + lines = [] + line = self._line_iter.peek() + while self._line_iter.has_next() and not line: + lines.append(next(self._line_iter)) + line = self._line_iter.peek() + return lines + + def _consume_field(self, parse_type: bool = True, prefer_type: bool = False + ) -> Tuple[str, str, List[str]]: + line = next(self._line_iter) + + before, colon, after = self._partition_field_on_colon(line) + _name, _type, _desc = before, '', after + + if parse_type: + match = _google_typed_arg_regex.match(before) + if match: + _name = match.group(1) + _type = match.group(2) + + _name = self._escape_args_and_kwargs(_name) + + if prefer_type and not _type: + _type, _name = _name, _type + indent = self._get_indent(line) + 1 + _descs = [_desc] + self._dedent(self._consume_indented_block(indent)) + _descs = self.__class__(_descs, self._config).lines() + return _name, _type, _descs + + def _consume_fields(self, parse_type: bool = True, prefer_type: bool = False + ) -> List[Tuple[str, str, List[str]]]: + self._consume_empty() + fields = [] + while not self._is_section_break(): + _name, _type, _desc = self._consume_field(parse_type, prefer_type) + if _name or _type or _desc: + fields.append((_name, _type, _desc,)) + return fields + + def _consume_inline_attribute(self) -> Tuple[str, List[str]]: + line = next(self._line_iter) + _type, colon, _desc = self._partition_field_on_colon(line) + if not colon or not _desc: + _type, _desc = _desc, _type + _desc += colon + _descs = [_desc] + self._dedent(self._consume_to_end()) + _descs = self.__class__(_descs, self._config).lines() + return _type, _descs + + def _consume_returns_section(self) -> List[Tuple[str, str, List[str]]]: + lines = self._dedent(self._consume_to_next_section()) + if lines: + before, colon, after = self._partition_field_on_colon(lines[0]) + _name, _type, _desc = '', '', lines + + if colon: + if after: + _desc = [after] + lines[1:] + else: + _desc = lines[1:] + + _type = before + + _desc = self.__class__(_desc, self._config).lines() + return [(_name, _type, _desc,)] + else: + return [] + + def _consume_usage_section(self) -> List[str]: + lines = self._dedent(self._consume_to_next_section()) + return lines + + def _consume_section_header(self) -> str: + section = next(self._line_iter) + stripped_section = section.strip(':') + if stripped_section.lower() in self._sections: + section = stripped_section + return section + + def _consume_to_end(self) -> List[str]: + lines = [] + while self._line_iter.has_next(): + lines.append(next(self._line_iter)) + return lines + + def _consume_to_next_section(self) -> List[str]: + self._consume_empty() + lines = [] + while not self._is_section_break(): + lines.append(next(self._line_iter)) + return lines + self._consume_empty() + + def _dedent(self, lines: List[str], full: bool = False) -> List[str]: + if full: + return [line.lstrip() for line in lines] + else: + min_indent = self._get_min_indent(lines) + return [line[min_indent:] for line in lines] + + def _escape_args_and_kwargs(self, name: str) -> str: + if name.endswith('_'): + name = name[:-1] + r'\_' + + if name[:2] == '**': + return r'\*\*' + name[2:] + elif name[:1] == '*': + return r'\*' + name[1:] + else: + return name + + def _fix_field_desc(self, desc: List[str]) -> List[str]: + if self._is_list(desc): + desc = [''] + desc + elif desc[0].endswith('::'): + desc_block = desc[1:] + indent = self._get_indent(desc[0]) + block_indent = self._get_initial_indent(desc_block) + if block_indent > indent: + desc = [''] + desc + else: + desc = ['', desc[0]] + self._indent(desc_block, 4) + return desc + + def _format_admonition(self, admonition: str, lines: List[str]) -> List[str]: + lines = self._strip_empty(lines) + if len(lines) == 1: + return ['.. %s:: %s' % (admonition, lines[0].strip()), ''] + elif lines: + lines = self._indent(self._dedent(lines), 3) + return ['.. %s::' % admonition, ''] + lines + [''] + else: + return ['.. %s::' % admonition, ''] + + def _format_block(self, prefix: str, lines: List[str], padding: str = None) -> List[str]: + if lines: + if padding is None: + padding = ' ' * len(prefix) + result_lines = [] + for i, line in enumerate(lines): + if i == 0: + result_lines.append((prefix + line).rstrip()) + elif line: + result_lines.append(padding + line) + else: + result_lines.append('') + return result_lines + else: + return [prefix] + + def _format_docutils_params(self, fields: List[Tuple[str, str, List[str]]], + field_role: str = 'param', type_role: str = 'type' + ) -> List[str]: + lines = [] + for _name, _type, _desc in fields: + _desc = self._strip_empty(_desc) + if any(_desc): + _desc = self._fix_field_desc(_desc) + field = ':%s %s: ' % (field_role, _name) + lines.extend(self._format_block(field, _desc)) + else: + lines.append(':%s %s:' % (field_role, _name)) + + if _type: + lines.append(':%s %s: %s' % (type_role, _name, _type)) + return lines + [''] + + def _format_field(self, _name: str, _type: str, _desc: List[str]) -> List[str]: + _desc = self._strip_empty(_desc) + has_desc = any(_desc) + separator = ' -- ' if has_desc else '' + if _name: + if _type: + if '`' in _type: + field = '**%s** (%s)%s' % (_name, _type, separator) + else: + field = '**%s** (*%s*)%s' % (_name, _type, separator) + else: + field = '**%s**%s' % (_name, separator) + elif _type: + if '`' in _type: + field = '%s%s' % (_type, separator) + else: + field = '*%s*%s' % (_type, separator) + else: + field = '' + + if has_desc: + _desc = self._fix_field_desc(_desc) + if _desc[0]: + return [field + _desc[0]] + _desc[1:] + else: + return [field] + _desc + else: + return [field] + + def _format_fields(self, field_type: str, fields: List[Tuple[str, str, List[str]]] + ) -> List[str]: + field_type = ':%s:' % field_type.strip() + padding = ' ' * len(field_type) + multi = len(fields) > 1 + lines = [] # type: List[str] + for _name, _type, _desc in fields: + field = self._format_field(_name, _type, _desc) + if multi: + if lines: + lines.extend(self._format_block(padding + ' * ', field)) + else: + lines.extend(self._format_block(field_type + ' * ', field)) + else: + lines.extend(self._format_block(field_type + ' ', field)) + if lines and lines[-1]: + lines.append('') + return lines + + def _get_current_indent(self, peek_ahead: int = 0) -> int: + line = self._line_iter.peek(peek_ahead + 1)[peek_ahead] + while line != self._line_iter.sentinel: + if line: + return self._get_indent(line) + peek_ahead += 1 + line = self._line_iter.peek(peek_ahead + 1)[peek_ahead] + return 0 + + def _get_indent(self, line: str) -> int: + for i, s in enumerate(line): + if not s.isspace(): + return i + return len(line) + + def _get_initial_indent(self, lines: List[str]) -> int: + for line in lines: + if line: + return self._get_indent(line) + return 0 + + def _get_min_indent(self, lines: List[str]) -> int: + min_indent = None + for line in lines: + if line: + indent = self._get_indent(line) + if min_indent is None: + min_indent = indent + elif indent < min_indent: + min_indent = indent + return min_indent or 0 + + def _indent(self, lines: List[str], n: int = 4) -> List[str]: + return [(' ' * n) + line for line in lines] + + def _is_indented(self, line: str, indent: int = 1) -> bool: + for i, s in enumerate(line): + if i >= indent: + return True + elif not s.isspace(): + return False + return False + + def _is_list(self, lines: List[str]) -> bool: + if not lines: + return False + if _bullet_list_regex.match(lines[0]): + return True + if _enumerated_list_regex.match(lines[0]): + return True + if len(lines) < 2 or lines[0].endswith('::'): + return False + indent = self._get_indent(lines[0]) + next_indent = indent + for line in lines[1:]: + if line: + next_indent = self._get_indent(line) + break + return next_indent > indent + + def _is_section_header(self) -> bool: + section = self._line_iter.peek().lower() + match = _google_section_regex.match(section) + if match and section.strip(':') in self._sections: + header_indent = self._get_indent(section) + section_indent = self._get_current_indent(peek_ahead=1) + return section_indent > header_indent + elif self._directive_sections: + if _directive_regex.match(section): + for directive_section in self._directive_sections: + if section.startswith(directive_section): + return True + return False + + def _is_section_break(self) -> bool: + line = self._line_iter.peek() + return (not self._line_iter.has_next() or + self._is_section_header() or + (self._is_in_section and + line and + not self._is_indented(line, self._section_indent))) + + def _load_custom_sections(self) -> None: + if self._config.napoleon_custom_sections is not None: + for entry in self._config.napoleon_custom_sections: + if isinstance(entry, str): + # if entry is just a label, add to sections list, + # using generic section logic. + self._sections[entry.lower()] = self._parse_custom_generic_section + else: + # otherwise, assume entry is container; + # [0] is new section, [1] is the section to alias. + # in the case of key mismatch, just handle as generic section. + self._sections[entry[0].lower()] = \ + self._sections.get(entry[1].lower(), + self._parse_custom_generic_section) + + def _parse(self) -> None: + self._parsed_lines = self._consume_empty() + + if self._name and self._what in ('attribute', 'data', 'property'): + # Implicit stop using StopIteration no longer allowed in + # Python 3.7; see PEP 479 + res = [] # type: List[str] + try: + res = self._parse_attribute_docstring() + except StopIteration: + pass + self._parsed_lines.extend(res) + return + + while self._line_iter.has_next(): + if self._is_section_header(): + try: + section = self._consume_section_header() + self._is_in_section = True + self._section_indent = self._get_current_indent() + if _directive_regex.match(section): + lines = [section] + self._consume_to_next_section() + else: + lines = self._sections[section.lower()](section) + finally: + self._is_in_section = False + self._section_indent = 0 + else: + if not self._parsed_lines: + lines = self._consume_contiguous() + self._consume_empty() + else: + lines = self._consume_to_next_section() + self._parsed_lines.extend(lines) + + def _parse_admonition(self, admonition: str, section: str) -> List[str]: + # type (str, str) -> List[str] + lines = self._consume_to_next_section() + return self._format_admonition(admonition, lines) + + def _parse_attribute_docstring(self) -> List[str]: + _type, _desc = self._consume_inline_attribute() + lines = self._format_field('', '', _desc) + if _type: + lines.extend(['', ':type: %s' % _type]) + return lines + + def _parse_attributes_section(self, section: str) -> List[str]: + lines = [] + for _name, _type, _desc in self._consume_fields(): + if self._config.napoleon_use_ivar: + _name = self._qualify_name(_name, self._obj) + field = ':ivar %s: ' % _name + lines.extend(self._format_block(field, _desc)) + if _type: + lines.append(':vartype %s: %s' % (_name, _type)) + else: + lines.append('.. attribute:: ' + _name) + if self._opt and 'noindex' in self._opt: + lines.append(' :noindex:') + lines.append('') + + fields = self._format_field('', '', _desc) + lines.extend(self._indent(fields, 3)) + if _type: + lines.append('') + lines.extend(self._indent([':type: %s' % _type], 3)) + lines.append('') + if self._config.napoleon_use_ivar: + lines.append('') + return lines + + def _parse_examples_section(self, section: str) -> List[str]: + labels = { + 'example': _('Example'), + 'examples': _('Examples'), + } + use_admonition = self._config.napoleon_use_admonition_for_examples + label = labels.get(section.lower(), section) + return self._parse_generic_section(label, use_admonition) + + def _parse_custom_generic_section(self, section: str) -> List[str]: + # for now, no admonition for simple custom sections + return self._parse_generic_section(section, False) + + def _parse_usage_section(self, section: str) -> List[str]: + header = ['.. rubric:: Usage:', ''] + block = ['.. code-block:: python', ''] + lines = self._consume_usage_section() + lines = self._indent(lines, 3) + return header + block + lines + [''] + + def _parse_generic_section(self, section: str, use_admonition: bool) -> List[str]: + lines = self._strip_empty(self._consume_to_next_section()) + lines = self._dedent(lines) + if use_admonition: + header = '.. admonition:: %s' % section + lines = self._indent(lines, 3) + else: + header = '.. rubric:: %s' % section + if lines: + return [header, ''] + lines + [''] + else: + return [header, ''] + + def _parse_keyword_arguments_section(self, section: str) -> List[str]: + fields = self._consume_fields() + if self._config.napoleon_use_keyword: + return self._format_docutils_params( + fields, + field_role="keyword", + type_role="kwtype") + else: + return self._format_fields(_('Keyword Arguments'), fields) + + def _parse_methods_section(self, section: str) -> List[str]: + lines = [] # type: List[str] + for _name, _type, _desc in self._consume_fields(parse_type=False): + lines.append('.. method:: %s' % _name) + if self._opt and 'noindex' in self._opt: + lines.append(' :noindex:') + if _desc: + lines.extend([''] + self._indent(_desc, 3)) + lines.append('') + return lines + + def _parse_notes_section(self, section: str) -> List[str]: + use_admonition = self._config.napoleon_use_admonition_for_notes + return self._parse_generic_section(_('Notes'), use_admonition) + + def _parse_other_parameters_section(self, section: str) -> List[str]: + return self._format_fields(_('Other Parameters'), self._consume_fields()) + + def _parse_parameters_section(self, section: str) -> List[str]: + fields = self._consume_fields() + if self._config.napoleon_use_param: + return self._format_docutils_params(fields) + else: + return self._format_fields(_('Parameters'), fields) + + def _parse_raises_section(self, section: str) -> List[str]: + fields = self._consume_fields(parse_type=False, prefer_type=True) + lines = [] # type: List[str] + for _name, _type, _desc in fields: + m = self._name_rgx.match(_type) + if m and m.group('name'): + _type = m.group('name') + _type = ' ' + _type if _type else '' + _desc = self._strip_empty(_desc) + _descs = ' ' + '\n '.join(_desc) if any(_desc) else '' + lines.append(':raises%s:%s' % (_type, _descs)) + if lines: + lines.append('') + return lines + + def _parse_references_section(self, section: str) -> List[str]: + use_admonition = self._config.napoleon_use_admonition_for_references + return self._parse_generic_section(_('References'), use_admonition) + + def _parse_returns_section(self, section: str) -> List[str]: + fields = self._consume_returns_section() + multi = len(fields) > 1 + if multi: + use_rtype = False + else: + use_rtype = self._config.napoleon_use_rtype + + lines = [] # type: List[str] + for _name, _type, _desc in fields: + if use_rtype: + field = self._format_field(_name, '', _desc) + else: + field = self._format_field(_name, _type, _desc) + + if multi: + if lines: + lines.extend(self._format_block(' * ', field)) + else: + lines.extend(self._format_block(':returns: * ', field)) + else: + lines.extend(self._format_block(':returns: ', field)) + if _type and use_rtype: + lines.extend([':rtype: %s' % _type, '']) + if lines and lines[-1]: + lines.append('') + return lines + + def _parse_see_also_section(self, section: str) -> List[str]: + return self._parse_admonition('seealso', section) + + def _parse_warns_section(self, section: str) -> List[str]: + return self._format_fields(_('Warns'), self._consume_fields()) + + def _parse_yields_section(self, section: str) -> List[str]: + fields = self._consume_returns_section() + return self._format_fields(_('Yields'), fields) + + def _partition_field_on_colon(self, line: str) -> Tuple[str, str, str]: + before_colon = [] + after_colon = [] + colon = '' + found_colon = False + for i, source in enumerate(_xref_regex.split(line)): + if found_colon: + after_colon.append(source) + else: + m = _single_colon_regex.search(source) + if (i % 2) == 0 and m: + found_colon = True + colon = source[m.start(): m.end()] + before_colon.append(source[:m.start()]) + after_colon.append(source[m.end():]) + else: + before_colon.append(source) + + return ("".join(before_colon).strip(), + colon, + "".join(after_colon).strip()) + + def _qualify_name(self, attr_name: str, klass: "Type") -> str: + if klass and '.' not in attr_name: + if attr_name.startswith('~'): + attr_name = attr_name[1:] + try: + q = klass.__qualname__ + except AttributeError: + q = klass.__name__ + return '~%s.%s' % (q, attr_name) + return attr_name + + def _strip_empty(self, lines: List[str]) -> List[str]: + if lines: + start = -1 + for i, line in enumerate(lines): + if line: + start = i + break + if start == -1: + lines = [] + end = -1 + for i in reversed(range(len(lines))): + line = lines[i] + if line: + end = i + break + if start > 0 or end + 1 < len(lines): + lines = lines[start:end + 1] + return lines + + +class NumpyDocstring(GoogleDocstring): + """Convert NumPy style docstrings to reStructuredText. + + Parameters + ---------- + docstring : :obj:`str` or :obj:`list` of :obj:`str` + The docstring to parse, given either as a string or split into + individual lines. + config: :obj:`sphinx.ext.napoleon.Config` or :obj:`sphinx.config.Config` + The configuration settings to use. If not given, defaults to the + config object on `app`; or if `app` is not given defaults to the + a new :class:`sphinx.ext.napoleon.Config` object. + + + Other Parameters + ---------------- + app : :class:`sphinx.application.Sphinx`, optional + Application object representing the Sphinx process. + what : :obj:`str`, optional + A string specifying the type of the object to which the docstring + belongs. Valid values: "module", "class", "exception", "function", + "method", "attribute". + name : :obj:`str`, optional + The fully qualified name of the object. + obj : module, class, exception, function, method, or attribute + The object to which the docstring belongs. + options : :class:`sphinx.ext.autodoc.Options`, optional + The options given to the directive: an object with attributes + inherited_members, undoc_members, show_inheritance and noindex that + are True if the flag option of same name was given to the auto + directive. + + + Example + ------- + >>> from sphinx.ext.napoleon import Config + >>> config = Config(napoleon_use_param=True, napoleon_use_rtype=True) + >>> docstring = '''One line summary. + ... + ... Extended description. + ... + ... Parameters + ... ---------- + ... arg1 : int + ... Description of `arg1` + ... arg2 : str + ... Description of `arg2` + ... Returns + ... ------- + ... str + ... Description of return value. + ... ''' + >>> print(NumpyDocstring(docstring, config)) + One line summary. + <BLANKLINE> + Extended description. + <BLANKLINE> + :param arg1: Description of `arg1` + :type arg1: int + :param arg2: Description of `arg2` + :type arg2: str + <BLANKLINE> + :returns: Description of return value. + :rtype: str + <BLANKLINE> + + Methods + ------- + __str__() + Return the parsed docstring in reStructuredText format. + + Returns + ------- + str + UTF-8 encoded version of the docstring. + + __unicode__() + Return the parsed docstring in reStructuredText format. + + Returns + ------- + unicode + Unicode version of the docstring. + + lines() + Return the parsed lines of the docstring in reStructuredText format. + + Returns + ------- + list(str) + The lines of the docstring in a list. + + """ + def __init__(self, docstring: Union[str, List[str]], config: SphinxConfig = None, + app: Sphinx = None, what: str = '', name: str = '', + obj: Any = None, options: Any = None) -> None: + self._directive_sections = ['.. index::'] + super().__init__(docstring, config, app, what, name, obj, options) + + def _consume_field(self, parse_type: bool = True, prefer_type: bool = False + ) -> Tuple[str, str, List[str]]: + line = next(self._line_iter) + if parse_type: + _name, _, _type = self._partition_field_on_colon(line) + else: + _name, _type = line, '' + _name, _type = _name.strip(), _type.strip() + _name = self._escape_args_and_kwargs(_name) + + if prefer_type and not _type: + _type, _name = _name, _type + indent = self._get_indent(line) + 1 + _desc = self._dedent(self._consume_indented_block(indent)) + _desc = self.__class__(_desc, self._config).lines() + return _name, _type, _desc + + def _consume_returns_section(self) -> List[Tuple[str, str, List[str]]]: + return self._consume_fields(prefer_type=True) + + def _consume_section_header(self) -> str: + section = next(self._line_iter) + if not _directive_regex.match(section): + # Consume the header underline + next(self._line_iter) + return section + + def _is_section_break(self) -> bool: + line1, line2 = self._line_iter.peek(2) + return (not self._line_iter.has_next() or + self._is_section_header() or + ['', ''] == [line1, line2] or + (self._is_in_section and + line1 and + not self._is_indented(line1, self._section_indent))) + + def _is_section_header(self) -> bool: + section, underline = self._line_iter.peek(2) + section = section.lower() + if section in self._sections and isinstance(underline, str): + return bool(_numpy_section_regex.match(underline)) + elif self._directive_sections: + if _directive_regex.match(section): + for directive_section in self._directive_sections: + if section.startswith(directive_section): + return True + return False + + def _parse_see_also_section(self, section: str) -> List[str]: + lines = self._consume_to_next_section() + try: + return self._parse_numpydoc_see_also_section(lines) + except ValueError: + return self._format_admonition('seealso', lines) + + def _parse_numpydoc_see_also_section(self, content: List[str]) -> List[str]: + """ + Derived from the NumpyDoc implementation of _parse_see_also. + + See Also + -------- + func_name : Descriptive text + continued text + another_func_name : Descriptive text + func_name1, func_name2, :meth:`func_name`, func_name3 + + """ + items = [] + + def parse_item_name(text: str) -> Tuple[str, str]: + """Match ':role:`name`' or 'name'""" + m = self._name_rgx.match(text) + if m: + g = m.groups() + if g[1] is None: + return g[3], None + else: + return g[2], g[1] + raise ValueError("%s is not a item name" % text) + + def push_item(name: str, rest: List[str]) -> None: + if not name: + return + name, role = parse_item_name(name) + items.append((name, list(rest), role)) + del rest[:] + + current_func = None + rest = [] # type: List[str] + + for line in content: + if not line.strip(): + continue + + m = self._name_rgx.match(line) + if m and line[m.end():].strip().startswith(':'): + push_item(current_func, rest) + current_func, line = line[:m.end()], line[m.end():] + rest = [line.split(':', 1)[1].strip()] + if not rest[0]: + rest = [] + elif not line.startswith(' '): + push_item(current_func, rest) + current_func = None + if ',' in line: + for func in line.split(','): + if func.strip(): + push_item(func, []) + elif line.strip(): + current_func = line + elif current_func is not None: + rest.append(line.strip()) + push_item(current_func, rest) + + if not items: + return [] + + roles = { + 'method': 'meth', + 'meth': 'meth', + 'function': 'func', + 'func': 'func', + 'class': 'class', + 'exception': 'exc', + 'exc': 'exc', + 'object': 'obj', + 'obj': 'obj', + 'module': 'mod', + 'mod': 'mod', + 'data': 'data', + 'constant': 'const', + 'const': 'const', + 'attribute': 'attr', + 'attr': 'attr' + } + if self._what is None: + func_role = 'obj' + else: + func_role = roles.get(self._what, '') + lines = [] # type: List[str] + last_had_desc = True + for func, desc, role in items: + if role: + link = ':%s:`%s`' % (role, func) + elif func_role: + link = ':%s:`%s`' % (func_role, func) + else: + link = "`%s`_" % func + if desc or last_had_desc: + lines += [''] + lines += [link] + else: + lines[-1] += ", %s" % link + if desc: + lines += self._indent([' '.join(desc)]) + last_had_desc = True + else: + last_had_desc = False + lines += [''] + + return self._format_admonition('seealso', lines) diff --git a/sphinx/sphinx/ext/napoleon/iterators.py b/sphinx/sphinx/ext/napoleon/iterators.py new file mode 100644 index 0000000..e91a3ec --- /dev/null +++ b/sphinx/sphinx/ext/napoleon/iterators.py @@ -0,0 +1,237 @@ +""" + sphinx.ext.napoleon.iterators + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + A collection of helpful iterators. + + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import collections +from typing import Any, Iterable + + +class peek_iter: + """An iterator object that supports peeking ahead. + + Parameters + ---------- + o : iterable or callable + `o` is interpreted very differently depending on the presence of + `sentinel`. + + If `sentinel` is not given, then `o` must be a collection object + which supports either the iteration protocol or the sequence protocol. + + If `sentinel` is given, then `o` must be a callable object. + + sentinel : any value, optional + If given, the iterator will call `o` with no arguments for each + call to its `next` method; if the value returned is equal to + `sentinel`, :exc:`StopIteration` will be raised, otherwise the + value will be returned. + + See Also + -------- + `peek_iter` can operate as a drop in replacement for the built-in + `iter <https://docs.python.org/3/library/functions.html#iter>`_ function. + + Attributes + ---------- + sentinel + The value used to indicate the iterator is exhausted. If `sentinel` + was not given when the `peek_iter` was instantiated, then it will + be set to a new object instance: ``object()``. + + """ + def __init__(self, *args: Any) -> None: + """__init__(o, sentinel=None)""" + self._iterable = iter(*args) # type: Iterable + self._cache = collections.deque() # type: collections.deque + if len(args) == 2: + self.sentinel = args[1] + else: + self.sentinel = object() + + def __iter__(self) -> "peek_iter": + return self + + def __next__(self, n: int = None) -> Any: + return self.next(n) + + def _fillcache(self, n: int) -> None: + """Cache `n` items. If `n` is 0 or None, then 1 item is cached.""" + if not n: + n = 1 + try: + while len(self._cache) < n: + self._cache.append(next(self._iterable)) # type: ignore + except StopIteration: + while len(self._cache) < n: + self._cache.append(self.sentinel) + + def has_next(self) -> bool: + """Determine if iterator is exhausted. + + Returns + ------- + bool + True if iterator has more items, False otherwise. + + Note + ---- + Will never raise :exc:`StopIteration`. + + """ + return self.peek() != self.sentinel + + def next(self, n: int = None) -> Any: + """Get the next item or `n` items of the iterator. + + Parameters + ---------- + n : int or None + The number of items to retrieve. Defaults to None. + + Returns + ------- + item or list of items + The next item or `n` items of the iterator. If `n` is None, the + item itself is returned. If `n` is an int, the items will be + returned in a list. If `n` is 0, an empty list is returned. + + Raises + ------ + StopIteration + Raised if the iterator is exhausted, even if `n` is 0. + + """ + self._fillcache(n) + if not n: + if self._cache[0] == self.sentinel: + raise StopIteration + if n is None: + result = self._cache.popleft() + else: + result = [] + else: + if self._cache[n - 1] == self.sentinel: + raise StopIteration + result = [self._cache.popleft() for i in range(n)] + return result + + def peek(self, n: int = None) -> Any: + """Preview the next item or `n` items of the iterator. + + The iterator is not advanced when peek is called. + + Returns + ------- + item or list of items + The next item or `n` items of the iterator. If `n` is None, the + item itself is returned. If `n` is an int, the items will be + returned in a list. If `n` is 0, an empty list is returned. + + If the iterator is exhausted, `peek_iter.sentinel` is returned, + or placed as the last item in the returned list. + + Note + ---- + Will never raise :exc:`StopIteration`. + + """ + self._fillcache(n) + if n is None: + result = self._cache[0] + else: + result = [self._cache[i] for i in range(n)] + return result + + +class modify_iter(peek_iter): + """An iterator object that supports modifying items as they are returned. + + Parameters + ---------- + o : iterable or callable + `o` is interpreted very differently depending on the presence of + `sentinel`. + + If `sentinel` is not given, then `o` must be a collection object + which supports either the iteration protocol or the sequence protocol. + + If `sentinel` is given, then `o` must be a callable object. + + sentinel : any value, optional + If given, the iterator will call `o` with no arguments for each + call to its `next` method; if the value returned is equal to + `sentinel`, :exc:`StopIteration` will be raised, otherwise the + value will be returned. + + modifier : callable, optional + The function that will be used to modify each item returned by the + iterator. `modifier` should take a single argument and return a + single value. Defaults to ``lambda x: x``. + + If `sentinel` is not given, `modifier` must be passed as a keyword + argument. + + Attributes + ---------- + modifier : callable + `modifier` is called with each item in `o` as it is iterated. The + return value of `modifier` is returned in lieu of the item. + + Values returned by `peek` as well as `next` are affected by + `modifier`. However, `modify_iter.sentinel` is never passed through + `modifier`; it will always be returned from `peek` unmodified. + + Example + ------- + >>> a = [" A list ", + ... " of strings ", + ... " with ", + ... " extra ", + ... " whitespace. "] + >>> modifier = lambda s: s.strip().replace('with', 'without') + >>> for s in modify_iter(a, modifier=modifier): + ... print('"%s"' % s) + "A list" + "of strings" + "without" + "extra" + "whitespace." + + """ + def __init__(self, *args: Any, **kwargs: Any) -> None: + """__init__(o, sentinel=None, modifier=lambda x: x)""" + if 'modifier' in kwargs: + self.modifier = kwargs['modifier'] + elif len(args) > 2: + self.modifier = args[2] + args = args[:2] + else: + self.modifier = lambda x: x + if not callable(self.modifier): + raise TypeError('modify_iter(o, modifier): ' + 'modifier must be callable') + super().__init__(*args) + + def _fillcache(self, n: int) -> None: + """Cache `n` modified items. If `n` is 0 or None, 1 item is cached. + + Each item returned by the iterator is passed through the + `modify_iter.modified` function before being cached. + + """ + if not n: + n = 1 + try: + while len(self._cache) < n: + self._cache.append(self.modifier(next(self._iterable))) # type: ignore + except StopIteration: + while len(self._cache) < n: + self._cache.append(self.sentinel) diff --git a/sphinx/sphinx/ext/todo.py b/sphinx/sphinx/ext/todo.py new file mode 100644 index 0000000..c5cacc4 --- /dev/null +++ b/sphinx/sphinx/ext/todo.py @@ -0,0 +1,343 @@ +""" + sphinx.ext.todo + ~~~~~~~~~~~~~~~ + + Allow todos to be inserted into your documentation. Inclusion of todos can + be switched of by a configuration variable. The todolist directive collects + all todos of your project and lists them along with a backlink to the + original location. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import warnings +from typing import Any, Dict, Iterable, List, Tuple +from typing import cast + +from docutils import nodes +from docutils.nodes import Element, Node +from docutils.parsers.rst import directives +from docutils.parsers.rst.directives.admonitions import BaseAdmonition + +import sphinx +from sphinx.application import Sphinx +from sphinx.deprecation import RemovedInSphinx40Warning +from sphinx.domains import Domain +from sphinx.environment import BuildEnvironment +from sphinx.errors import NoUri +from sphinx.locale import _, __ +from sphinx.util import logging, texescape +from sphinx.util.docutils import SphinxDirective, new_document +from sphinx.util.nodes import make_refnode +from sphinx.writers.html import HTMLTranslator +from sphinx.writers.latex import LaTeXTranslator + +logger = logging.getLogger(__name__) + + +class todo_node(nodes.Admonition, nodes.Element): + pass + + +class todolist(nodes.General, nodes.Element): + pass + + +class Todo(BaseAdmonition, SphinxDirective): + """ + A todo entry, displayed (if configured) in the form of an admonition. + """ + + node_class = todo_node + has_content = True + required_arguments = 0 + optional_arguments = 0 + final_argument_whitespace = False + option_spec = { + 'class': directives.class_option, + 'name': directives.unchanged, + } + + def run(self) -> List[Node]: + if not self.options.get('class'): + self.options['class'] = ['admonition-todo'] + + (todo,) = super().run() # type: Tuple[Node] + if isinstance(todo, nodes.system_message): + return [todo] + elif isinstance(todo, todo_node): + todo.insert(0, nodes.title(text=_('Todo'))) + todo['docname'] = self.env.docname + self.add_name(todo) + self.set_source_info(todo) + self.state.document.note_explicit_target(todo) + return [todo] + else: + raise RuntimeError # never reached here + + +class TodoDomain(Domain): + name = 'todo' + label = 'todo' + + @property + def todos(self) -> Dict[str, List[todo_node]]: + return self.data.setdefault('todos', {}) + + def clear_doc(self, docname: str) -> None: + self.todos.pop(docname, None) + + def merge_domaindata(self, docnames: List[str], otherdata: Dict) -> None: + for docname in docnames: + self.todos[docname] = otherdata['todos'][docname] + + def process_doc(self, env: BuildEnvironment, docname: str, + document: nodes.document) -> None: + todos = self.todos.setdefault(docname, []) + for todo in document.traverse(todo_node): + env.app.emit('todo-defined', todo) + todos.append(todo) + + if env.config.todo_emit_warnings: + logger.warning(__("TODO entry found: %s"), todo[1].astext(), + location=todo) + + +def process_todos(app: Sphinx, doctree: nodes.document) -> None: + warnings.warn('process_todos() is deprecated.', RemovedInSphinx40Warning) + # collect all todos in the environment + # this is not done in the directive itself because it some transformations + # must have already been run, e.g. substitutions + env = app.builder.env + if not hasattr(env, 'todo_all_todos'): + env.todo_all_todos = [] # type: ignore + for node in doctree.traverse(todo_node): + app.events.emit('todo-defined', node) + + newnode = node.deepcopy() + newnode['ids'] = [] + env.todo_all_todos.append({ # type: ignore + 'docname': env.docname, + 'source': node.source or env.doc2path(env.docname), + 'lineno': node.line, + 'todo': newnode, + 'target': node['ids'][0], + }) + + if env.config.todo_emit_warnings: + label = cast(nodes.Element, node[1]) + logger.warning(__("TODO entry found: %s"), label.astext(), + location=node) + + +class TodoList(SphinxDirective): + """ + A list of all todo entries. + """ + + has_content = False + required_arguments = 0 + optional_arguments = 0 + final_argument_whitespace = False + option_spec = {} # type: Dict + + def run(self) -> List[Node]: + # Simply insert an empty todolist node which will be replaced later + # when process_todo_nodes is called + return [todolist('')] + + +class TodoListProcessor: + def __init__(self, app: Sphinx, doctree: nodes.document, docname: str) -> None: + self.builder = app.builder + self.config = app.config + self.env = app.env + self.domain = cast(TodoDomain, app.env.get_domain('todo')) + + self.process(doctree, docname) + + def process(self, doctree: nodes.document, docname: str) -> None: + todos = sum(self.domain.todos.values(), []) # type: List[todo_node] + document = new_document('') + for node in doctree.traverse(todolist): + if not self.config.todo_include_todos: + node.parent.remove(node) + continue + + if node.get('ids'): + content = [nodes.target()] # type: List[Element] + else: + content = [] + + for todo in todos: + # Create a copy of the todo node + new_todo = todo.deepcopy() + new_todo['ids'].clear() + + # (Recursively) resolve references in the todo content + # + # Note: To resolve references, it is needed to wrap it with document node + document += new_todo + self.env.resolve_references(document, todo['docname'], self.builder) + document.remove(new_todo) + content.append(new_todo) + + todo_ref = self.create_todo_reference(todo, docname) + content.append(todo_ref) + + node.replace_self(content) + + def create_todo_reference(self, todo: todo_node, docname: str) -> nodes.paragraph: + if self.config.todo_link_only: + description = _('<<original entry>>') + else: + description = (_('(The <<original entry>> is located in %s, line %d.)') % + (todo.source, todo.line)) + + prefix = description[:description.find('<<')] + suffix = description[description.find('>>') + 2:] + + para = nodes.paragraph(classes=['todo-source']) + para += nodes.Text(prefix, prefix) + + # Create a reference + linktext = nodes.emphasis(_('original entry'), _('original entry')) + reference = nodes.reference('', '', linktext, internal=True) + try: + reference['refuri'] = self.builder.get_relative_uri(docname, todo['docname']) + reference['refuri'] += '#' + todo['ids'][0] + except NoUri: + # ignore if no URI can be determined, e.g. for LaTeX output + pass + + para += reference + para += nodes.Text(suffix, suffix) + + return para + + +def process_todo_nodes(app: Sphinx, doctree: nodes.document, fromdocname: str) -> None: + """Replace all todolist nodes with a list of the collected todos. + Augment each todo with a backlink to the original location. + """ + warnings.warn('process_todo_nodes() is deprecated.', RemovedInSphinx40Warning) + + domain = cast(TodoDomain, app.env.get_domain('todo')) + todos = sum(domain.todos.values(), []) # type: List[todo_node] + + for node in doctree.traverse(todolist): + if node.get('ids'): + content = [nodes.target()] # type: List[Element] + else: + content = [] + + if not app.config['todo_include_todos']: + node.replace_self(content) + continue + + for todo_info in todos: + para = nodes.paragraph(classes=['todo-source']) + if app.config['todo_link_only']: + description = _('<<original entry>>') + else: + description = ( + _('(The <<original entry>> is located in %s, line %d.)') % + (todo_info.source, todo_info.line) + ) + desc1 = description[:description.find('<<')] + desc2 = description[description.find('>>') + 2:] + para += nodes.Text(desc1, desc1) + + # Create a reference + innernode = nodes.emphasis(_('original entry'), _('original entry')) + try: + para += make_refnode(app.builder, fromdocname, todo_info['docname'], + todo_info['ids'][0], innernode) + except NoUri: + # ignore if no URI can be determined, e.g. for LaTeX output + pass + para += nodes.Text(desc2, desc2) + + todo_entry = todo_info.deepcopy() + todo_entry['ids'].clear() + + # (Recursively) resolve references in the todo content + app.env.resolve_references(todo_entry, todo_info['docname'], app.builder) # type: ignore # NOQA + + # Insert into the todolist + content.append(todo_entry) + content.append(para) + + node.replace_self(content) + + +def purge_todos(app: Sphinx, env: BuildEnvironment, docname: str) -> None: + warnings.warn('purge_todos() is deprecated.', RemovedInSphinx40Warning) + if not hasattr(env, 'todo_all_todos'): + return + env.todo_all_todos = [todo for todo in env.todo_all_todos # type: ignore + if todo['docname'] != docname] + + +def merge_info(app: Sphinx, env: BuildEnvironment, docnames: Iterable[str], + other: BuildEnvironment) -> None: + warnings.warn('merge_info() is deprecated.', RemovedInSphinx40Warning) + if not hasattr(other, 'todo_all_todos'): + return + if not hasattr(env, 'todo_all_todos'): + env.todo_all_todos = [] # type: ignore + env.todo_all_todos.extend(other.todo_all_todos) # type: ignore + + +def visit_todo_node(self: HTMLTranslator, node: todo_node) -> None: + if self.config.todo_include_todos: + self.visit_admonition(node) + else: + raise nodes.SkipNode + + +def depart_todo_node(self: HTMLTranslator, node: todo_node) -> None: + self.depart_admonition(node) + + +def latex_visit_todo_node(self: LaTeXTranslator, node: todo_node) -> None: + if self.config.todo_include_todos: + self.body.append('\n\\begin{sphinxadmonition}{note}{') + self.body.append(self.hypertarget_to(node)) + + title_node = cast(nodes.title, node[0]) + title = texescape.escape(title_node.astext(), self.config.latex_engine) + self.body.append('%s:}' % title) + node.pop(0) + else: + raise nodes.SkipNode + + +def latex_depart_todo_node(self: LaTeXTranslator, node: todo_node) -> None: + self.body.append('\\end{sphinxadmonition}\n') + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_event('todo-defined') + app.add_config_value('todo_include_todos', False, 'html') + app.add_config_value('todo_link_only', False, 'html') + app.add_config_value('todo_emit_warnings', False, 'html') + + app.add_node(todolist) + app.add_node(todo_node, + html=(visit_todo_node, depart_todo_node), + latex=(latex_visit_todo_node, latex_depart_todo_node), + text=(visit_todo_node, depart_todo_node), + man=(visit_todo_node, depart_todo_node), + texinfo=(visit_todo_node, depart_todo_node)) + + app.add_directive('todo', Todo) + app.add_directive('todolist', TodoList) + app.add_domain(TodoDomain) + app.connect('doctree-resolved', TodoListProcessor) + return { + 'version': sphinx.__display_version__, + 'env_version': 2, + 'parallel_read_safe': True + } diff --git a/sphinx/sphinx/ext/viewcode.py b/sphinx/sphinx/ext/viewcode.py new file mode 100644 index 0000000..dc24a19 --- /dev/null +++ b/sphinx/sphinx/ext/viewcode.py @@ -0,0 +1,252 @@ +""" + sphinx.ext.viewcode + ~~~~~~~~~~~~~~~~~~~ + + Add links to module code in Python object descriptions. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import traceback +from typing import Any, Dict, Iterable, Iterator, Set, Tuple + +from docutils import nodes +from docutils.nodes import Element, Node + +import sphinx +from sphinx import addnodes +from sphinx.application import Sphinx +from sphinx.environment import BuildEnvironment +from sphinx.locale import _, __ +from sphinx.pycode import ModuleAnalyzer +from sphinx.util import get_full_modname, logging, status_iterator +from sphinx.util.nodes import make_refnode + + +logger = logging.getLogger(__name__) + + +def _get_full_modname(app: Sphinx, modname: str, attribute: str) -> str: + try: + return get_full_modname(modname, attribute) + except AttributeError: + # sphinx.ext.viewcode can't follow class instance attribute + # then AttributeError logging output only verbose mode. + logger.verbose('Didn\'t find %s in %s', attribute, modname) + return None + except Exception as e: + # sphinx.ext.viewcode follow python domain directives. + # because of that, if there are no real modules exists that specified + # by py:function or other directives, viewcode emits a lot of warnings. + # It should be displayed only verbose mode. + logger.verbose(traceback.format_exc().rstrip()) + logger.verbose('viewcode can\'t import %s, failed with error "%s"', modname, e) + return None + + +def doctree_read(app: Sphinx, doctree: Node) -> None: + env = app.builder.env + if not hasattr(env, '_viewcode_modules'): + env._viewcode_modules = {} # type: ignore + if app.builder.name == "singlehtml": + return + if app.builder.name.startswith("epub") and not env.config.viewcode_enable_epub: + return + + def has_tag(modname: str, fullname: str, docname: str, refname: str) -> bool: + entry = env._viewcode_modules.get(modname, None) # type: ignore + if entry is False: + return False + + code_tags = app.emit_firstresult('viewcode-find-source', modname) + if code_tags is None: + try: + analyzer = ModuleAnalyzer.for_module(modname) + analyzer.find_tags() + except Exception: + env._viewcode_modules[modname] = False # type: ignore + return False + + code = analyzer.code + tags = analyzer.tags + else: + code, tags = code_tags + + if entry is None or entry[0] != code: + entry = code, tags, {}, refname + env._viewcode_modules[modname] = entry # type: ignore + _, tags, used, _ = entry + if fullname in tags: + used[fullname] = docname + return True + + return False + + for objnode in doctree.traverse(addnodes.desc): + if objnode.get('domain') != 'py': + continue + names = set() # type: Set[str] + for signode in objnode: + if not isinstance(signode, addnodes.desc_signature): + continue + modname = signode.get('module') + fullname = signode.get('fullname') + refname = modname + if env.config.viewcode_follow_imported_members: + new_modname = app.emit_firstresult( + 'viewcode-follow-imported', modname, fullname, + ) + if not new_modname: + new_modname = _get_full_modname(app, modname, fullname) + modname = new_modname + if not modname: + continue + fullname = signode.get('fullname') + if not has_tag(modname, fullname, env.docname, refname): + continue + if fullname in names: + # only one link per name, please + continue + names.add(fullname) + pagename = '_modules/' + modname.replace('.', '/') + inline = nodes.inline('', _('[source]'), classes=['viewcode-link']) + onlynode = addnodes.only(expr='html') + onlynode += addnodes.pending_xref('', inline, reftype='viewcode', refdomain='std', + refexplicit=False, reftarget=pagename, + refid=fullname, refdoc=env.docname) + signode += onlynode + + +def env_merge_info(app: Sphinx, env: BuildEnvironment, docnames: Iterable[str], + other: BuildEnvironment) -> None: + if not hasattr(other, '_viewcode_modules'): + return + # create a _viewcode_modules dict on the main environment + if not hasattr(env, '_viewcode_modules'): + env._viewcode_modules = {} # type: ignore + # now merge in the information from the subprocess + env._viewcode_modules.update(other._viewcode_modules) # type: ignore + + +def missing_reference(app: Sphinx, env: BuildEnvironment, node: Element, contnode: Node + ) -> Node: + # resolve our "viewcode" reference nodes -- they need special treatment + if node['reftype'] == 'viewcode': + return make_refnode(app.builder, node['refdoc'], node['reftarget'], + node['refid'], contnode) + + return None + + +def collect_pages(app: Sphinx) -> Iterator[Tuple[str, Dict[str, Any], str]]: + env = app.builder.env + if not hasattr(env, '_viewcode_modules'): + return + highlighter = app.builder.highlighter # type: ignore + urito = app.builder.get_relative_uri + + modnames = set(env._viewcode_modules) # type: ignore + + for modname, entry in status_iterator( + sorted(env._viewcode_modules.items()), # type: ignore + __('highlighting module code... '), "blue", + len(env._viewcode_modules), # type: ignore + app.verbosity, lambda x: x[0]): + if not entry: + continue + code, tags, used, refname = entry + # construct a page name for the highlighted source + pagename = '_modules/' + modname.replace('.', '/') + # highlight the source using the builder's highlighter + if env.config.highlight_language in ('python3', 'default', 'none'): + lexer = env.config.highlight_language + else: + lexer = 'python' + highlighted = highlighter.highlight_block(code, lexer, linenos=False) + # split the code into lines + lines = highlighted.splitlines() + # split off wrap markup from the first line of the actual code + before, after = lines[0].split('<pre>') + lines[0:1] = [before + '<pre>', after] + # nothing to do for the last line; it always starts with </pre> anyway + # now that we have code lines (starting at index 1), insert anchors for + # the collected tags (HACK: this only works if the tag boundaries are + # properly nested!) + maxindex = len(lines) - 1 + for name, docname in used.items(): + type, start, end = tags[name] + backlink = urito(pagename, docname) + '#' + refname + '.' + name + lines[start] = ( + '<div class="viewcode-block" id="%s"><a class="viewcode-back" ' + 'href="%s">%s</a>' % (name, backlink, _('[docs]')) + + lines[start]) + lines[min(end, maxindex)] += '</div>' + # try to find parents (for submodules) + parents = [] + parent = modname + while '.' in parent: + parent = parent.rsplit('.', 1)[0] + if parent in modnames: + parents.append({ + 'link': urito(pagename, '_modules/' + + parent.replace('.', '/')), + 'title': parent}) + parents.append({'link': urito(pagename, '_modules/index'), + 'title': _('Module code')}) + parents.reverse() + # putting it all together + context = { + 'parents': parents, + 'title': modname, + 'body': (_('<h1>Source code for %s</h1>') % modname + + '\n'.join(lines)), + } + yield (pagename, context, 'page.html') + + if not modnames: + return + + html = ['\n'] + # the stack logic is needed for using nested lists for submodules + stack = [''] + for modname in sorted(modnames): + if modname.startswith(stack[-1]): + stack.append(modname + '.') + html.append('<ul>') + else: + stack.pop() + while not modname.startswith(stack[-1]): + stack.pop() + html.append('</ul>') + stack.append(modname + '.') + html.append('<li><a href="%s">%s</a></li>\n' % ( + urito('_modules/index', '_modules/' + modname.replace('.', '/')), + modname)) + html.append('</ul>' * (len(stack) - 1)) + context = { + 'title': _('Overview: module code'), + 'body': (_('<h1>All modules for which code is available</h1>') + + ''.join(html)), + } + + yield ('_modules/index', context, 'page.html') + + +def setup(app: Sphinx) -> Dict[str, Any]: + app.add_config_value('viewcode_import', None, False) + app.add_config_value('viewcode_enable_epub', False, False) + app.add_config_value('viewcode_follow_imported_members', True, False) + app.connect('doctree-read', doctree_read) + app.connect('env-merge-info', env_merge_info) + app.connect('html-collect-pages', collect_pages) + app.connect('missing-reference', missing_reference) + # app.add_config_value('viewcode_include_modules', [], 'env') + # app.add_config_value('viewcode_exclude_modules', [], 'env') + app.add_event('viewcode-find-source') + app.add_event('viewcode-follow-imported') + return { + 'version': sphinx.__display_version__, + 'env_version': 1, + 'parallel_read_safe': True + } diff --git a/sphinx/sphinx/extension.py b/sphinx/sphinx/extension.py new file mode 100644 index 0000000..fa7a0d4 --- /dev/null +++ b/sphinx/sphinx/extension.py @@ -0,0 +1,69 @@ +""" + sphinx.extension + ~~~~~~~~~~~~~~~~ + + Utilities for Sphinx extensions. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Any, Dict + +from sphinx.config import Config +from sphinx.errors import VersionRequirementError +from sphinx.locale import __ +from sphinx.util import logging + +if False: + # For type annotation + from sphinx.application import Sphinx + +logger = logging.getLogger(__name__) + + +class Extension: + def __init__(self, name: str, module: Any, **kwargs: Any) -> None: + self.name = name + self.module = module + self.metadata = kwargs + self.version = kwargs.pop('version', 'unknown version') + + # The extension supports parallel read or not. The default value + # is ``None``. It means the extension does not tell the status. + # It will be warned on parallel reading. + self.parallel_read_safe = kwargs.pop('parallel_read_safe', None) + + # The extension supports parallel write or not. The default value + # is ``True``. Sphinx writes parallelly documents even if + # the extension does not tell its status. + self.parallel_write_safe = kwargs.pop('parallel_write_safe', True) + + +def verify_needs_extensions(app: "Sphinx", config: Config) -> None: + """Verify the required Sphinx extensions are loaded.""" + if config.needs_extensions is None: + return + + for extname, reqversion in config.needs_extensions.items(): + extension = app.extensions.get(extname) + if extension is None: + logger.warning(__('The %s extension is required by needs_extensions settings, ' + 'but it is not loaded.'), extname) + continue + + if extension.version == 'unknown version' or reqversion > extension.version: + raise VersionRequirementError(__('This project needs the extension %s at least in ' + 'version %s and therefore cannot be built with ' + 'the loaded version (%s).') % + (extname, reqversion, extension.version)) + + +def setup(app: "Sphinx") -> Dict[str, Any]: + app.connect('config-inited', verify_needs_extensions, priority=800) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/highlighting.py b/sphinx/sphinx/highlighting.py new file mode 100644 index 0000000..4dc9ce5 --- /dev/null +++ b/sphinx/sphinx/highlighting.py @@ -0,0 +1,165 @@ +""" + sphinx.highlighting + ~~~~~~~~~~~~~~~~~~~ + + Highlight code blocks using Pygments. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from functools import partial +from importlib import import_module +from typing import Any, Dict + +from pygments import highlight +from pygments.filters import ErrorToken +from pygments.formatter import Formatter +from pygments.formatters import HtmlFormatter, LatexFormatter +from pygments.lexer import Lexer +from pygments.lexers import get_lexer_by_name, guess_lexer +from pygments.lexers import PythonLexer, Python3Lexer, PythonConsoleLexer, \ + CLexer, TextLexer, RstLexer +from pygments.style import Style +from pygments.styles import get_style_by_name +from pygments.util import ClassNotFound + +from sphinx.locale import __ +from sphinx.pygments_styles import SphinxStyle, NoneStyle +from sphinx.util import logging, texescape + + +logger = logging.getLogger(__name__) + +lexers = {} # type: Dict[str, Lexer] +lexer_classes = { + 'none': partial(TextLexer, stripnl=False), + 'python': partial(PythonLexer, stripnl=False), + 'python3': partial(Python3Lexer, stripnl=False), + 'pycon': partial(PythonConsoleLexer, stripnl=False), + 'pycon3': partial(PythonConsoleLexer, python3=True, stripnl=False), + 'rest': partial(RstLexer, stripnl=False), + 'c': partial(CLexer, stripnl=False), +} # type: Dict[str, Lexer] + + +escape_hl_chars = {ord('\\'): '\\PYGZbs{}', + ord('{'): '\\PYGZob{}', + ord('}'): '\\PYGZcb{}'} + +# used if Pygments is available +# use textcomp quote to get a true single quote +_LATEX_ADD_STYLES = r''' +\renewcommand\PYGZsq{\textquotesingle} +''' + + +class PygmentsBridge: + # Set these attributes if you want to have different Pygments formatters + # than the default ones. + html_formatter = HtmlFormatter + latex_formatter = LatexFormatter + + def __init__(self, dest: str = 'html', stylename: str = 'sphinx', + latex_engine: str = None) -> None: + self.dest = dest + self.latex_engine = latex_engine + + style = self.get_style(stylename) + self.formatter_args = {'style': style} # type: Dict[str, Any] + if dest == 'html': + self.formatter = self.html_formatter + else: + self.formatter = self.latex_formatter + self.formatter_args['commandprefix'] = 'PYG' + + def get_style(self, stylename: str) -> Style: + if stylename is None or stylename == 'sphinx': + return SphinxStyle + elif stylename == 'none': + return NoneStyle + elif '.' in stylename: + module, stylename = stylename.rsplit('.', 1) + return getattr(import_module(module), stylename) + else: + return get_style_by_name(stylename) + + def get_formatter(self, **kwargs: Any) -> Formatter: + kwargs.update(self.formatter_args) + return self.formatter(**kwargs) + + def get_lexer(self, source: str, lang: str, opts: Dict = None, + force: bool = False, location: Any = None) -> Lexer: + if not opts: + opts = {} + + # find out which lexer to use + if lang in ('py', 'python'): + if source.startswith('>>>'): + # interactive session + lang = 'pycon' + else: + lang = 'python' + elif lang in ('py3', 'python3', 'default'): + if source.startswith('>>>'): + lang = 'pycon3' + else: + lang = 'python3' + + if lang in lexers: + # just return custom lexers here (without installing raiseonerror filter) + return lexers[lang] + elif lang in lexer_classes: + lexer = lexer_classes[lang](**opts) + else: + try: + if lang == 'guess': + lexer = guess_lexer(source, **opts) + else: + lexer = get_lexer_by_name(lang, **opts) + except ClassNotFound: + logger.warning(__('Pygments lexer name %r is not known'), lang, + location=location) + lexer = lexer_classes['none'](**opts) + + if not force: + lexer.add_filter('raiseonerror') + + return lexer + + def highlight_block(self, source: str, lang: str, opts: Dict = None, + force: bool = False, location: Any = None, **kwargs: Any) -> str: + if not isinstance(source, str): + source = source.decode() + + lexer = self.get_lexer(source, lang, opts, force, location) + + # highlight via Pygments + formatter = self.get_formatter(**kwargs) + try: + hlsource = highlight(source, lexer, formatter) + except ErrorToken: + # this is most probably not the selected language, + # so let it pass unhighlighted + if lang == 'default': + pass # automatic highlighting failed. + else: + logger.warning(__('Could not lex literal_block as "%s". ' + 'Highlighting skipped.'), lang, + type='misc', subtype='highlighting_failure', + location=location) + lexer = self.get_lexer(source, 'none', opts, force, location) + hlsource = highlight(source, lexer, formatter) + + if self.dest == 'html': + return hlsource + else: + # MEMO: this is done to escape Unicode chars with non-Unicode engines + return texescape.hlescape(hlsource, self.latex_engine) + + def get_stylesheet(self) -> str: + formatter = self.get_formatter() + if self.dest == 'html': + return formatter.get_style_defs('.highlight') + else: + return formatter.get_style_defs() + _LATEX_ADD_STYLES diff --git a/sphinx/sphinx/io.py b/sphinx/sphinx/io.py new file mode 100644 index 0000000..18b4f05 --- /dev/null +++ b/sphinx/sphinx/io.py @@ -0,0 +1,230 @@ +""" + sphinx.io + ~~~~~~~~~ + + Input/Output files + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" +import codecs +import warnings +from typing import Any, List +from typing import Type # for python3.5.1 + +from docutils import nodes +from docutils.core import Publisher +from docutils.frontend import Values +from docutils.io import FileInput, Input, NullOutput +from docutils.parsers import Parser +from docutils.parsers.rst import Parser as RSTParser +from docutils.readers import standalone +from docutils.transforms import Transform +from docutils.transforms.references import DanglingReferences +from docutils.writers import UnfilteredWriter + +from sphinx.deprecation import RemovedInSphinx40Warning, deprecated_alias +from sphinx.environment import BuildEnvironment +from sphinx.errors import FiletypeNotFoundError +from sphinx.transforms import ( + AutoIndexUpgrader, DoctreeReadEvent, FigureAligner, SphinxTransformer +) +from sphinx.transforms.i18n import ( + PreserveTranslatableMessages, Locale, RemoveTranslatableInline, +) +from sphinx.transforms.references import SphinxDomains +from sphinx.util import logging, get_filetype +from sphinx.util import UnicodeDecodeErrorHandler +from sphinx.util.docutils import LoggingReporter +from sphinx.versioning import UIDTransform + +if False: + # For type annotation + from sphinx.application import Sphinx + + +logger = logging.getLogger(__name__) + + +class SphinxBaseReader(standalone.Reader): + """ + A base class of readers for Sphinx. + + This replaces reporter by Sphinx's on generating document. + """ + + transforms = [] # type: List[Type[Transform]] + + def __init__(self, *args: Any, **kwargs: Any) -> None: + from sphinx.application import Sphinx + if len(args) > 0 and isinstance(args[0], Sphinx): + self._app = args[0] + self._env = self._app.env + args = args[1:] + + super().__init__(*args, **kwargs) + + @property + def app(self) -> "Sphinx": + warnings.warn('SphinxBaseReader.app is deprecated.', + RemovedInSphinx40Warning, stacklevel=2) + return self._app + + @property + def env(self) -> BuildEnvironment: + warnings.warn('SphinxBaseReader.env is deprecated.', + RemovedInSphinx40Warning, stacklevel=2) + return self._env + + def setup(self, app: "Sphinx") -> None: + self._app = app # hold application object only for compatibility + self._env = app.env + + def get_transforms(self) -> List[Type[Transform]]: + transforms = super().get_transforms() + self.transforms + + # remove transforms which is not needed for Sphinx + unused = [DanglingReferences] + for transform in unused: + if transform in transforms: + transforms.remove(transform) + + return transforms + + def new_document(self) -> nodes.document: + """Creates a new document object which having a special reporter object good + for logging. + """ + document = super().new_document() + + # substitute transformer + document.transformer = SphinxTransformer(document) + document.transformer.set_environment(self.settings.env) + + # substitute reporter + reporter = document.reporter + document.reporter = LoggingReporter.from_reporter(reporter) + + return document + + +class SphinxStandaloneReader(SphinxBaseReader): + """ + A basic document reader for Sphinx. + """ + + def setup(self, app: "Sphinx") -> None: + self.transforms = self.transforms + app.registry.get_transforms() + super().setup(app) + + def read(self, source: Input, parser: Parser, settings: Values) -> nodes.document: + self.source = source + if not self.parser: + self.parser = parser + self.settings = settings + self.input = self.read_source(settings.env) + self.parse() + return self.document + + def read_source(self, env: BuildEnvironment) -> str: + """Read content from source and do post-process.""" + content = self.source.read() + + # emit "source-read" event + arg = [content] + env.events.emit('source-read', env.docname, arg) + return arg[0] + + +class SphinxI18nReader(SphinxBaseReader): + """ + A document reader for i18n. + + This returns the source line number of original text as current source line number + to let users know where the error happened. + Because the translated texts are partial and they don't have correct line numbers. + """ + + def setup(self, app: "Sphinx") -> None: + super().setup(app) + + self.transforms = self.transforms + app.registry.get_transforms() + unused = [PreserveTranslatableMessages, Locale, RemoveTranslatableInline, + AutoIndexUpgrader, FigureAligner, SphinxDomains, DoctreeReadEvent, + UIDTransform] + for transform in unused: + if transform in self.transforms: + self.transforms.remove(transform) + + +class SphinxDummyWriter(UnfilteredWriter): + """Dummy writer module used for generating doctree.""" + + supported = ('html',) # needed to keep "meta" nodes + + def translate(self) -> None: + pass + + +def SphinxDummySourceClass(source: Any, *args: Any, **kwargs: Any) -> Any: + """Bypass source object as is to cheat Publisher.""" + return source + + +class SphinxFileInput(FileInput): + """A basic FileInput for Sphinx.""" + def __init__(self, *args: Any, **kwargs: Any) -> None: + kwargs['error_handler'] = 'sphinx' + super().__init__(*args, **kwargs) + + +def read_doc(app: "Sphinx", env: BuildEnvironment, filename: str) -> nodes.document: + """Parse a document and convert to doctree.""" + # set up error_handler for the target document + error_handler = UnicodeDecodeErrorHandler(env.docname) + codecs.register_error('sphinx', error_handler) # type: ignore + + reader = SphinxStandaloneReader() + reader.setup(app) + filetype = get_filetype(app.config.source_suffix, filename) + parser = app.registry.create_source_parser(app, filetype) + if parser.__class__.__name__ == 'CommonMarkParser' and parser.settings_spec == (): + # a workaround for recommonmark + # If recommonmark.AutoStrictify is enabled, the parser invokes reST parser + # internally. But recommonmark-0.4.0 does not provide settings_spec for reST + # parser. As a workaround, this copies settings_spec for RSTParser to the + # CommonMarkParser. + parser.settings_spec = RSTParser.settings_spec + + input_class = app.registry.get_source_input(filetype) + if input_class: + # Sphinx-1.8 style + source = input_class(app, env, source=None, source_path=filename, # type: ignore + encoding=env.config.source_encoding) + pub = Publisher(reader=reader, + parser=parser, + writer=SphinxDummyWriter(), + source_class=SphinxDummySourceClass, # type: ignore + destination=NullOutput()) + pub.process_programmatic_settings(None, env.settings, None) + pub.set_source(source, filename) + else: + # Sphinx-2.0 style + pub = Publisher(reader=reader, + parser=parser, + writer=SphinxDummyWriter(), + source_class=SphinxFileInput, + destination=NullOutput()) + pub.process_programmatic_settings(None, env.settings, None) + pub.set_source(source_path=filename) + + pub.publish() + return pub.document + + +deprecated_alias('sphinx.io', + { + 'FiletypeNotFoundError': FiletypeNotFoundError, + 'get_filetype': get_filetype, + }, + RemovedInSphinx40Warning) diff --git a/sphinx/sphinx/jinja2glue.py b/sphinx/sphinx/jinja2glue.py new file mode 100644 index 0000000..e943cfb --- /dev/null +++ b/sphinx/sphinx/jinja2glue.py @@ -0,0 +1,213 @@ +""" + sphinx.jinja2glue + ~~~~~~~~~~~~~~~~~ + + Glue code for the jinja2 templating engine. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from os import path +from pprint import pformat +from typing import Any, Callable, Dict, Iterator, List, Tuple, Union + +from jinja2 import FileSystemLoader, BaseLoader, TemplateNotFound, contextfunction +from jinja2.environment import Environment +from jinja2.sandbox import SandboxedEnvironment +from jinja2.utils import open_if_exists + +from sphinx.application import TemplateBridge +from sphinx.theming import Theme +from sphinx.util import logging +from sphinx.util.osutil import mtimes_of_files + +if False: + # For type annotation + from sphinx.builders import Builder + + +def _tobool(val: str) -> bool: + if isinstance(val, str): + return val.lower() in ('true', '1', 'yes', 'on') + return bool(val) + + +def _toint(val: str) -> int: + try: + return int(val) + except ValueError: + return 0 + + +def _todim(val: Union[int, str]) -> str: + """ + Make val a css dimension. In particular the following transformations + are performed: + + - None -> 'initial' (default CSS value) + - 0 -> '0' + - ints and string representations of ints are interpreted as pixels. + + Everything else is returned unchanged. + """ + if val is None: + return 'initial' + elif str(val).isdigit(): + return '0' if int(val) == 0 else '%spx' % val + return val # type: ignore + + +def _slice_index(values: List, slices: int) -> Iterator[List]: + seq = list(values) + length = 0 + for value in values: + length += 1 + len(value[1][1]) # count includes subitems + items_per_slice = length // slices + offset = 0 + for slice_number in range(slices): + count = 0 + start = offset + if slices == slice_number + 1: # last column + offset = len(seq) + else: + for value in values[offset:]: + count += 1 + len(value[1][1]) + offset += 1 + if count >= items_per_slice: + break + yield seq[start:offset] + + +def accesskey(context: Any, key: str) -> str: + """Helper to output each access key only once.""" + if '_accesskeys' not in context: + context.vars['_accesskeys'] = {} + if key and key not in context.vars['_accesskeys']: + context.vars['_accesskeys'][key] = 1 + return 'accesskey="%s"' % key + return '' + + +class idgen: + def __init__(self) -> None: + self.id = 0 + + def current(self) -> int: + return self.id + + def __next__(self) -> int: + self.id += 1 + return self.id + next = __next__ # Python 2/Jinja compatibility + + +@contextfunction +def warning(context: Dict, message: str, *args: Any, **kwargs: Any) -> str: + if 'pagename' in context: + filename = context.get('pagename') + context.get('file_suffix', '') + message = 'in rendering %s: %s' % (filename, message) + logger = logging.getLogger('sphinx.themes') + logger.warning(message, *args, **kwargs) + return '' # return empty string not to output any values + + +class SphinxFileSystemLoader(FileSystemLoader): + """ + FileSystemLoader subclass that is not so strict about '..' entries in + template names. + """ + + def get_source(self, environment: Environment, template: str) -> Tuple[str, str, Callable]: + for searchpath in self.searchpath: + filename = path.join(searchpath, template) + f = open_if_exists(filename) + if f is None: + continue + with f: + contents = f.read().decode(self.encoding) + + mtime = path.getmtime(filename) + + def uptodate() -> bool: + try: + return path.getmtime(filename) == mtime + except OSError: + return False + return contents, filename, uptodate + raise TemplateNotFound(template) + + +class BuiltinTemplateLoader(TemplateBridge, BaseLoader): + """ + Interfaces the rendering environment of jinja2 for use in Sphinx. + """ + + # TemplateBridge interface + + def init(self, builder: "Builder", theme: Theme = None, dirs: List[str] = None) -> None: + # create a chain of paths to search + if theme: + # the theme's own dir and its bases' dirs + pathchain = theme.get_theme_dirs() + # the loader dirs: pathchain + the parent directories for all themes + loaderchain = pathchain + [path.join(p, '..') for p in pathchain] + elif dirs: + pathchain = list(dirs) + loaderchain = list(dirs) + else: + pathchain = [] + loaderchain = [] + + # prepend explicit template paths + self.templatepathlen = len(builder.config.templates_path) + if builder.config.templates_path: + cfg_templates_path = [path.join(builder.confdir, tp) + for tp in builder.config.templates_path] + pathchain[0:0] = cfg_templates_path + loaderchain[0:0] = cfg_templates_path + + # store it for use in newest_template_mtime + self.pathchain = pathchain + + # make the paths into loaders + self.loaders = [SphinxFileSystemLoader(x) for x in loaderchain] + + use_i18n = builder.app.translator is not None + extensions = ['jinja2.ext.i18n'] if use_i18n else [] + self.environment = SandboxedEnvironment(loader=self, + extensions=extensions) + self.environment.filters['tobool'] = _tobool + self.environment.filters['toint'] = _toint + self.environment.filters['todim'] = _todim + self.environment.filters['slice_index'] = _slice_index + self.environment.globals['debug'] = contextfunction(pformat) + self.environment.globals['warning'] = warning + self.environment.globals['accesskey'] = contextfunction(accesskey) + self.environment.globals['idgen'] = idgen + if use_i18n: + self.environment.install_gettext_translations(builder.app.translator) # type: ignore # NOQA + + def render(self, template: str, context: Dict) -> str: # type: ignore + return self.environment.get_template(template).render(context) + + def render_string(self, source: str, context: Dict) -> str: + return self.environment.from_string(source).render(context) + + def newest_template_mtime(self) -> float: + return max(mtimes_of_files(self.pathchain, '.html')) + + # Loader interface + + def get_source(self, environment: Environment, template: str) -> Tuple[str, str, Callable]: + loaders = self.loaders + # exclamation mark starts search from theme + if template.startswith('!'): + loaders = loaders[self.templatepathlen:] + template = template[1:] + for loader in loaders: + try: + return loader.get_source(environment, template) + except TemplateNotFound: + pass + raise TemplateNotFound(template) diff --git a/sphinx/sphinx/locale/__init__.py b/sphinx/sphinx/locale/__init__.py new file mode 100644 index 0000000..9812355 --- /dev/null +++ b/sphinx/sphinx/locale/__init__.py @@ -0,0 +1,266 @@ +""" + sphinx.locale + ~~~~~~~~~~~~~ + + Locale utilities. + + :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import gettext +import locale +from collections import UserString, defaultdict +from gettext import NullTranslations +from typing import Any, Callable, Dict, Iterable, List, Tuple, Union + + +class _TranslationProxy(UserString): + """ + Class for proxy strings from gettext translations. This is a helper for the + lazy_* functions from this module. + + The proxy implementation attempts to be as complete as possible, so that + the lazy objects should mostly work as expected, for example for sorting. + + This inherits from UserString because some docutils versions use UserString + for their Text nodes, which then checks its argument for being either a + basestring or UserString, otherwise calls str() -- not unicode() -- on it. + """ + __slots__ = ('_func', '_args') + + def __new__(cls, func: Callable, *args: str) -> object: # type: ignore + if not args: + # not called with "function" and "arguments", but a plain string + return str(func) + return object.__new__(cls) + + def __getnewargs__(self) -> Tuple[str]: + return (self._func,) + self._args # type: ignore + + def __init__(self, func: Callable, *args: str) -> None: + self._func = func + self._args = args + + @property + def data(self) -> str: # type: ignore + return self._func(*self._args) + + # replace function from UserString; it instantiates a self.__class__ + # for the encoding result + + def encode(self, encoding: str = None, errors: str = None) -> bytes: # type: ignore + if encoding: + if errors: + return self.data.encode(encoding, errors) + else: + return self.data.encode(encoding) + else: + return self.data.encode() + + def __dir__(self) -> List[str]: + return dir(str) + + def __str__(self) -> str: + return str(self.data) + + def __add__(self, other: str) -> str: # type: ignore + return self.data + other + + def __radd__(self, other: str) -> str: + return other + self.data + + def __mod__(self, other: str) -> str: # type: ignore + return self.data % other + + def __rmod__(self, other: str) -> str: + return other % self.data + + def __mul__(self, other: Any) -> str: # type: ignore + return self.data * other + + def __rmul__(self, other: Any) -> str: + return other * self.data + + def __getattr__(self, name: str) -> Any: + if name == '__members__': + return self.__dir__() + return getattr(self.data, name) + + def __getstate__(self) -> Tuple[Callable, Tuple[str, ...]]: + return self._func, self._args + + def __setstate__(self, tup: Tuple[Callable, Tuple[str]]) -> None: + self._func, self._args = tup + + def __copy__(self) -> "_TranslationProxy": + return self + + def __repr__(self) -> str: + try: + return 'i' + repr(str(self.data)) + except Exception: + return '<%s broken>' % self.__class__.__name__ + + +translators = defaultdict(NullTranslations) # type: Dict[Tuple[str, str], NullTranslations] + + +def init(locale_dirs: List[str], language: str, + catalog: str = 'sphinx', namespace: str = 'general') -> Tuple[NullTranslations, bool]: + """Look for message catalogs in `locale_dirs` and *ensure* that there is at + least a NullTranslations catalog set in `translators`. If called multiple + times or if several ``.mo`` files are found, their contents are merged + together (thus making ``init`` reentrant). + """ + global translators + translator = translators.get((namespace, catalog)) + # ignore previously failed attempts to find message catalogs + if translator.__class__ is NullTranslations: + translator = None + # the None entry is the system's default locale path + has_translation = True + + if language and '_' in language: + # for language having country code (like "de_AT") + languages = [language, language.split('_')[0]] + else: + languages = [language] + + # loading + for dir_ in locale_dirs: + try: + trans = gettext.translation(catalog, localedir=dir_, languages=languages) + if translator is None: + translator = trans + else: + translator.add_fallback(trans) + except Exception: + # Language couldn't be found in the specified path + pass + # guarantee translators[(namespace, catalog)] exists + if translator is None: + translator = NullTranslations() + has_translation = False + translators[(namespace, catalog)] = translator + return translator, has_translation + + +def setlocale(category: int, value: Union[str, Iterable[str]] = None) -> None: + """Update locale settings. + + This does not throw any exception even if update fails. + This is workaround for Python's bug. + + For more details: + + * https://github.com/sphinx-doc/sphinx/issues/5724 + * https://bugs.python.org/issue18378#msg215215 + + .. note:: Only for internal use. Please don't call this method from extensions. + This will be removed in future. + """ + try: + locale.setlocale(category, value) + except locale.Error: + pass + + +def init_console(locale_dir: str, catalog: str) -> Tuple[NullTranslations, bool]: + """Initialize locale for console. + + .. versionadded:: 1.8 + """ + try: + # encoding is ignored + language, _ = locale.getlocale(locale.LC_MESSAGES) + except AttributeError: + # LC_MESSAGES is not always defined. Fallback to the default language + # in case it is not. + language = None + return init([locale_dir], language, catalog, 'console') + + +def get_translator(catalog: str = 'sphinx', namespace: str = 'general') -> NullTranslations: + return translators[(namespace, catalog)] + + +def is_translator_registered(catalog: str = 'sphinx', namespace: str = 'general') -> bool: + return (namespace, catalog) in translators + + +def _lazy_translate(catalog: str, namespace: str, message: str) -> str: + """Used instead of _ when creating TranslationProxy, because _ is + not bound yet at that time. + """ + translator = get_translator(catalog, namespace) + return translator.gettext(message) + + +def get_translation(catalog: str, namespace: str = 'general') -> Callable: + """Get a translation function based on the *catalog* and *namespace*. + + The extension can use this API to translate the messages on the + extension:: + + import os + from sphinx.locale import get_translation + + MESSAGE_CATALOG_NAME = 'myextension' # name of *.pot, *.po and *.mo files + _ = get_translation(MESSAGE_CATALOG_NAME) + text = _('Hello Sphinx!') + + + def setup(app): + package_dir = path.abspath(path.dirname(__file__)) + locale_dir = os.path.join(package_dir, 'locales') + app.add_message_catalog(MESSAGE_CATALOG_NAME, locale_dir) + + With this code, sphinx searches a message catalog from + ``${package_dir}/locales/${language}/LC_MESSAGES/myextension.mo``. + The :confval:`language` is used for the searching. + + .. versionadded:: 1.8 + """ + def gettext(message: str, *args: Any) -> str: + if not is_translator_registered(catalog, namespace): + # not initialized yet + return _TranslationProxy(_lazy_translate, catalog, namespace, message) # type: ignore # NOQA + else: + translator = get_translator(catalog, namespace) + if len(args) <= 1: + return translator.gettext(message) + else: # support pluralization + return translator.ngettext(message, args[0], args[1]) + + return gettext + + +# A shortcut for sphinx-core +#: Translation function for messages on documentation (menu, labels, themes and so on). +#: This function follows :confval:`language` setting. +_ = get_translation('sphinx') +#: Translation function for console messages +#: This function follows locale setting (`LC_ALL`, `LC_MESSAGES` and so on). +__ = get_translation('sphinx', 'console') + + +# labels +admonitionlabels = { + 'attention': _('Attention'), + 'caution': _('Caution'), + 'danger': _('Danger'), + 'error': _('Error'), + 'hint': _('Hint'), + 'important': _('Important'), + 'note': _('Note'), + 'seealso': _('See also'), + 'tip': _('Tip'), + 'warning': _('Warning'), +} + +# Moved to sphinx.directives.other (will be overriden later) +versionlabels = {} # type: Dict[str, str] + +# Moved to sphinx.domains.python (will be overriden later) +pairindextypes = {} # type: Dict[str, str] diff --git a/sphinx/sphinx/locale/ar/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/ar/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..0c54e33 --- /dev/null +++ b/sphinx/sphinx/locale/ar/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "ar", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\"> \u062d\u0642\u0648\u0642 \u0627\u0644\u0646\u0634\u0631 </a> %(copyright)s", "© Copyright %(copyright)s.": "© \u062d\u0642\u0648\u0642 \u0627\u0644\u0646\u0634\u0631 %(copyright)s", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "\u0627\u0644\u0645\u0648\u0636\u0648\u0639 \u0627\u0644\u062a\u0627\u0644\u064a", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "\u0627\u0644\u0645\u0648\u0636\u0648\u0639 \u0627\u0644\u0633\u0627\u0628\u0642", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "\u0627\u0644\u0628\u062d\u062b \u0636\u0645\u0646 %(docstitle)s", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "", "Table of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "\u0627\u0644\u0641\u0635\u0644 \u0627\u0644\u062a\u0627\u0644\u064a", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/ar/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/ar/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..7c5e680 --- /dev/null +++ b/sphinx/sphinx/locale/ar/LC_MESSAGES/sphinx.po @@ -0,0 +1,3466 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Mohammed Shannaq <sam@ms.per.jo>, 2018 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Arabic (http://www.transifex.com/sphinx-doc/sphinx-1/language/ar/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: ar\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "مجلد الاعدادات لا يحتوي على ملف conf.py (%s)" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "لا يمكن العثور على المجلد المصدر (%s)" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "لا يمكن ان يكون المجلد المصدر والمجلد الهدف متطابقين" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "تشغيل Sphinx v%s" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "يحتاج هذا المشروع على الاقل الى الاصدار %s من Sphinx وبالتالي لا يمكن بناءه باستخدام الاصدار الحالي" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "تحميل الترجمات [ %s ]" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "تم" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "غير متوفرة للرسائل الافتراضية المدمجة" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "فشل: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "لم يتم اختيار نوع البناء، تم استخدام نوع البناء الافتراضي: html" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "نجح" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "انتهى مع وجود مشاكل" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "بناء %s، %sتحذير." + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "بناء %s." + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "primary_domain %r لتم يتم العثور عليه، لهذا تم تجاهلة" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "حدث غير معروف: %s" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "بناء [mo]:" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "بناء [%s]" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "التالي" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "السابق" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "الرجاء ادخال بعض النصوص" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[المستندات]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "استمرار في الصفحة التالية" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "البحث ضمن %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\"> حقوق النشر </a> %(copyright)s" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© حقوق النشر %(copyright)s" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "البحث %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "الموضوع السابق" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "الموضوع التالي" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "الفصل التالي" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/bg/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/bg/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..5b0f95d --- /dev/null +++ b/sphinx/sphinx/locale/bg/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "bg", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "", "Table of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/bg/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/bg/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..0f59aac --- /dev/null +++ b/sphinx/sphinx/locale/bg/LC_MESSAGES/sphinx.po @@ -0,0 +1,3465 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Bulgarian (http://www.transifex.com/sphinx-doc/sphinx-1/language/bg/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: bg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/bn/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/bn/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..3a4d190 --- /dev/null +++ b/sphinx/sphinx/locale/bn/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "bn", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "\u098f\u0987 \u09a1\u0995\u09c1\u09ae\u09c7\u09a8\u09cd\u099f \u09b8\u09ae\u09cd\u09aa\u09b0\u09cd\u0995\u09c7", "Automatically generated list of changes in version %(version)s": "\u09b8\u09cd\u09ac\u09df\u0982\u0995\u09cd\u09b0\u09bf\u09df\u09ad\u09be\u09ac\u09c7 \u09a4\u09c8\u09b0\u09c0 %(version)s-\u098f \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8 \u09b8\u09ae\u09c2\u09b9\u09c7\u09b0 \u09a4\u09be\u09b2\u09bf\u0995\u09be\u0964", "C API changes": "C API \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "\u09aa\u09c2\u09b0\u09cd\u09a3\u09be\u0999\u09cd\u0997 \u09b8\u09c2\u099a\u09c0\u09aa\u09a4\u09cd\u09b0", "Contents": "", "Copyright": "\u0995\u09aa\u09bf\u09b0\u09be\u0987\u099f", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s \u09a6\u09bf\u09df\u09c7 \u09a4\u09c8\u09b0\u09c0\u0964", "Expand sidebar": "", "Full index on one page": "\u098f\u0995 \u09aa\u09be\u09a4\u09be\u09df \u09b8\u09ae\u09cd\u09aa\u09c2\u09b0\u09cd\u09a3 \u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8", "General Index": "\u09b8\u09be\u09a7\u09be\u09b0\u09a3 \u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8", "Global Module Index": "\u0997\u09cd\u09b2\u09c7\u09be\u09ac\u09be\u09b2 \u09ae\u09a1\u09bf\u0989\u09b2 \u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8", "Go": "\u09af\u09be\u09a8", "Hide Search Matches": "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8\u09c7\u09b0 \u09ae\u09cd\u09af\u09be\u099a\u0997\u09c1\u09b2\u09c7\u09be \u09b2\u09c1\u0995\u09be\u09a8", "Index": "\u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8", "Index – %(key)s": "\u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8 – %(key)s", "Index pages by letter": "\u09ac\u09b0\u09cd\u09a3\u09be\u09a8\u09c1\u09b8\u09be\u09b0\u09c7 \u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8 \u09aa\u09be\u09a4\u09be", "Indices and tables:": "\u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8 \u0993 \u099f\u09c7\u09ac\u09bf\u09b2 \u09b8\u09ae\u09c2\u09b9:", "Last updated on %(last_updated)s.": "%(last_updated)s \u09b8\u09b0\u09cd\u09ac\u09b6\u09c7\u09b7 \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8 \u0995\u09b0\u09be \u09b9\u09df\u09c7\u099b\u09c7\u0964", "Library changes": "\u09b2\u09be\u0987\u09ac\u09cd\u09b0\u09c7\u09b0\u09bf\u09b0 \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8", "Navigation": "\u09a8\u09c7\u09ad\u09bf\u0997\u09c7\u09b6\u09a8", "Next topic": "\u09aa\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 \u099f\u09aa\u09bf\u0995", "Other changes": "\u0985\u09a8\u09cd\u09af\u09be\u09a8\u09cd\u09af \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8", "Overview": "\u09ad\u09c1\u09ae\u09bf\u0995\u09be", "Permalink to this definition": "\u098f\u0987 \u09b8\u0982\u099c\u09cd\u099e\u09be\u09b0 \u09aa\u09be\u09b0\u09cd\u09ae\u09be\u09b2\u09bf\u0999\u09cd\u0995", "Permalink to this headline": "\u098f\u0987 \u09b6\u09bf\u09b0\u09c7\u09be\u09a8\u09be\u09ae\u09c7\u09b0 \u09aa\u09be\u09b0\u09cd\u09ae\u09be\u09b2\u09bf\u0999\u09cd\u0995", "Please activate JavaScript to enable the search\n functionality.": "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8 \u0995\u09b0\u09be\u09b0 \u099c\u09a8\u09cd\u09af \u0985\u09a8\u09c1\u0997\u09cd\u09b0\u09b9\u09aa\u09c2\u09b0\u09cd\u09ac\u0995 \u099c\u09be\u09ad\u09be\u09b8\u09cd\u0995\u09cd\u09b0\u09bf\u09aa\u09cd\u099f \n \u09b8\u0995\u09cd\u09b0\u09bf\u09df \u0995\u09b0\u09c1\u09a8\u0964", "Preparing search...": "", "Previous topic": "\u09aa\u09c2\u09b0\u09cd\u09ac\u09ac\u09b0\u09cd\u09a4\u09c0 \u099f\u09aa\u09bf\u0995", "Quick search": "\u09a6\u09cd\u09b0\u09c1\u09a4 \u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8", "Search": "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8", "Search Page": "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8 \u09aa\u09be\u09a4\u09be", "Search Results": "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8\u09c7\u09b0 \u09ab\u09b2\u09be\u09ab\u09b2", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "%(docstitle)s \u098f\u09b0 \u09ae\u09a7\u09cd\u09af\u09c7 \u0996\u09c1\u0981\u099c\u09c1\u09a8", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "\u09b8\u09c7\u09be\u09b0\u09cd\u09b8 \u09a6\u09c7\u0996\u09c1\u09a8", "Table of Contents": "", "This Page": "\u098f\u0987 \u09aa\u09be\u09a4\u09be", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "\u09b8\u0995\u09b2 \u09ab\u09be\u0982\u09b6\u09a8, \u0995\u09cd\u09b2\u09be\u09b8, \u099f\u09be\u09b0\u09cd\u09ae", "can be huge": "\u0996\u09c1\u09ac \u09ac\u09dc \u09b9\u09a4\u09c7 \u09aa\u09be\u09b0\u09c7", "last updated": "", "lists all sections and subsections": "\u09b8\u0995\u09b2 \u0985\u09a8\u09c1\u099a\u09cd\u099b\u09c7\u09a6 \u09b8\u09ae\u09c2\u09b9\u09c7\u09b0 \u09a4\u09be\u09b2\u09bf\u0995\u09be", "next chapter": "\u09aa\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 \u0985\u09a7\u09cd\u09af\u09be\u09df", "previous chapter": "\u09aa\u09c2\u09b0\u09cd\u09ac\u09ac\u09b0\u09cd\u09a4\u09c0 \u0985\u09a7\u09cd\u09af\u09be\u09df", "quick access to all modules": "\u09b8\u0995\u09b2 \u09ae\u09a1\u09bf\u0989\u09b2\u09c7 \u09a6\u09cd\u09b0\u09c1\u09a4 \u09aa\u09cd\u09b0\u09ac\u09c7\u09b6", "search": "\u0996\u09c1\u0981\u099c\u09c1\u09a8", "search this documentation": "\u098f\u0987 \u09b8\u09b9\u09be\u09df\u09bf\u0995\u09be\u09a4\u09c7 \u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be \u0995\u09b0\u09c1\u09a8", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/bn/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/bn/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..c4c4fbc --- /dev/null +++ b/sphinx/sphinx/locale/bn/LC_MESSAGES/sphinx.po @@ -0,0 +1,3466 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# FIRST AUTHOR <EMAIL@ADDRESS>, 2009 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Bengali (http://www.transifex.com/sphinx-doc/sphinx-1/language/bn/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: bn\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "পাইথন উন্নয়ন পরামর্শ; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "বিল্টইন সমূহ" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "মডিউল লেভেল" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "(-" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "সাধারণ ইনডেক্স" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "ইনডেক্স" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "পরবর্তী" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "পূর্ববর্তী" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "ইনডেক্স" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "রিলিজ" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "অনুচ্ছেদ লেখক:" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "মডিউল লেখক:" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "লেখক:" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "প্যারামিটার" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "রিটার্নস" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "রিটার্ন টাইপ" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C ফাংশন)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C মেম্বার)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C ম্যাক্রো)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C টাইপ)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C ভ্যারিয়েবল)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "ফাংশন" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "%s ভার্সনে নতুন" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "%s ভার্সনে পরিবর্তিত" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "%s ভার্সন থেকে ডেপ্রিকেটেড" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "ক্লাস" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (বিল্ট-ইন ফাংশন)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s মেথড)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (ক্লাসে)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s এ্যট্রিবিউট)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (মডিউল)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "মেথড" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "ডাটা" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "এ্যট্রিবিউট" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "মডিউল" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "কিওয়ার্ড" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "অপারেটর" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "অবজেক্ট" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "এক্সেপশন" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "স্ট্যাটমেন্ট" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "বিল্ট-ইন ফাংশন" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "রেইজেস" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (%s মডিউলে)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (বিল্ট-ইন ভ্যারিয়েবল)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (%s মডিউলে)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (বিল্ট-ইন ক্লাস)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (%s ক্লাসে)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s (%s.%s মেথড)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s (%s.%s স্ট্যাটিক মেথড)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s স্ট্যাটিক মেথড)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (%s.%s ক্লাস মেথড)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (%s ক্লাস মেথড)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s এ্যট্রিবিউট)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "মডিউল সমূহ" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "ডেপ্রিকেটেড" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "ক্লাস মেথড" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "স্ট্যাটিক মেথড" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "এনভায়রনমেন্ট ভ্যারিয়েবল; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "শব্দকোষ" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "ব্যকরণ টোকেন" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "এনভায়রনমেন্ট ভ্যারিয়েবল" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "প্রোগ্রাম অপশন" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "মডিউল ইনডেক্স" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "অনুসন্ধান পাতা" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "অসমাপ্ত কাজ" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr ":class:`%s` এর উপনাম" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "দৃষ্টি আকর্ষণ" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "সতর্কীকরণ" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "বিপজ্জনক" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "ভুল (এরর)" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "আভাস" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "গুরুত্বপূর্ণ" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "নোট" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "আরও দেখুন" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "পরামর্শ" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "সতর্কতা" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "পূর্ববর্তী পাতা হতে চলমান" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "অনুসন্ধান" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "যান" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "সোর্স দেখুন" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "ভুমিকা" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "ইনডেক্স ও টেবিল সমূহ:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "পূর্ণাঙ্গ সূচীপত্র" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "সকল অনুচ্ছেদ সমূহের তালিকা" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "এই সহায়িকাতে অনুসন্ধা করুন" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "গ্লোবাল মডিউল ইনডেক্স" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "সকল মডিউলে দ্রুত প্রবেশ" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "সকল ফাংশন, ক্লাস, টার্ম" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "ইনডেক্স – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "এক পাতায় সম্পূর্ণ ইনডেক্স" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "বর্ণানুসারে ইনডেক্স পাতা" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "খুব বড় হতে পারে" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "নেভিগেশন" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "%(docstitle)s এর মধ্যে খুঁজুন" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "এই ডকুমেন্ট সম্পর্কে" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "কপিরাইট" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "%(last_updated)s সর্বশেষ পরিবর্তন করা হয়েছে।" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s দিয়ে তৈরী।" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "%(docstitle)s-এ খুঁজুন" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "পূর্ববর্তী টপিক" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "পূর্ববর্তী অধ্যায়" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "পরবর্তী টপিক" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "পরবর্তী অধ্যায়" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "অনুসন্ধান করার জন্য অনুগ্রহপূর্বক জাভাস্ক্রিপ্ট \n সক্রিয় করুন।" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "খুঁজুন" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "অনুসন্ধানের ফলাফল" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "দ্রুত অনুসন্ধান" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "এই পাতা" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "স্বয়ংক্রিয়ভাবে তৈরী %(version)s-এ পরিবর্তন সমূহের তালিকা।" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "লাইব্রেরির পরিবর্তন" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "C API পরিবর্তন" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "অন্যান্য পরিবর্তন" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "এই শিরোনামের পার্মালিঙ্ক" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "এই সংজ্ঞার পার্মালিঙ্ক" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "অনুসন্ধানের ম্যাচগুলো লুকান" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "পাদটীকা" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[ছবি]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/ca/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/ca/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..cfb2998 --- /dev/null +++ b/sphinx/sphinx/locale/ca/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "ca", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "Quant a aquests documents", "Automatically generated list of changes in version %(version)s": "Llista de canvis de la versi\u00f3 %(version)s generada autom\u00e0ticament", "C API changes": "Canvis a la API de C", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "Taula de Contingut Completa", "Contents": "", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Creat amb <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "", "Full index on one page": "\u00cdndex complet en una p\u00e0gina", "General Index": "\u00cdndex General", "Global Module Index": "\u00cdndex Global de M\u00f2duls", "Go": "Ves a", "Hide Search Matches": "Oculta Resultats de Cerca", "Index": "\u00cdndex", "Index – %(key)s": "\u00cdndes – %(key)s", "Index pages by letter": "P\u00e0gines d'\u00edndex per lletra", "Indices and tables:": "\u00cdndexs i taules:", "Last updated on %(last_updated)s.": "\u00daltima actualitzaci\u00f3 el %(last_updated)s.", "Library changes": "Canvis a la llibreria", "Navigation": "Navegaci\u00f3", "Next topic": "Tema seg\u00fcent", "Other changes": "Altres canvis", "Overview": "Resum", "Permalink to this definition": "Link permanent a aquesta definici\u00f3", "Permalink to this headline": "Link permanent a aquest t\u00edtol", "Please activate JavaScript to enable the search\n functionality.": "Activa JavaScript per utilitzar la funcionalitat\nde cerca.", "Preparing search...": "", "Previous topic": "Tema anterior", "Quick search": "Cerca r\u00e0pida", "Search": "Cerca", "Search Page": "P\u00e0gina de Cerca", "Search Results": "Resultats de la Cerca", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "Cerca dins de %(docstitle)s", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Mostra Codi Font", "Table of Contents": "", "This Page": "Aquesta P\u00e0gina", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "totes les funcions, classes, termes", "can be huge": "pot ser gegant", "last updated": "", "lists all sections and subsections": "llista totes les seccions i subseccions", "next chapter": "cap\u00edtol seg\u00fcent", "previous chapter": "cap\u00edtol anterior", "quick access to all modules": "acc\u00e9s r\u00e0pid a tots els m\u00f2duls", "search": "cerca", "search this documentation": "cerca aquesta documentaci\u00f3", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/ca/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/ca/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..08d882a --- /dev/null +++ b/sphinx/sphinx/locale/ca/LC_MESSAGES/sphinx.po @@ -0,0 +1,3466 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# FIRST AUTHOR <EMAIL@ADDRESS>, 2009 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Catalan (http://www.transifex.com/sphinx-doc/sphinx-1/language/ca/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Mòduls Interns" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Nivell de mòdul" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (a " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d %b, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Índex General" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "índex" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "següent" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "anterior" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s documentació" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Índex" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Versió" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Autor de la secció:" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Autor del mòdul: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Autor: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Paràmetres" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Retorna" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Tipus de retorn" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (funció de C)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (membre de C)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (macro de C)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (tipus de C)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (variable de C)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "funció" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "membre" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "macro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "tipus" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "variable" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Novetat de la versió %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Canviat a la versió %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Obsolet desde la versió %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "class" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (funció interna)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (mètode %s)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (class)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (atribut %s)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (mòdul)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "atribut" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "mòdul" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "paraula clau" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operador" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "objecte" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "excepció" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "sentència" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "funció interna" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Llença" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (al mòdul %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (variable interna)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (al mòdul %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (classe interna)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (class a %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (mètode %s.%s)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (mètode estàtic %s.%s)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (mètode estàtic %s)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (atribut %s.%s)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "mòduls" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Obsolet" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "mètode estàtic" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (obsolet)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "variable d'entorn; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "variable d'entorn" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Índex de Mòduls" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Pàgina de Cerca" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "vegeu %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "vegeu també %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Pendent" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "àlies de :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Atenció" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Compte" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Perill" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Error" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Suggerència" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Important" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Nota" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Vegeu també" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Truc" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Avís" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "ve de la pàgina anterior" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Cerca" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Ves a" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Mostra Codi Font" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Resum" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Índexs i taules:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Taula de Contingut Completa" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "llista totes les seccions i subseccions" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "cerca aquesta documentació" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Índex Global de Mòduls" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "accés ràpid a tots els mòduls" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "totes les funcions, classes, termes" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Índes – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Índex complet en una pàgina" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Pàgines d'índex per lletra" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "pot ser gegant" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navegació" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Cerca dins de %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Quant a aquests documents" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Copyright" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Última actualització el %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Creat amb <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Cercar a %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Tema anterior" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "capítol anterior" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Tema següent" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "capítol següent" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Activa JavaScript per utilitzar la funcionalitat\nde cerca." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "cerca" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Resultats de la Cerca" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Cerca ràpida" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Aquesta Pàgina" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Llista de canvis de la versió %(version)s generada automàticament" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Canvis a la llibreria" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Canvis a la API de C" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Altres canvis" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Link permanent a aquest títol" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Link permanent a aquesta definició" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Oculta Resultats de Cerca" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[imatge]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/cak/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/cak/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..35e80d4 --- /dev/null +++ b/sphinx/sphinx/locale/cak/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "None", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", pa", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "", "Full index on one page": "", "General Index": "Konojel cholwuj", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "Cholwuj", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "", "Table of Contents": "", "This Page": "Ruxaq wuj re'", "Welcome! This is": "\u00dctz apet\u00efk! Wawe' k'o", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": "ri wuj richin"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/cak/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/cak/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..0fb5d1b --- /dev/null +++ b/sphinx/sphinx/locale/cak/LC_MESSAGES/sphinx.po @@ -0,0 +1,3466 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Julien Malard <julien.malard@mail.mcgill.ca>, 2019 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Kaqchikel (http://www.transifex.com/sphinx-doc/sphinx-1/language/cak/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: cak\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "xk'isïk" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "sachoj: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "Ruwachib'äl %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Kik'ajtz'ïk %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "tajin nutz'ib'aj" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "(chupam" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Konojel cholwuj" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "cholwuj" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "jun chïk" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "chi rij kan" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Cholwuj" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "Rusachoj nuk'unem:" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "Rusachoj kamulunem:" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "Ütz apetïk pa rokisanem runuk'ik Sphinx %s." + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "Rub'i' samäj" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "Kib'i' ajtz'ib'anel(a')" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "Rujalwäch samäj" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "Ruch'ab'äl samaj" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Jalajöj" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "retal jalöj" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "Ruwäch" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "wachinäq" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Retal jalöj" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "wuj" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "tatz'u %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "tatz'u chuqa' %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "(chupam %s)" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Chi tiqib'ana'" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<original entry>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(Ri <<original entry>> k'o chupam %s, pa juch' %d.)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "Tz'etb'äl" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "Tz'etb'äl" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "Jalajöj chïk" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Sachoj" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Tatz'u chuqa'" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "Ajilanïk" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Ütz apetïk! Wawe' k'o" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "ri wuj richin" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Ruxaq wuj re'" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", pa" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "rusachoj rusik'inïk: %s, %s" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "rusachoj rutz'ib'axïk: %s, %s" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[wachib'äl: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[wachib'äl]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/cs/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/cs/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..dde27b3 --- /dev/null +++ b/sphinx/sphinx/locale/cs/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "cs", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", v ", "About these documents": "O t\u011bchto dokumentech", "Automatically generated list of changes in version %(version)s": "Automaticky generovan\u00fd seznam zm\u011bn ve verzi %(version)s", "C API changes": "Zm\u011bny API", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Sbalit bo\u010dn\u00ed li\u0161tu", "Complete Table of Contents": "Celkov\u00fd obsah", "Contents": "Obsah", "Copyright": "Ve\u0161ker\u00e1 pr\u00e1va vyhrazena", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Vytvo\u0159eno pomoc\u00ed <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Rozbalit bo\u010dn\u00ed li\u0161tu", "Full index on one page": "Cel\u00fd rejst\u0159\u00edk na jedn\u00e9 str\u00e1nce", "General Index": "Obecn\u00fd rejst\u0159\u00edk", "Global Module Index": "Celkov\u00fd rejst\u0159\u00edk modul\u016f", "Go": "OK", "Hide Search Matches": "Skr\u00fdt v\u00fdsledky vyhled\u00e1v\u00e1n\u00ed", "Index": "Rejst\u0159\u00edk", "Index – %(key)s": "Rejst\u0159\u00edk – %(key)s", "Index pages by letter": "Rejst\u0159\u00edk podle p\u00edsmene", "Indices and tables:": "Rejst\u0159\u00edky a tabulky:", "Last updated on %(last_updated)s.": "Aktualizov\u00e1no dne %(last_updated)s.", "Library changes": "Zm\u011bny v knihovn\u00e1ch", "Navigation": "Navigace", "Next topic": "Dal\u0161\u00ed t\u00e9ma", "Other changes": "Ostatn\u00ed zm\u011bny", "Overview": "P\u0159ehled", "Permalink to this definition": "Trval\u00fd odkaz na tuto definici", "Permalink to this headline": "Trval\u00fd odkaz na tento nadpis", "Please activate JavaScript to enable the search\n functionality.": "Pro podporu vyhled\u00e1v\u00e1n\u00ed aktivujte JavaScript.", "Preparing search...": "Vyhled\u00e1v\u00e1n\u00ed se p\u0159ipravuje...", "Previous topic": "P\u0159echoz\u00ed t\u00e9ma", "Quick search": "Rychl\u00e9 vyhled\u00e1v\u00e1n\u00ed", "Search": "Vyhled\u00e1v\u00e1n\u00ed", "Search Page": "Vyhled\u00e1vac\u00ed str\u00e1nka", "Search Results": "V\u00fdsledky vyhled\u00e1v\u00e1n\u00ed", "Search finished, found %s page(s) matching the search query.": "Vyhled\u00e1v\u00e1n\u00ed dokon\u010deno, str\u00e1nky odpov\u00eddaj\u00edc\u00ed hledan\u00e9mu v\u00fdrazu: %s.", "Search within %(docstitle)s": "Prohledat %(docstitle)s", "Searching": "Prob\u00edh\u00e1 vyhled\u00e1n\u00ed", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Uk\u00e1zat zdroj", "Table of Contents": "", "This Page": "Tato str\u00e1nka", "Welcome! This is": "V\u00edtejte! Toto je", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Vyhled\u00e1v\u00e1n\u00ed nenalezlo \u017e\u00e1dn\u00fd odpov\u00eddaj\u00edc\u00ed dokument. Ujist\u011bte se, \u017ee jste v\u0161echna slova zapsal/a spr\u00e1vn\u011b a \u017ee jste vybral/a dostatek kategori\u00ed.", "all functions, classes, terms": "v\u0161echny funkce, t\u0159\u00eddy, term\u00edny", "can be huge": "m\u016f\u017ee b\u00fdt obrovsk\u00fd", "last updated": "naposledy aktualizov\u00e1no", "lists all sections and subsections": "seznam v\u0161ech sekc\u00ed a podsekc\u00ed", "next chapter": "dal\u0161\u00ed kapitola", "previous chapter": "p\u0159edchoz\u00ed kapitola", "quick access to all modules": "rychl\u00fd p\u0159\u00edstup ke v\u0161em modul\u016fm", "search": "hledat", "search this documentation": "prohledat tuto dokumentaci", "the documentation for": "dokumentace pro"}, "plural_expr": "(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/cs/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/cs/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..1f6ec07 --- /dev/null +++ b/sphinx/sphinx/locale/cs/LC_MESSAGES/sphinx.po @@ -0,0 +1,3467 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# FIRST AUTHOR <EMAIL@ADDRESS>, 2008 +# Vilibald W. <vilibald.wanca@gmail.com>, 2014-2015 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Czech (http://www.transifex.com/sphinx-doc/sphinx-1/language/cs/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: cs\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "Obr. %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Tabulka %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "Výpis %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Vestavěné funkce" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Úroveň modulu" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (v " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d.%m.%Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Obecný rejstřík" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "rejstřík" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "další" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "předchozí" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "Dokumentace pro %s %s" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Rejstřík" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Vydání" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Autor sekce: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Autor modulu: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Autor kódu:" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Autor: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parametry" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Vrací" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Typ návratové hodnoty" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C funkce)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C člen)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C makro)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C typ)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C proměnná)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "funkce" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "člen" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "makro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "typ" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "proměnná" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Nové ve verzi %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Změněno ve verzi %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Zastaralé od verze %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Vyvolá" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "třída" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (vestavěná funkce)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (metoda %s)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (třída)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (globální proměnná nebo konstanta)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (atribut %s)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Argumenty" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (modul)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "metoda" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "data" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "atribut" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "modul" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "klíčové slovo" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operátor" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "objekt" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "výjimka" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "příkaz" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "vestavěná funkce" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Proměnné" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Vyvolá" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (v modulu %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (vestavěná proměnná)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (v modulu %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (vestavěná třída)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (třída v %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (metoda %s.%s)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (statická metoda %s.%s)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (statická metoda %s)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (třídní metoda %s.%s)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (třídní metoda %s)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (atribut %s.%s)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Rejstřík modulů Pythonu" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "moduly" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Zastaralé" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "třídní metoda" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "statická metoda" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (zastaralé)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (direktiva)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (role)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "direktiva" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "role" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "proměnná prostředí; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "termín v glosáři" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "token gramatiky" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "referenční návěstí" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "proměnná prostředí" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "volba programu" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Rejstřík modulů" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Vyhledávací stránka" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "viz %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "viz také %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Symboly" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[graf: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[graf]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(v %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[zdroj]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Todo" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "původní záznam" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[dokumentace]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Kód modulu" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Zdrojový kód pro %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Přehled: kód modulu" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Všechny moduly s dostupným kódem</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "alias třídy :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Výstraha" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Upozornění" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Nebezpečí" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Chyba" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Rada" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Důležité" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Poznámka" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Viz také" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Tip" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Varování" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "pokračujte na předchozí stránce" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Vyhledávání" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "OK" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Ukázat zdroj" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Přehled" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Vítejte! Toto je" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "dokumentace pro" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "naposledy aktualizováno" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Rejstříky a tabulky:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Celkový obsah" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "seznam všech sekcí a podsekcí" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "prohledat tuto dokumentaci" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Celkový rejstřík modulů" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "rychlý přístup ke všem modulům" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "všechny funkce, třídy, termíny" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Rejstřík – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Celý rejstřík na jedné stránce" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Rejstřík podle písmene" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "může být obrovský" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navigace" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Prohledat %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "O těchto dokumentech" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Veškerá práva vyhrazena" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Aktualizováno dne %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Vytvořeno pomocí <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Prohledat %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Přechozí téma" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "předchozí kapitola" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Další téma" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "další kapitola" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Pro podporu vyhledávání aktivujte JavaScript." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "hledat" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Výsledky vyhledávání" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "Vyhledávání nenalezlo žádný odpovídající dokument. Ujistěte se, že jste všechna slova zapsal/a správně a že jste vybral/a dostatek kategorií." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Rychlé vyhledávání" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Tato stránka" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Automaticky generovaný seznam změn ve verzi %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Změny v knihovnách" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Změny API" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Ostatní změny" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Trvalý odkaz na tento nadpis" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Trvalý odkaz na tuto definici" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Skrýt výsledky vyhledávání" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "Probíhá vyhledání" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Vyhledávání se připravuje..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "Vyhledávání dokončeno, stránky odpovídající hledanému výrazu: %s." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", v " + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Rozbalit boční lištu" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Sbalit boční lištu" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Obsah" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Permalink k této tabulce" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Permalink k tomuto kódu" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Permalink k tomuto obrázku" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Poznámky pod čarou" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[obrázek: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[obrázek]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/cy/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/cy/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..5f3f30d --- /dev/null +++ b/sphinx/sphinx/locale/cy/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "cy", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", yn ", "About these documents": "Yngl\u0177n \u00e2'r dogfennau hyn", "Automatically generated list of changes in version %(version)s": "Rhestr o newidiadau yn fersiwn %(version)s wedi'i cynhyrchu'n awtomatig", "C API changes": "Newidiadau i'r C-API", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Cyfangu'r bar ochr", "Complete Table of Contents": "Tabl Cynnwys Llawn", "Contents": "Cynnwys", "Copyright": "Hawlfraint", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Cr\u8c37wyd gan ddefnyddio <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s", "Expand sidebar": "Ehangu'r bar ochr", "Full index on one page": "Indecs llawn ar un tudalen", "General Index": "Indecs cyffredinol", "Global Module Index": "Indecs Modiwl Byd-Eang", "Go": "Ewch", "Hide Search Matches": "Cuddio Canlyniadau Chwilio", "Index": "Indecs", "Index – %(key)s": "Indecs – %(key)s", "Index pages by letter": "Indecs tudalennau gan lythyren", "Indices and tables:": "Indecsau a tablau:", "Last updated on %(last_updated)s.": "Diweddarwyd yn ddiwethaf ar %(last_updated)s.", "Library changes": "Newidiadau i'r llyfrgell", "Navigation": "Llywio", "Next topic": "Pwnc nesaf", "Other changes": "Newidiadau arall", "Overview": "Trosolwg", "Permalink to this definition": "Permalink i'r diffiniad hwn", "Permalink to this headline": "Permalink i'r pennawd hwn", "Please activate JavaScript to enable the search\n functionality.": "Trwoch JavaScript ymlaen i alluogi'r chwilio.", "Preparing search...": "Paratoi chwilio...", "Previous topic": "Pwnc blaenorol", "Quick search": "Chwilio cyflym", "Search": "Chwilio", "Search Page": "Tudalen Chwilio", "Search Results": "Canlyniadau chwilio", "Search finished, found %s page(s) matching the search query.": "Chwiliad wedi gorffen, wedi ffeindio %s tudalen(nau) yn cyfateb a'r ymholiad chwilio.", "Search within %(docstitle)s": "Chwilio o fewn %(docstitle)s", "Searching": "Yn chwilio", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Dangos Ffynhonell", "Table of Contents": "", "This Page": "Y Dudalen Hon", "Welcome! This is": "Croeso! Dyma", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Nid yw eich chwiliad yn cyfateb unrhyw ddogfennau. Gwnewch yn si\u0175r fod pob gair wedi'i sillafu'n gywir, ac eich bod wedi dewis digon o gategor\u00efau.", "all functions, classes, terms": "holl ffwythiannau, dosbarthau a thermau", "can be huge": "gall fod yn enfawr", "last updated": "diweddarwyd yn ddiwethaf", "lists all sections and subsections": "rhestru holl adrannau ac isadrannau", "next chapter": "pennod nesaf", "previous chapter": "pennod blaenorol", "quick access to all modules": "mynediad cloi i bob modiwl", "search": "chwilio", "search this documentation": "chwiliwch y ddogfennaeth", "the documentation for": "y dogfennaeth am"}, "plural_expr": "(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/cy/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/cy/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..6830334 --- /dev/null +++ b/sphinx/sphinx/locale/cy/LC_MESSAGES/sphinx.po @@ -0,0 +1,3467 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# FIRST AUTHOR <EMAIL@ADDRESS>, 2016 +# Geraint Palmer <palmer.geraint@googlemail.com>, 2016 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Welsh (http://www.transifex.com/sphinx-doc/sphinx-1/language/cy/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: cy\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "Ffig. %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Tabl %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "Listing %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Lefel modiwl" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (yn " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Indecs cyffredinol" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "indecs" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "nesaf" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "blaenorol" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "Dogfennaeth %s %s " + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Indecs" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Rhyddhad" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Awdur yr adran:" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Awdur y fodiwl:" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Awdur y cod:" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Awdur:" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Paramedrau" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "ffwythiant" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "aelod" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Newydd yn fersiwn %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Wedi newid yn fersiwn %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Dibrisiwyd ers fersiwn %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (newidyn byd-eang neu cysonyn)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "modiwl" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "allweddair" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "gweithredydd" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "gwrthrych" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "datganiad" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "ffwythiant built-in" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Indecs Modiwlau" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Tudalen Chwilio" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "gweler %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "gweler hefyd %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Symbolau" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[graff: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[graff]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(yn %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[ffynhonnell]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Todo" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "eitem wreiddiol" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[docs]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Cod y modiwl" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Cod ffynhonnell ar gyfer %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Trosolwg: cod y modiwl" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Holl fodiwlau lle mae'r cod ar gael</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Sylw" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Gofal" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Perygl" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Gwall" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Awgrym" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Pwysig" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Nodyn" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Gweler hefyd" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Awgrym" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Rhybudd" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "wedi'i barhau o'r tudalen blaenorol" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Chwilio" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Ewch" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Dangos Ffynhonell" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Trosolwg" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Croeso! Dyma" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "y dogfennaeth am" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "diweddarwyd yn ddiwethaf" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Indecsau a tablau:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Tabl Cynnwys Llawn" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "rhestru holl adrannau ac isadrannau" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "chwiliwch y ddogfennaeth" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Indecs Modiwl Byd-Eang" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "mynediad cloi i bob modiwl" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "holl ffwythiannau, dosbarthau a thermau" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Indecs – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Indecs llawn ar un tudalen" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Indecs tudalennau gan lythyren" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "gall fod yn enfawr" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Llywio" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Chwilio o fewn %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Ynglŷn â'r dogfennau hyn" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Hawlfraint" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Diweddarwyd yn ddiwethaf ar %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Cr谷wyd gan ddefnyddio <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Chwilio %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Pwnc blaenorol" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "pennod blaenorol" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Pwnc nesaf" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "pennod nesaf" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Trwoch JavaScript ymlaen i alluogi'r chwilio." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "chwilio" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Canlyniadau chwilio" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "Nid yw eich chwiliad yn cyfateb unrhyw ddogfennau. Gwnewch yn siŵr fod pob gair wedi'i sillafu'n gywir, ac eich bod wedi dewis digon o gategorïau." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Chwilio cyflym" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Y Dudalen Hon" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Rhestr o newidiadau yn fersiwn %(version)s wedi'i cynhyrchu'n awtomatig" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Newidiadau i'r llyfrgell" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Newidiadau i'r C-API" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Newidiadau arall" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Permalink i'r pennawd hwn" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Permalink i'r diffiniad hwn" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Cuddio Canlyniadau Chwilio" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "Yn chwilio" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Paratoi chwilio..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "Chwiliad wedi gorffen, wedi ffeindio %s tudalen(nau) yn cyfateb a'r ymholiad chwilio." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", yn " + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Ehangu'r bar ochr" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Cyfangu'r bar ochr" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Cynnwys" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Permalink i'r tabl hwn" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Permalink i'r cod hwn" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Permalink i'r ddelwedd hon" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "Permalink i'r toctree hwn" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Troednodiadau" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[delwedd: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[delwedd]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/da/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/da/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..7bb9d94 --- /dev/null +++ b/sphinx/sphinx/locale/da/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "da", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Ophavsret</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Ophavsret %(copyright)s.", ", in ": ", i", "About these documents": "Om disse dokumenter", "Automatically generated list of changes in version %(version)s": "Automatisk oprettet liste af \u00e6ndringer i version %(version)s", "C API changes": "\u00c6ndringer i C-API", "Changes in Version %(version)s — %(docstitle)s": "\u00c6ndringer i version %(version)s — %(docstitle)s", "Collapse sidebar": "Sammenfold sidebj\u00e6lke", "Complete Table of Contents": "Fuldst\u00e6ndig indholdsfortegnelse", "Contents": "Indhold", "Copyright": "Ophavsret", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Bygget med <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Udfold sidebj\u00e6lke", "Full index on one page": "Fuldt indeks p\u00e5 \u00e9n side", "General Index": "Generelt indeks", "Global Module Index": "Globalt modulindeks", "Go": "S\u00f8g", "Hide Search Matches": "Skjul s\u00f8geresultater", "Index": "Indeks", "Index – %(key)s": "Indeks – %(key)s", "Index pages by letter": "Indeks\u00e9r sider efter bogstav", "Indices and tables:": "Indeks og tabeller:", "Last updated on %(last_updated)s.": "Sidst opdateret %(last_updated)s.", "Library changes": "Biblioteks\u00e6ndringer", "Navigation": "Navigation", "Next topic": "N\u00e6ste emne", "Other changes": "Andre \u00e6ndringer", "Overview": "Oversigt", "Permalink to this definition": "Permalink til denne definition", "Permalink to this headline": "Permalink til denne overskrift", "Please activate JavaScript to enable the search\n functionality.": "Aktiv\u00e9r venligst JavaScript for at aktivere\n s\u00f8gefunktionalitet.", "Preparing search...": "Forbereder s\u00f8gning...", "Previous topic": "Forrige emne", "Quick search": "Hurtig s\u00f8gning", "Search": "S\u00f8g", "Search Page": "S\u00f8geside", "Search Results": "S\u00f8geresultater", "Search finished, found %s page(s) matching the search query.": "S\u00f8gning f\u00e6rdig, fandt %s sider der matcher s\u00f8geforesp\u00f8rgslen.", "Search within %(docstitle)s": "S\u00f8g i %(docstitle)s", "Searching": "S\u00f8ger", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Vis kilde", "Table of Contents": "", "This Page": "Denne side", "Welcome! This is": "Velkommen! Dette er", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Din s\u00f8gning matchede ikke nogen dokumenter. Sikr dig at alle ord er stavet korrekt og at du har valgt nok kategorier.", "all functions, classes, terms": "alle funktioner, klasser, begreber", "can be huge": "kan v\u00e6re enormt", "last updated": "sidst opdateret", "lists all sections and subsections": "viser alle afsnit og underafsnit", "next chapter": "n\u00e6ste kapitel", "previous chapter": "forrige kapitel", "quick access to all modules": "hurtig adgang til alle moduler", "search": "s\u00f8g", "search this documentation": "s\u00f8g i denne dokumentation", "the documentation for": "dokumentationen for"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/da/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/da/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..1948fa6 --- /dev/null +++ b/sphinx/sphinx/locale/da/LC_MESSAGES/sphinx.po @@ -0,0 +1,3468 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# askhl <asklarsen@gmail.com>, 2010-2011 +# Jakob Lykke Andersen <jakob@caput.dk>, 2014,2016 +# Joe Hansen <joedalton2@yahoo.dk>, 2016,2019 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Danish (http://www.transifex.com/sphinx-doc/sphinx-1/language/da/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: da\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "konfigurationsmappe indeholder ikke en conf.py-fil (%s)" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "Kan ikke finde kildemappen (%s)" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "Kildemappe og destinationsmappe kan ikke være identiske" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "Kører Sphinx v%s" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "Dette projekt kræver mindst Sphinx v%s og kan derfor ikke bygges med denne version." + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "indlæser oversættelser [%s] ..." + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "færdig" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "ikke tilgængelig for indbyggede beskeder" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "fejlede: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "lykkedes" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "færdig med problemer" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "kompilering %s, %s advarsel." + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "kompilering %s." + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "Ingen sådan konfigurationsværdi: %s" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "Konfigurationsværdien %r er allerede til stede" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "figur %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "tabel %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "Kildekode %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "primary_domain %r blev ikke fundet, ignorerer." + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "Ukendt hændelsesnavn: %s" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "domænet %s er allerede registreret" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "Rollen %r er allerede registreret til domæne %s" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "source_parser for %r er allerede registreret" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "Kunne ikke importere udvidelse %s" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "Udvidelsen %s brugt af dette projekt kræver mindst Sphinx v%s; den kan derfor ikke bygges med denne version." + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "læser kilder ..." + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "forbereder dokumenter" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Indbyggede" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Modulniveau" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "konfigurationsværdien »epub_contributor« bør ikke være tom for EPUB3" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "ugyldig css_file: %r, ignoreret" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "Beskedkatalogerne er i %(outdir)s." + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "læser skabeloner ..." + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "skriver beskedkataloger ..." + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "HTML-siden er i %(outdir)s." + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (i " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "HTML-siderne er i %(outdir)s." + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d. %b, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Generelt indeks" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "indeks" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "næste" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "forrige" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "kan ikke kopiere statisk fil %r" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "udgyldig js_file: %r, ignoreret" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "favicon-filen %r findes ikke" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s dokumentation" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Indeks" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Udgave" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "Kodningsfejl:" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "kan ikke finde filer %r" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "Indtast venligst noget tekst." + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "Indtast venligst enten »y« eller »n«." + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "Indtast venligt et filsuffiks, f.eks. ».rst« eller ».txt«" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "Filen %s findes allerede, udelader." + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "opret ikke makefile" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "skabelonmappe for skabelonfiler" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Afsnitsforfatter: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Modulforfatter: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Kodeforfatter: " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Forfatter: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parametre" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Returnerer" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Returtype" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C-funktion)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C-medlem)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C-makro)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C-type)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C-variabel)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "funktion" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "medlem" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "makro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "type" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "variabel" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Ny i version %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Ændret i version %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Forældet siden version %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "Template-parametre" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Kaster" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "klasse" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "koncept" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "optæl" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "optælling" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (indbygget funktion)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (metode i %s)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (klasse)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (global variabel eller konstant)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (attribut i %s)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Parametre" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (modul)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "metode" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "data" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "attribut" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "modul" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "nøgleord" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operator" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "objekt" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "undtagelse" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "erklæring" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "indbygget funktion" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Variable" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Rejser" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (i modulet %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (indbygget variabel)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (i modulet %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (indbygget klasse)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (klasse i %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (metode i %s.%s)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (statisk metode i %s.%s)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (statisk metode i %s)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (klassemetode i %s.%s)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (klassemetode i %s)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (attribut i %s.%s)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Python-modulindeks" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "moduler" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Forældet" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "klassemetode" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "statisk metode" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (forældet)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (direktiv)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (rolle)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "direktiv" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "rolle" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "miljøvariabel; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "begreb i ordliste" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "grammatisk element" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "referenceetiket" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "miljøvariabel" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "programtilvalg" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "dokument" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Modulindeks" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Søgeside" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "ny konfiguration" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "udvidelser ændret" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "kildemappe er ændret" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "se %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "se også %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Symboler" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "overskriv eksisterende filer" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "%s er ikke en mappe" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[graf: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[graf]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "Permalink til denne ligning" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(i %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[kilde]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Todo" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<oprindeligt punkt>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(Det <<oprindelige punkt>> befinder sig i %s, linje %d.)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "oprindeligt punkt" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[dok]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Modulkode" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Kildekode for %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Oversigt: modulkode" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Alle moduler, der er kode tilgængelig for</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "alias for :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "Nøgleordsargumenter" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "Eksempler" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "Andre parametre" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "Referencer" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Vær opmærksom" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Forsigtig" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Fare" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Fejl" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Fif" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Vigtigt" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Bemærk" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Se også" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Tip" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Advarsel" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "fortsat fra forrige side" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "fortsætter på næste side" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "side" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Søg" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Søg" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Vis kilde" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Oversigt" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Velkommen! Dette er" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "dokumentationen for" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "sidst opdateret" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Indeks og tabeller:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Fuldstændig indholdsfortegnelse" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "viser alle afsnit og underafsnit" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "søg i denne dokumentation" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Globalt modulindeks" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "hurtig adgang til alle moduler" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "alle funktioner, klasser, begreber" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Indeks – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Fuldt indeks på én side" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Indeksér sider efter bogstav" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "kan være enormt" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navigation" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Søg i %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Om disse dokumenter" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Ophavsret" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Ophavsret</a> %(copyright)s." + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© Ophavsret %(copyright)s." + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Sidst opdateret %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Bygget med <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Søg i %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Forrige emne" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "forrige kapitel" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Næste emne" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "næste kapitel" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Aktivér venligst JavaScript for at aktivere\n søgefunktionalitet." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "søg" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Søgeresultater" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "Din søgning matchede ikke nogen dokumenter. Sikr dig at alle ord er stavet korrekt og at du har valgt nok kategorier." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Hurtig søgning" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Denne side" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Ændringer i version %(version)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Automatisk oprettet liste af ændringer i version %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Biblioteksændringer" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Ændringer i C-API" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Andre ændringer" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Permalink til denne overskrift" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Permalink til denne definition" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Skjul søgeresultater" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "Søger" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Forbereder søgning..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "Søgning færdig, fandt %s sider der matcher søgeforespørgslen." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", i" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Udfold sidebjælke" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Sammenfold sidebjælke" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Indhold" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Permahenvisning til denne tabel" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Permahenvisning til denne kode" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Permahenvisning til dette billede" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "Permahenvisning til dette toctree" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Fodnoter" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[billede: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[billede]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/de/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/de/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..b6390e6 --- /dev/null +++ b/sphinx/sphinx/locale/de/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "de", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", in ", "About these documents": "\u00dcber dieses Dokument", "Automatically generated list of changes in version %(version)s": "Automatisch generierte Liste der \u00c4nderungen in Version %(version)s", "C API changes": "C API-\u00c4nderungen", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Seitenleiste einklappen", "Complete Table of Contents": "Vollst\u00e4ndiges Inhaltsverzeichnis", "Contents": "Inhalt", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Mit <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s erstellt.", "Expand sidebar": "Seitenleiste ausklappen", "Full index on one page": "Gesamtes Stichwortverzeichnis auf einer Seite", "General Index": "Stichwortverzeichnis", "Global Module Index": "Globaler Modulindex", "Go": "Los", "Hide Search Matches": "Suchergebnisse ausblenden", "Index": "Stichwortverzeichnis", "Index – %(key)s": "Stichwortverzeichnis – %(key)s", "Index pages by letter": "Stichwortverzeichnis nach Anfangsbuchstabe", "Indices and tables:": "Verzeichnisse und Tabellen:", "Last updated on %(last_updated)s.": "Zuletzt aktualisiert am %(last_updated)s.", "Library changes": "Bibliotheks-\u00c4nderungen", "Navigation": "Navigation", "Next topic": "N\u00e4chstes Thema", "Other changes": "Andere \u00c4nderungen", "Overview": "\u00dcbersicht", "Permalink to this definition": "Link zu dieser Definition", "Permalink to this headline": "Link zu dieser \u00dcberschrift", "Please activate JavaScript to enable the search\n functionality.": "Bitte aktivieren Sie JavaScript, wenn Sie die Suchfunktion nutzen wollen.", "Preparing search...": "Suche wird vorbereitet...", "Previous topic": "Vorheriges Thema", "Quick search": "Schnellsuche", "Search": "Suche", "Search Page": "Suche", "Search Results": "Suchergebnisse", "Search finished, found %s page(s) matching the search query.": "Die Suche ist fertig, es wurde(n) %s Seite(n) mit Treffern gefunden.", "Search within %(docstitle)s": "Suche in %(docstitle)s", "Searching": "Suchen", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Quellcode anzeigen", "Table of Contents": "Inhaltsverzeichnis", "This Page": "Diese Seite", "Welcome! This is": "Willkommen! Dies ist", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Ihre Suche ergab keine Treffer. Bitte stellen Sie sicher, dass alle W\u00f6rter richtig geschrieben sind und gen\u00fcgend Kategorien ausgew\u00e4hlt sind.", "all functions, classes, terms": "alle Funktionen, Klassen, Begriffe", "can be huge": "kann gro\u00df sein", "last updated": "zuletzt aktualisiert", "lists all sections and subsections": "Liste aller Kapitel und Unterkapitel", "next chapter": "n\u00e4chstes Kapitel", "previous chapter": "vorheriges Kapitel", "quick access to all modules": "schneller Zugriff auf alle Module", "search": "suchen", "search this documentation": "durchsuche diese Dokumentation", "the documentation for": "die Dokumentation f\u00fcr"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/de/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/de/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..da1d031 --- /dev/null +++ b/sphinx/sphinx/locale/de/LC_MESSAGES/sphinx.po @@ -0,0 +1,3469 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Georg Brandl <g.brandl@gmx.net>, 2013-2015 +# Jean-François B. <jfbu@free.fr>, 2018 +# Lukas Prokop <admin@lukas-prokop.at>, 2016-2018 +# Michael Hierweck <michael@hierweck.de>, 2017 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: German (http://www.transifex.com/sphinx-doc/sphinx-1/language/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "Konfigurationsverzeichnis enthält keine conf.py Datei (%s)" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "Kann Quellverzeichnis nicht finden (%s)" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "Quellverzeichnis und Zielverzeichnis können nicht identisch sein" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "Sphinx v%s in Verwendung" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "Dieses Projekt benötigt Version %s oder später und kann daher nicht gebaut werden." + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "Lade Übersetzungen [%s]…" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "erledigt" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "nicht verfügbar für vordefinierte Nachrichten" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "Fehlgeschlagen: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "Kein builder ausgewählt, verwende 'html' per default" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "abgeschlossen" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "mit Problemen beendet" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "Die Erweiterung %s gibt nicht an ob paralleles Datenlesen fehlerfrei möglich ist, es wird daher nicht davon ausgegangen - bitte kontaktiere den Erweiterungsautor zur Überprüfung und Angabe" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "Die Erweiterung %s gibt nicht an ob paralleles Datenschreiben fehlerfrei möglich ist, es wird daher nicht davon ausgegangen - bitte kontaktiere den Erweiterungsautor zur Überprüfung und Angabe" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "Ungültige Nummer %r for Konfiguration %r, wird ignoriert" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "Keine solche Konfigurationseinstellung: %s" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "Konfigurationswert %r bereits gesetzt" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "Abschnitt %s" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "Abb. %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Tab. %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "Quellcode %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "primary_domain %r nicht gefunden, daher ignoriert." + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "Event %r bereits verfügbar" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "Unbekannter Event name: %s" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "Pygments Lexer Name %r ist unbekannt" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "Ursprüngliche Ausnahme:\n" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Builtins" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Modulebene" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (in " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d.%m.%Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Stichwortverzeichnis" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "Index" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "weiter" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "zurück" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s Dokumentation" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Stichwortverzeichnis" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Release" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Autor des Abschnitts: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Autor des Moduls: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Autor des Quellcode: " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Autor: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s-%s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parameter" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Rückgabe" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Rückgabetyp" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C-Funktion)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C-Member)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C-Makro)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C-Typ)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C-Variable)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "Funktion" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "Member" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "Makro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "Typ" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "Variable" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Neu in Version %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Geändert in Version %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Veraltet ab Version %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "Template Parameter" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Wirft" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "Klasse" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "Aufzählung" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "Enumerator" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (Standard-Funktion)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (Methode von %s)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (Klasse)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (globale Variable oder Konstante)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (Attribut von %s)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Parameter" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (Modul)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "Methode" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "Wert" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "Attribut" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "Modul" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "Schlüsselwort" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "Operator" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "Objekt" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "Exception" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "Anweisung" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "Builtin-Funktion" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Variablen" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Verursacht" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (im Modul %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (Standard-Variable)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (in Modul %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (Builtin-Klasse)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (Klasse in %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (Methode von %s.%s)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (statische Methode von %s.%s)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (statische Methode von %s)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (Klassenmethode von %s.%s)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (Klassenmethode von %s)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (Attribut von %s.%s)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Python-Modulindex" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "Module" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Veraltet" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "Klassenmethode" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "statische Methode" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (veraltet)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (Direktive)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (Rolle)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "Direktive" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "Rolle" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "Umgebungsvariable; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "Glossareintrag" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "Grammatik-Token" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "Referenz-Label" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "Umgebungsvariable" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "Programmoption" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Modulindex" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Suche" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "siehe %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "siehe auch %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Sonderzeichen" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[Diagramm: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[Diagramm]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(in %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[Quellcode]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Zu tun" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<ursprüngliche Eintrag>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(Der <<ursprüngliche Eintrag>> steht in %s, Zeile %d.)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "ursprüngliche Eintrag" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[Doku]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Modul-Quellcode" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Quellcode für %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Überblick: Modul-Quellcode" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Alle Module, für die Quellcode verfügbar ist</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "Alias von :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Achtung" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Vorsicht" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Gefahr" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Fehler" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Hinweis" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Wichtig" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Bemerkung" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Siehe auch" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Tipp" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Warnung" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "Fortsetzung der vorherigen Seite" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "Fortsetzung auf der nächsten Seite" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "Seite" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "Inhaltsverzeichnis" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Suche" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Los" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Quellcode anzeigen" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Übersicht" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Willkommen! Dies ist" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "die Dokumentation für" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "zuletzt aktualisiert" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Verzeichnisse und Tabellen:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Vollständiges Inhaltsverzeichnis" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "Liste aller Kapitel und Unterkapitel" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "durchsuche diese Dokumentation" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Globaler Modulindex" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "schneller Zugriff auf alle Module" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "alle Funktionen, Klassen, Begriffe" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Stichwortverzeichnis – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Gesamtes Stichwortverzeichnis auf einer Seite" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Stichwortverzeichnis nach Anfangsbuchstabe" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "kann groß sein" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navigation" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Suche in %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Über dieses Dokument" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Copyright" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Zuletzt aktualisiert am %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Mit <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s erstellt." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Suche in %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Vorheriges Thema" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "vorheriges Kapitel" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Nächstes Thema" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "nächstes Kapitel" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Bitte aktivieren Sie JavaScript, wenn Sie die Suchfunktion nutzen wollen." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "suchen" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Suchergebnisse" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "Ihre Suche ergab keine Treffer. Bitte stellen Sie sicher, dass alle Wörter richtig geschrieben sind und genügend Kategorien ausgewählt sind." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Schnellsuche" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Diese Seite" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Automatisch generierte Liste der Änderungen in Version %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Bibliotheks-Änderungen" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "C API-Änderungen" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Andere Änderungen" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Link zu dieser Überschrift" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Link zu dieser Definition" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Suchergebnisse ausblenden" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "Suchen" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Suche wird vorbereitet..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "Die Suche ist fertig, es wurde(n) %s Seite(n) mit Treffern gefunden." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", in " + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Seitenleiste ausklappen" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Seitenleiste einklappen" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Inhalt" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Link zu dieser Tabelle" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Link zu diesem Quellcode" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Link zu diesem Bild" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "Permanenter Link zu diesem Inhaltsverzeichnis" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Fußnoten" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[Bild: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[Bild]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/el/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/el/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..2bdbfea --- /dev/null +++ b/sphinx/sphinx/locale/el/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "el", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a>%(copyright)s", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", \u03c3\u03c4\u03bf ", "About these documents": "\u03a3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03b1\u03c5\u03c4\u03ac \u03c4\u03b1 \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03b1", "Automatically generated list of changes in version %(version)s": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b1 \u03c0\u03b1\u03c1\u03b1\u03b3\u03cc\u03bc\u03b5\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ce\u03bd \u03c3\u03c4\u03b7\u03bd \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7 %(version)s", "C API changes": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ad\u03c2 \u03c3\u03c4\u03bf API \u03c4\u03b7\u03c2 C", "Changes in Version %(version)s — %(docstitle)s": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ad\u03c2 \u03c3\u03c4\u03b7\u03bd \u0388\u03ba\u03b4\u03bf\u03c3\u03b7 %(version)s —'\n%(docstitle)s", "Collapse sidebar": "\u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf \u03c0\u03bb\u03b1\u03ca\u03bd\u03ae\u03c2 \u03bc\u03c0\u03ac\u03c1\u03b1\u03c2", "Complete Table of Contents": "\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03a0\u03af\u03bd\u03b1\u03ba\u03b1\u03c2 \u03a0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd", "Contents": "\u03a0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03b1", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u0394\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03ae\u03b8\u03b7\u03ba\u03b5 \u03bc\u03b5 \u03c4\u03bf <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c0\u03bb\u03b1\u03ca\u03bd\u03ae\u03c2 \u03bc\u03c0\u03ac\u03c1\u03b1\u03c2", "Full index on one page": "\u03a0\u03bb\u03ae\u03c1\u03b5\u03c2 \u03b5\u03c5\u03c1\u03b5\u03c4\u03ae\u03c1\u03b9\u03bf \u03c3\u03b5 \u03bc\u03af\u03b1 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1", "General Index": "\u039a\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03cc \u0395\u03c5\u03c1\u03b5\u03c4\u03ae\u03c1\u03b9\u03bf\u03bf", "Global Module Index": "\u039a\u03b1\u03b8\u03bf\u03bb\u03b9\u03ba\u03cc \u0395\u03c5\u03c1\u03b5\u03c4\u03ae\u03c1\u03b9\u03bf \u039c\u03bf\u03bd\u03ac\u03b4\u03c9\u03bd", "Go": "\u03a0\u03ac\u03bc\u03b5", "Hide Search Matches": "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u0395\u03c5\u03c1\u03b5\u03b8\u03ad\u03bd\u03c4\u03c9\u03bd \u0391\u03bd\u03b1\u03b6\u03b7\u03c4\u03ae\u03c3\u03b5\u03c9\u03bd", "Index": "\u0395\u03c5\u03c1\u03b5\u03c4\u03ae\u03c1\u03b9\u03bf", "Index – %(key)s": "\u0395\u03c5\u03c1\u03b5\u03c4\u03ae\u03c1\u03b9\u03bf – %(key)s", "Index pages by letter": "\u03a3\u03b5\u03bb\u03af\u03b4\u03b5\u03c2 \u03b5\u03c5\u03c1\u03b5\u03c4\u03b7\u03c1\u03af\u03bf\u03c5 \u03b1\u03bd\u03ac \u03b3\u03c1\u03ac\u03bc\u03bc\u03b1", "Indices and tables:": "\u0395\u03c5\u03c1\u03b5\u03c4\u03ae\u03c1\u03b9\u03b1 \u03ba\u03b1\u03b9 \u03c0\u03af\u03bd\u03b1\u03ba\u03b5\u03c2:", "Last updated on %(last_updated)s.": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b1 \u03b5\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c3\u03c4\u03b9\u03c2 %(last_updated)s.", "Library changes": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ad\u03c2 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7\u03c2", "Navigation": "\u03a0\u03bb\u03bf\u03ae\u03b3\u03b7\u03c3\u03b7", "Next topic": "\u0395\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf \u03b8\u03ad\u03bc\u03b1", "Other changes": "\u0386\u03bb\u03bb\u03b5\u03c2 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ad\u03c2", "Overview": "\u0395\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7", "Permalink to this definition": "\u039c\u03cc\u03bd\u03b9\u03bc\u03bf\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03cc\u03bd \u03c4\u03bf\u03bd \u03bf\u03c1\u03b9\u03c3\u03bc\u03cc", "Permalink to this headline": "\u039c\u03cc\u03bd\u03b9\u03bc\u03bf\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ae\u03bd \u03c4\u03b7\u03bd \u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1", "Please activate JavaScript to enable the search\n functionality.": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce, \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b7 JavaScript \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1\n \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2.", "Preparing search...": "\u03a0\u03c1\u03bf\u03b5\u03c4\u03bf\u03b9\u03bc\u03b1\u03c3\u03af\u03b1 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2...", "Previous topic": "\u03a0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf \u03b8\u03ad\u03bc\u03b1", "Quick search": "\u03a3\u03cd\u03bd\u03c4\u03bf\u03bc\u03b7 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7", "Search": "\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7", "Search Page": "\u03a3\u03b5\u03bb\u03af\u03b4\u03b1 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2", "Search Results": "\u0391\u03c0\u03bf\u03c4\u03b5\u03bb\u03ad\u03c3\u03bc\u03b1\u03c4\u03b1 \u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2", "Search finished, found %s page(s) matching the search query.": "\u0397 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03bf\u03bb\u03bf\u03ba\u03bb\u03b7\u03c1\u03ce\u03b8\u03b7\u03ba\u03b5, \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5/\u03b1\u03bd %s \u03c3\u03b5\u03bb\u03af\u03b4\u03b1/\u03b5\u03c2 \u03bc\u03b5 \u03b2\u03ac\u03c3\u03b7 \u03c4\u03bf\u03c5\u03c2 \u03cc\u03c1\u03bf\u03c5\u03c2 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2.", "Search within %(docstitle)s": "\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03c3\u03c4\u03bf %(docstitle)s", "Searching": "\u0395\u03ba\u03c4\u03b5\u03bb\u03b5\u03af\u03c4\u03b1\u03b9 \u03b7 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "\u03a0\u03c1\u03bf\u03b2\u03bf\u03bb\u03ae \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1", "Table of Contents": "\u03a0\u03af\u03bd\u03b1\u03ba\u03b1\u03c2 \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd", "This Page": "\u0391\u03c5\u03c4\u03ae \u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1", "Welcome! This is": "\u039a\u03b1\u03bb\u03c9\u03c3\u03ae\u03c1\u03b8\u03b1\u03c4\u03b5! \u0391\u03c5\u03c4\u03ae \u03b5\u03af\u03bd\u03b1\u03b9", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u0397 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03ae \u03c3\u03b1\u03c2 \u03b4\u03b5\u03bd \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03b9\u03ae\u03b8\u03b7\u03ba\u03b5 \u03bc\u03b5 \u03ba\u03b1\u03bd\u03ad\u03bd\u03b1 \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03bf. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce, \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03cc\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bb\u03ad\u03be\u03b5\u03b9\u03c2 \u03ad\u03c7\u03bf\u03c5\u03bd \u03c4\u03b7 \u03c3\u03c9\u03c3\u03c4\u03ae \u03bf\u03c1\u03b8\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b1 \u03ba\u03b1\u03b9 \u03cc\u03c4\u03b9 \u03ad\u03c7\u03b5\u03c4\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03b5\u03b9\u03c2 \u03b1\u03c1\u03ba\u03b5\u03c4\u03ad\u03c2 \u03ba\u03b1\u03c4\u03b7\u03b3\u03bf\u03c1\u03af\u03b5\u03c2.", "all functions, classes, terms": "\u03cc\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03c3\u03c5\u03bd\u03b1\u03c1\u03c4\u03ae\u03c3\u03b5\u03b9\u03c2, \u03ba\u03bb\u03ac\u03c3\u03b5\u03b9\u03c2, \u03cc\u03c1\u03bf\u03b9", "can be huge": "\u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03b5\u03c1\u03ac\u03c3\u03c4\u03b9\u03bf", "last updated": "\u03c4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b1 \u03b5\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7", "lists all sections and subsections": "\u03b1\u03c0\u03b1\u03c1\u03b9\u03b8\u03bc\u03b5\u03af \u03cc\u03bb\u03b1 \u03c4\u03b1 \u03ba\u03b5\u03c6\u03ac\u03bb\u03b1\u03b9\u03b1 \u03ba\u03b1\u03b9 \u03c5\u03c0\u03bf\u03ba\u03b5\u03c6\u03ac\u03bb\u03b1\u03b9\u03b1", "next chapter": "\u03b5\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf \u03ba\u03b5\u03c6\u03ac\u03bb\u03b1\u03b9\u03bf", "previous chapter": "\u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf \u03ba\u03b5\u03c6\u03ac\u03bb\u03b1\u03b9\u03bf", "quick access to all modules": "\u03b3\u03c1\u03ae\u03b3\u03bf\u03c1\u03b7 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03b5 \u03cc\u03bb\u03b5\u03c2 \u03c4\u03b9\u03c2 \u03bc\u03bf\u03bd\u03ac\u03b4\u03b5\u03c2", "search": "\u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7", "search this documentation": "\u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03b1\u03c5\u03c4\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03c4\u03b5\u03ba\u03bc\u03b7\u03c1\u03af\u03c9\u03c3\u03b7\u03c2", "the documentation for": "\u03b7 \u03c4\u03b5\u03ba\u03bc\u03b7\u03c1\u03af\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/el/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/el/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..7555009 --- /dev/null +++ b/sphinx/sphinx/locale/el/LC_MESSAGES/sphinx.po @@ -0,0 +1,3467 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Stelios Vitalis <liberostelios@gmail.com>, 2015 +# tzoumakers tzoumakers <tzoumakersx@gmail.com>, 2019 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Greek (http://www.transifex.com/sphinx-doc/sphinx-1/language/el/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: el\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "ο κατάλογος παραμετροποίησης δεν περιλαμβάνει κανένα αρχείο conf.py (%s)" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "Δεν είναι δυνατή η εύρεση του καταλόγου πηγής (%s)" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "Ο κατάλογος πηγής και ο κατάλογος προορισμού δεν είναι δυνατό να είναι ίδιοι" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "Εκτέλεση Sphinx έκδοση %s" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "Αυτό το έργο απαιτεί Sphinx έκδοσης τουλάχιστον %s και επομένως δεν είναι δυνατή η μεταγλωτισση με αυτή την έκδοση." + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "δημιουργία καταλόγου εξόδου" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "κατά τον καθορισμό της επέκτασης %s" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "η 'παραμετροποίηση' σύμφωνα με τον τρέχοντα ορισμό στο conf.py δεν αποτελεί καλέσιμο. Παρακαλείσθε να τροποποιήσετε τον ορισμό ώστε να το κάνετε μία καλέσιμη συνάρτηση. Αυτό απαιτείται προκειμένου το conf.py να συμπεριφέρεται ως μία επέκταση Sphinx." + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "φόρτωση μεταφράσεων [%s]..." + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "ολοκλήρωση" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "δεν είναι διαθέσιμο για εσωτερικά μηνύματα" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "φόρτωση πακτωμένου περιβάλλοντος" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "αποτυχία: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "Δεν επιλέχθηκε μεταγλωττιστής, θα χρησιμοποιηθεί ο προεπιλεγμένος: html" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "επιτυχία" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "ολοκλήρωση με προβλήματα" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "μεταγλώττιση %s, %s προειδοποίηση" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "μεταγλώττιση %s." + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "η κλάση κόμβου %r έχει ήδη καταχωρηθεί, οι επισκέπτες της θα υπερσκελιστούν" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "η οδηγία %r έει ήδη καταχωρηθεί, θα υπερσκελιστεί" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "ο ρόλος %r έχει ήδη καταχωρηθεί, θα υπερσκελιστεί" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "η επέκταση %s δεν καθορίζει αν είναι ασφαλής η παράλληλη ανάγνωση, υποθέτοντας ότι δεν είναι - παρακαλείσθε να ζητήσετε από το δημιουργό της επέκτασης να το ελέγχει και να το κάνει σαφές" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "η επέκταση %s δεν καθορίζει αν είναι ασφαλής η παράλληλη ανάγνωση, υποθέτοντας ότι δεν είναι - παρακαλείσθε να ζητήσετε το δημιουργό της επέκτασης να το ελέγξει και να το κάνει σαφές" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "εκτέλεση σειριακής %s" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "δεν είναι δυνατή η υπερσκέλιση της ρύθμισης παραμετροποίησης καταλόγου %r, θα αγνοηθεί (χρησιμοποιήστε το %r για να καθορίσετε τα επιμέρους στοιχεία)" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "ανέγκυρος αριθμός %r για τιμή παραμετροποίησης %r, θα αγνοηθεί" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "δεν είναι δυνατή η υπερσκέλιση της ρύθμισης παραμετροποίησης %r με τύπο ο οποίος δεν υποστηρίζεται, θα αγνοηθεί" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "άγνωστη τιμή παραμετροποίσης %r στην υπερσκέλιση, θα αγνοηθεί" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "Δεν υπάρχει τέτοια τιμή παραμετροποίησης: %s" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "Η τιμή παραμετροποίησης %r υφίσταται ήδη." + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "Υπάρχει ένα συντακτικό λάθος στο αρχείο παραμετροποίησής σας: %s\n" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "Το αρχείο παραμετροποίησης (ή ένα από τα στοιχεία που εισάγει) κάλεσε την sys.exit()" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "Υπάρχει ένα προγραμματιστικό λάθος στο αρχείο παραμετροποίησής σας:\n\n%s" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "Η τιμή παραμτετροποίησης 'source_suffix' αναμένει στοιχειοσειρά, στοιχειοσειρά καταλόγου, ή λεξικό. Αλλά παραδόθηκε %r." + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "Τομέας %s" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "Εικ. %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Πίνακας %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "Λίστα %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "Η τιμή παραμετροποίησης '{name}' πρέπει να λαμβάνει μία από τις {candidates} αλλά εκχωρήθηκε η '{current}'." + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "Η τιμή παραμετροποίησης '{name]' έχει τύπο '[current__name__}'; αναμενόμενη {permitted}." + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "Η τιμή παραμετροποίησης '{name}' έχει τύπο '{current__name__}', αρχικοποίηση σε '{default__name__}'." + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "η τιμή παραμετροποίησης %r έχει καθοριστεί σε μία στοιχειοσειρά με χαρακτήρες μη ASCII; αυτό μπορεί να οδηγήσει στην εμφάνιση λαθών Unicode. Παρακαλείσθε να χρησιμοποιείται στοιχειοσειρές Unicode, δηλ. %r." + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "το primary_domain %r δεν βρέθηκε, θα αγνοηθεί." + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "Από την έκδοση 2.0, το Sphinx χρησιμοποιεί το \"index\" ως master_doc από προεπιλογή. Παρακαλείσθε να προσθέσετε το \"master_doc = 'conetnts'\" στο δικό σας conf.py." + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "Το συμβάν %r υπάρχει ήδη" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "Άγνωστο όνομα συμβάντος: %s" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "Η επέκταση %s απαιτείται από τις ρυθμίσεις needs_extensions, αλλά δεν είναι φορτωμένη." + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "Το έργο χρειάζεται την επέκταση %s τουλάχιστον στην έκδοση %s και επομένως δεν είναι δυνατή η μεταγλώττιση με τη φορτωμένη έκδοση (%s)." + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "Το όνομα %r δεν είναι γνωστό" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "Δεν είναι δυνατό το lex του literal_block ως %s. Η επισήμανση παραβλέφθηκε." + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "το έγγραφο δεν είναι αναγνωσιμό. Θα αγνοηθεί." + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "Η κλάση μεταγλώττισης %s δεν έχει χαρακτηριστικό \"name\" " + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "Ο μεταγλωττιστής %r υφίσταται ήδη (στο δομοστοιχείο %s)" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "Το όνομα μεταγλωττιστή %s δεν είναι καταχωρημένο ή διαθέσιμο δια μέσου του σημείου εισαγωγής" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "Το όνομα μεταγλωττιστή %sδεν είναι καταχορημένο" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "ο τομέας %s είναι ήδη καταχωρημένος" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "ο τομέας %s δεν έχει καταχωρηθεί ακόμη" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "Η οδηγία %r είναι ήδη καταχωρημένη στον τομέα %s" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "Ο ρόλος %r είναι ήδη καταχωρημένος στον τομέα %s" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "Ο δείκτης %r είναι ήδη καταχωρημένος στον τομέα %s" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "Το object_type %r είναι ήδη καταχωρημένο" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "Το crossref_type %r είναι ήδη καταχωρημένο" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "το source_suffix %r είναι ήδη καταχωρημένο" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "το source_parser για το %r είναι ήδη καταχωρημένο" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "Ο αναλυτής πηγής για το %s δεν είναι καταχωρημένος" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "Ο μεταφραστής για το %r υφίσταται ήδη" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "το kwargs για το add_node() πρέπει να είναι μία (visit, depart) συνάρτηση πλειάδας: %r=%r" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "το enumerable_node %r είναι ήδη καταχωρημένο" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "ο συνθέτης μαθηματικών %s είναι ήδη καταχωρημένος" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "η επέκταση %r συγχωνεύθηκε ήδη με το Sphinx από την έκδοση %s; η επέκταση αυτή θα αγνοηθεί." + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "Αρχική εξαίρεση:\n" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "Δεν ήταν δυνατή η εισαγωγή της επέκτασης %s" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "η επέκταση %r δεν έχει συνάρτηση setup(); αποτελεί δομοστοιχείο επέκτασης του Sphinx;" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "Η επέκταση %s η οποία χρησιμοποιείται από αυτό το έργο απαιτεί Sphinx έκδοσης τουλάχιστον %s: επομένως δεν είναι δυνατή η μεταγλώττιση με αυτή την έκδοση." + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "η επέκταση %r επιστρέφει ένα μη υποστηριζόμενο αντικείμενο από τη συνάρτησή της setup(): θα έπρεπε να επιστρέφει None ή έναν κατάλογο μεταδεδομένων" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "το θέμα %r δεν έχει ρύθμιση \"theme\"" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "το θέμα %r δεν έχει ρύθμιση \"inherit\"" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "δεν βρέθηκε θέμα με το όνομα %r, το οποίο κληρονομήθηκε από το %r" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "η ρύθμιση %s.%s δεν εμφανίζεται από τις παραμετροποιήσεις θέματος που αναζητήθηκαν" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "δόθηκε μη υποστηριζόμενη επιλογή θέματος %r" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "το αρχείο %r στο μονοπάτι θέματος δεν αποτελεί ένα έγκυρο zipfile ή δεν περιλαμβάνει ένα θέμα" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "το sphinx_rtd_theme δεν αποτελεί πλέον μία σκληρή εξάρτηση από την έκδοση 1.4.0. Παρακαλείσθε να το εγκαταστήσετε χειροκίνητα. (pip install sphinx_rtd_theme)" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "δεν βρέθηκε θέμα με όνομα %r (απουσιάζει το theme.conf;)" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "δεν βρέθηκε μία κατάλληλη εικόνα για τον μεταγλωττιστή %s: %s (%s)" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "δεν βρέθηκε μία κατάλληλη εικόνα για τον μεταγλωττιστή %s: %s" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "μεταγλώττιση [mo]:" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "εγγραφή εξόδου..." + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "όλα τα αρχεία po του %d" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "στόχοι για τα αρχεία po του %d οι οποίοι έχουν καθοριστεί" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "στόχοι για τα αρχεία po του %d τα οποία είναι ξεπερασμένα" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "όλα τα αρχεία πηγής" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "το αρχείο %r που δόθηκε στη γραμμή εντολής δεν βρίσκεται κάτω από τον κατάλογο πηγής, θα αγνοηθεί" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "το αρχείο %r που δόθηκε στη γραμμή εντολής δεν υπάρχει, θα αγνοηθεί" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "τα αρχεία πηγής %d που δόθηκαν στη γραμμή εντολής" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "στόχοι για τα αρχεία πηγής %d τα οποία είναι ξεπερασμένα" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "μεταγλώττιση [%s]:" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "αναζήτηση για νεοξεπερασμένα αρχεία..." + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "βρέθηκε %d" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "δεν βρέθηκε κανένα" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "Περιβάλλον μετατροπής αντικειμένων Python σε ροή bytes" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "έλεγχος συνοχής" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "κανένας στόχος δεν είναι ξεπερασμένος." + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "αναβάθμιση περιβάλλοντος:" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "%s προστέθηκε, %s άλλαξε, %s απομακρύνθηκε" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "ανάγνωση πηγών..." + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "σε αναμονή για εργάτες..." + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "docname προς εγγραφή: %s" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "προετοιμασία κειμένων" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "βρέθηκε διπλότυπη εγγραφή ToC: %s" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "αντιγραφή εικόνων..." + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "δεν είναι δυνατή η ανάγωνση αρχείου εικόνας %r: αντί αυτού θα αντιγραφεί" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "δεν είναι δυνατή η αντιγραφή αρχείου εικόνας %r: %s" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "δεν είναι δυνατή η εγγραφή αρχείου %r: %s" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "Το pillow δεν βρέθηκε - αντιγραφή αρχείων εικόνας" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "εγγραφή %s αρχείου..." + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "άγνωστο mimetype για %s, θα ανγοηθεί" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "Το αρχείο επισκόπησης είναι σε %(outdir)s." + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "καμία αλλαγή στην έκδοση %s." + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "εγγραφή αρχείου σύνοψης" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Ενσωματωμένες λειτουργίες" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Επίπεδο μονάδας λειτουργίας" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "αντιγραφή αρχείων πηγής..." + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "δεν ήταν δυνατή η ανάγνωση %r για τη δημιουργία changelog" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "Ο προσωρινός μεταγλωττιστής δεν δημιουργεί αρχεία." + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "Το αρχείο ePub βρίσκεται σε %(outdir)s." + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "η τιμή παραμετροποίησης \"epub_language\" (ή \"language\") δεν πρέπει να είναι κενή για EPUB3" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "η τιμή παραμετροποίησης \"epub_uid\" πρέπει να είναι XML NAME για EPUB3" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "η τιμή παραμετροποίησης \"epub_title\" (ή \"html_title\") δεν πρέπει να είναι κενή για EPUB3" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "η τιμή παραμετροποίησης \"epub_author\" δεν πρέπει να είναι κενή για EPUB3" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "η τιμή παραμετροποίησης \"epub_contributor\" δεν πρέπει να είναι κενή για EPUB3" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "η τιμή παραμετροποίησης \"epub_description\" δεν πρέπει να είναι κενή για EPUB3" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "η τιμή παραμετροποίησης \"epub_publisher\" δεν πρέπει να είναι κενή για EPUB3" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "η τιμή παραμετροποίησης \"epub_copyright\" (ή \"copyright\") δεν πρέπει να είναι κενή για EPUB3" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "η τιμή παραμετροποίησης \"epub_identifier\" δεν πρέπει να είναι κενή για EPUB3" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "η τιμή παραμετροποίησης \"version\" δεν πρέπει να είναι κενή για EPUB3" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "ανέγκυρο css_file: %r, θα αγνοηθεί" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "Οι κατάλογοι των μηνυμάτων είναι στο %(outdir)s." + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "στόχοι για %d πρότυπα αρχεία" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "ανάγνωση προτύπων..." + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "εγγραφή καταλόγων μηνύματος..." + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "Αναζητήστε οποιαδήποτε λάθη στο παραπάνω αποτέλεσμα ή σε %(outdir)s/output.txt" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "Δεν βρέθηκε το anchor '%s'" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "λανθασμένος σύνδεσμος: %s (%s)" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "Οι σελίδες manual βρίσκονται σε %(outdir)s." + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "δεν βρέθηκε τιμή παραμετροποίησης \"man_pages\"; δεν θα καταγραφούν manual pages" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "εγγραφή" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "η τιμή παραμετροποίησης \"man_pages\" κάνει αναφορά το άγνωστο κείμενο %s" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "Η σελίδα HTML είναι στο %(outdir)s." + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "συναρμολόγηση απλού κειμένου" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "εγγραφή επιπρόσθετων αρχείων" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "Τα αρχεία Texinfo βρίσκονται σε %(outdir)s." + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "\nΕκτελέστε 'make' σε αυτό τον κατάλογο για να εκτελέσετε αυτά μέσω του makeinfo\n(χρησιμοποιήστε το 'make info' εδώ για να το κάνετε αυτόματα)." + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "δεν βρέθηκε τιμή \"texinfo_documents\": δεν θα γίνει εγγραφή κανενός κειμένου" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "η τιμή παραμετροποίησης \"texninfo_documents\" αναφέρεται σε άγνωστο κείμενο %s" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "επεξεργασία %s" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "επίλυση αναφορών..." + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (σε " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "αντιγραφή αρχείων υποστήριξης Texinfo" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "σφάλμα κατά την εγγραφή του αρχείου Makefile: %s" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "Τα αρχεία κειένου βρίσκονται σε %(outdir)s." + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "σφάλμα καταγραφής αρχείου %s: %s" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "Τα αρχεία XML βρίσκονται σε %(outdir)s." + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "Τα αρχεία XML βρίσκονται σε %(outdir)s." + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "το αρχείο πληροφοριών μεταγλώττισης είναι κατεστραμμένο: %r" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "Οι σελίδες HTML βρίσκονται σε %(outdir)s." + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "Αδυναμία ανάγνωσης αρχείου πληροφοριών μεταγλώττισης: %r" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d de %B de %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "η τιμή παραμετροποίησης html_use_opensearch πρέπει να είναι τώρα στοιχειοσειρά" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Κεντρικό Ευρετήριοο" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "ευρετήριο" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "επόμενο" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "προηγούμενο" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "αντιγραφή αρχείων μεταφόρτωσης..." + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "δεν είναι δυνατή η αντιγραφή του μεταφορτωμένου αρχείου %r: %s" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "αντιγραφή στατικών αρχείων..." + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "δεν είναι δυνατή η αντιγραφή στατικού αρχείου %r" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "δεν είναι δυνατή η αντιγραφή του επιπλέον αρχείου %r" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "Αδυναμία εγγραφής του αρχείου πληροφοριών μεταγλώττισης: %r" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "ο κατάλογος εύρεσης δεν ήταν δυνατό να φορτωθεί, αλλά δε θα μεταγλωττιστούν όλα τα έγγραφα: ο κατάλογος δε θα είναι πλήρης." + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "η σελιδα %s ταιριάζει δύο σχέδια στo html_sidebars: %r and %r" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "ένα σφάλμα Unicode παρουσιάστηκε κατά τη δημιουργία της σελίδας %s. Παρακαλείστε να επιβεβαιώσετε ότι όλες οι τιμές παραμετροποίησης οι οποίες περιλαμβάνουν μη-ASCII περιεχόμενο είναι στοιχειοσειρές Unicode." + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "Ένα σφάλμα συνέβη κατά τη σύνθεση της σελίδας %s.\n\nΑιτία %r " + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "ανέγκυρο js_file: %r, θα αγνοηθεί" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "Πολλά math_renderers έχουν καταγραφεί. Αλλά δεν έχει επιλεγεί κανένα math_renderer." + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "Δόθηκε άγνωστο math_renderer %r." + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "Η εγγραφή html_extra_path %r δεν υπάρχει" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "η εγγραφή html_static_path %r δεν υπάρχει" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "το αρχείο logo %r δεν υπάρχει" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "το αρχείο favicon %r δεν υπάρχει" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "Τεκμηρίωση του %s - %s" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "Τα αρχεία LaTeX βρίσκονται σε %(outdir)s." + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "\nΕκτελέστε 'make' σε αυτό τον κατάλογο για να εκτελέσετε αυτά μέσω του (pdf)latex\n(χρησιμοποιήστε το 'make latexpdf' εδώ για να το κάνετε αυτόματα)." + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "δεν βρέθηκε τιμή παραμετροποίησης \"latex_documents\": δεν θα πραγματοποιηθεί εγγραφή για κανένα κείμενο" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "η τιμή παραμετροποίησης \"latex_documents\" κάνει αναφορά το άγνωστο κείμενο %s" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Ευρετήριο" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Δημοσίευση" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "καμία γνωστή επιλογή Babel για τη γλώσσα %r" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "αντιγραφή αρχείων υποστήριξης TeX" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "αντιγραφή αρχείων υποστήριξης TeX..." + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "αντιγραφή επιπρόσθετων αρχείων" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "Παρουσιάστηκε εξαίρεση κατά τη μεταγλώττιση, εκκίνηση αποσφαλματιστή: " + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "σφάλμα reST markup:" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "Σφάλμα κωδικοποίησης:" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "Το πλήρες ιστορικό έχει αποθηκευτεί σε %s, σε περίπτωση που επιθυμείτε να αναφέρετε το ζήτημα στους προγραμματιστές." + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "Σφάλμα αναδρομής:" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "Αυτό μπορεί να συμβεί με πολύ μεγάλα ή βαθιά εμφωλιασμένα αρχεία πηγής. Μπορείτε προσεκτικά να αυξήσετε την προεπιλεγμένη τιμή αναδρομικότητας Python στο conf.py με π.χ.:" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "Εμφανίστηκε εξαίρεση:" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "Παρακαλείστε να το αναφέρετε αν ήταν ένα σφάλμα χρήσης, ώστε ένα καλύτερο μήνυμα σφάλματος να δοθεί την επόμενη φορά." + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "Μία αναφορά σφάλματος μπορεί να υποβληθεί στον ινχηλάτη στο https://github.com/sphinx-doc/sphinx/issues>. Ευχαριστούμε!" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "ο αριθμός εργασίας θα πρέπει να είναι θετικός αριθμός" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "Για περισσότερες πληροφορίες, επισκεφτείτε το <http://sphinx-doc.org/>." + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "\nΔημιουργία τεκμηρίωσης από τα αρχεία πηγής.\n\nτο sphinx-builld δημιουργεί τεκμηρίωση από τα αρχεία στο SOURCEDIR και τα τοποθετεί \nστο OUTPUTDIR. Αναζητά το \"conf.py\" στο SOURCEDIR για τις ρυθμίσεις παραμετροποίησης.\nΤο εργαλείο 'sphinx-quickstarter' μπορεί να χρησιμοποιηθεί για να δημιουργηθούν τα πρότυπα αρχεία,\nσυμπεριλαμβανομένου του 'conf.py'\n\nΤο sphinx-build μπορεί να δημιουργήσει τεκμηρίωση σε διάφορους τύπους. Ένας τύπος \nεπιλέγεται καθορίζοντας το όνομα του μεταγλωττιστή στη γραμμή εντολών: η προεπιλογή είναι\nHTML. Οι μεταγλωττιστές μπορούν επίσης να εκτελέσουν άλλες εργασίες σχετικές με την επεξεργασία \nτης τεκμηρίωσης.\n\nΑπό προεπιλογή, οτιδήποτε είναι ξεπερασμένο θα μεταγλωττιστεί. Αποτέλεσμα μόνο για συκεγκεκριμένα \nαρχεία μπορεί να παραχθεί καθορίζοντας επι μέρους ονομάτων αρχείων.\n" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "μονοπάτι για τα αρχεία πηγής τεκμηρίωσης" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "μονοπάτι στον κατάλογο εξόδου" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "μία λίστα με συγκεκριμένα αρχεία να επαναμεταγλωττιστούν. Θα αγνοηθεί αν δοθεί το -a" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "γενικές επιλογές" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "μεταγλωττιστής για χρήση (προεπιλογή: html)" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "εγγραφή όλων των αρχείων (προεπιλογή: εγγραφή μόνο νέων και αλλαγμένων αρχείων)" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "μην χρησιμοποιείτε ένα αποθηκευμένο περιβάλλον, πάντα να διαβάζετε όλα τα αρχεία" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "μονοπάτι για το αποθηκευμένο περιβάλλον και τα αρχεία doctree (προεπιλογή: OUTPUTDIR/.doctrees)" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "παράλληλος μεταγλωττισμός με Ν διεργασίες όπου είναι δυνατό (ιδιαίτερη τιμή \"auto\" θα ορίσει Ν στο cpu-count)" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "το μονοπάτι όπου βρίσκεται το αρχείο παραμετροποίησης (conf.py) (προεπιλογή: το ίδιο όπως το SOURCEDIR)" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "να μη χρησιμοποιηθεί κανένα αρχείο παραμετροποίησης, μόνο επιλογές -D" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "παράκαμψη ρύθμισης στο αρχείο παραμετροποίησης" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "μεταφορά τιμής στα πρότυπα HTML" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "ορίστε ετικέτα: συμπεριλάβατε \"only\" τμήματα με TAG" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "Ο τρόπος nit-picky, προειδοποιεί για όλες τις αναφορές που απουσιάζουν" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "επιλογές εξόδου κονσόλας" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "αυξήστε τον βερμπαλισμό (μπορεί να επαναληφθεί)" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "καμία έξοδος στο stdout, μόνο προειδοποιήσεις στο stderr" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "κανένα αποτέλεσμα ούτε προειδοποιήσεις" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "να γίνεται εκπομπή χρωματιστής εξόδου (προεπιλογή: auto-detect)" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "να μην παρουσιάζεται έγχρωμο αποτέλεσμα (προεπιλογή: αυτόματη αναγνώριση)" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "προειδοποιήσεις εγγραφής (και σφάλματα) στο δοθέν αρχείο" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "μετατροπή προειδοποιήσεων σε σφάλματα" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "απεικόνιση πλήρους ιστορικού σε περίπτωση εξαίρεσης" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "εκτέλεση Pdb σε περίπτωση εξαίρεσης" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "δεν είναι δυνατή η εύρεση αρχείων %r" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "δεν γίνεται συνδιασμός της επιλογής -a και των ονομάτων αρχείων" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "δεν είναι δυνατό το άνοιγμα του αρχείου προειδοποίησης %r: %s" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "Το όρισμα -D πρέπει να είναι της μορφής όνομα=τιμέ" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "Το όρισμα -Α πρέπει να είναι της μορφής όνομα=τιμή" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "αυτόματη εισαγωγή docstrings από τα δομοστοιχεία" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "αυτόματα κομμάτια δοκιμαστικού κώδικα σε τμήματα doctest" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "σύνδεσμος μεταξύ τεκμηρίωσης Sphinx διαφόρων έργων" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "γράψτε εγγραφές \"todo\" οι οποίες μπορούν αν εμφανίζονται ή να αποκρύπτονται κατά τη μεταγλώττιση" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "αναζήτηση για κάλυψη βιβλιογραφίας" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "να συμπεριληφθεί το math, απεικονισμένο ως εικόνες PNG η SVG" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "να συμπεριληφθεί το math, απεικονισμένο στο φυλλομετρηρή απο το MathJax" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "υποθετική εισαγωγή περιεχομένου βασισμένη στις τιμές παραμετροποίησης" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "να συμπεριληφθούν σύνδεσμοι στον πηγαίο κώδικα των τεκμηριωμένων αντικειμένων Python" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "δημιουργία αρχείου .nojekyll για έκδοση του εγγράφου στις σελίδες GitHub " + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "Παρακαλείστε να εισάγετε ένα έγκυρο όνομα μονοπατιού." + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "Παρακαλείστε να εισάγετε κάποιο κείμενο." + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "Παρακαλείστε να εισάγετε ένα από τα %s." + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "Παρακαλείστε να εισάγετε είτε 'y' είτε 'n'." + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "Παρακαλείστε να εισάγετε μία επέκταση αρχείου, π.χ. '.rst' ή '.txt'." + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "* Σημείωση: εισήχθησαν μη-ASCII χαρακτήρες και είναι άγνωστη η κωδικοποίηση του τερματικού -- λαμβάνεται ως UTF-8 ή Latin-1." + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "Καλώς ήρθατε στο εργαλείο γρήγορης εκκίνησης Sphinx %s." + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "Ριζικό μονοπάτι για την τεκμηρίωση" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "Σφάλμα: ένα υπάρχον conf.py έχει βρεθεί στοn επιλεγμένο ριζικό κατάλογο." + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "το sphinx-quickstart δεν θα αντικαταστήσει υπάρχοντα έργα Sphinx." + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "Παρακαλείστε να εισάγετε ένα νέο ριζικό μονοπάτι (ή απλά πιέστε το Enter για έξοδο)" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "Ξεχωριστοί κατάλογοι για πηγή και μεταγλώττιση (y/n)" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "Πρόθεμα ονόματος για πρότυπα και στατικούς καταλόγους" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "Όνομα έργου" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "Όνομα(τα) συγγραφέα" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "Έκδοση έργου" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "Κυκλοφορία έργου" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "Γλώσσα έργου" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "Επέκταση αρχείου πηγής" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "Όνομα του κυρίους σας εγγράφου (χωρίς επέκταση)" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "Σφάλμα: το κύριο αρχείο %s έχει ήδη βρεθεί στο επιλεγμένο ριζικό κατάλογο." + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "το sphinx-quickstart δεν θα αντικαταστήσει υπάρχοντα αρχεία." + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "Παρακαλείσθε να εισάγετε ένα νέο όνομα αρχείου, ή να μεταονομάσετε το υπάρχον αρχείο και να πιέσετε το Enter" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "Υποδείξτε ποιά απο τις ακόλουθες επεκτάσεις Sphinx πρέπει να ενεργοποιηθούν:" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "Σημείωση: τα imgmath και mathjax δεν είναι δυνατό να ενεργοποιηθούν ταυτόχρονα. Το imgmath έχει αποεπιλεγθεί. " + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "Δημιουργία Makefile; (y/n)" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "Δημιουργία αρχείου εντολών Windows; (y/n)" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "Δημιουργία αρχείου %s." + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "Το αρχείο %s υπάρχει ήδη, παραλείπεται." + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "Ολοκλήρωση: μία αρχική δομή καταλόγου δημιουργήθηκε." + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "\nΔημιουργία απαιτούμενων αρχείων για ένα έργο Sphinx.\n\nΤο sphinx-quickstart είναι ένα διαδραστικό εργαλείο το οποίο κάνει κάποιες ερωτήσεις για το δικό σας \nέργο και μετά δημιουργεί έναν πλήρη κατάλογο τεκμηρίωσης και δείγμα \nMakefile για να χρησιμοποιηθεί με το sphinx-build.\n" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "ήσυχος τρόπος" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "Επιλογές δομής" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "αν ορίζεται, θα ξεχωρίσουν οι κατάλογοι πηγής και μεταγλώττισης" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "αντικατάσταση για τελεία σε _templates κλπ." + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "Βασικές επιλογές έργου" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "όνομα έργου" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "ονόματα συγγραφέων" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "έκδοση του έργου" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "δημοσίευση του έργου" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "γλώσσα εγγράφου" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "επέκταση αρχείου πηγής" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "κύριο όνομα εγγράφου" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "χρηση epub" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "Επιλογές επέκτασης" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "ενεργοποίηση της επέκτασης %s" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "ενεργοποίηση αυθαίρετων επεκτάσεων" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "Δημιουργία Makefile και Batchfile" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "δημιουργία makefile" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "να μη δημιουργηθεί makefile" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "δημιουργία batchfile" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "να μη δημιουργηθεί batchfile" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "χρησιμοποιήστε το make-mode για το Makefile/make.bat" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "μην χρησιμοποιείτε make-mode για Makefile/make.bat" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "Προτυποποίηση έργου" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "πρότυπος κατάλογος για πρότυπα αρχεία" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "ορίστε μία τιμή προτύπου" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "καθορίστηκε το \"quiet\", αλλά δεν καθορίστηκε είτε το \"project\" είτε το \"author\"." + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "Σφάλμα: το καθορισθέν μονοπάτι δεν είναι κατάλογος, ή τα αρχεία sphinx υπάρχουν ήδη." + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "Το sphinx-quickstart δημιουργεί μόνο εντός ενός κενού καταλόγου. Παρακαλείσθε να καθορίσετε ένα νέο ριζικό μονοπάτι." + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "Ανέγκυρη μεταβλητή προτύπου: %s" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "Ανιχνεύθηκε προσπάθεια υπερβολικής μείωσης εσοχών" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "Ανέγκυρη λεζάντα: %s" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "η προδιαγραφή αριθμού σειράς είναι εκτός e;yroyw (1-%d): %r" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "Δεν είναι δυνατή η ταυτόχρονη χρήση των επιλογών \"%s\" και \"%s\"" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "Το συμπεριληφθέν αρχείο %r δεν βρέθηκε ή απέτυχε η ανάγνωσή του" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "Η κωδικοποίηση %r που χρησιμοποιήθηκε για την ανάγνωση του συμπεριληφθέντος αρχείου %r φαίνεται να είναι λανθασμένη, προσπαθήστε να δώσετε μία επιλογή :encoding:" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "Το αντικείμενο με όνομα %r δεν βρέθηκε στο συμπεριληφθέν αρχείο %r" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "Δεν είναι δυνατή η χρήση \"leneno-match\" με ένα κομματιασμένο σετ απο \"lines\"" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "Προσδιορισμός γραμμής %r: δεν ελήφθησαν γραμμές από το συμπεριληφθέν αρχείο %r" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Συντάκτης τμήματος: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Συντάκτης μονάδας: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Συντάκτης κώδικα: " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Συντάκτης: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Παράμετροι" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Επιστρέφει" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Επιστρεφόμενος τύπος" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (συνάρτηση C)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (μέλος C)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (μακροεντολή C)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (τύπος C)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (μεταβλητή C)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "συνάρτηση" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "μέλος" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "μακροεντολή" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "τύπος" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "μεταβλητή" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Νέο στην έκδοση %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Άλλαξε στην έκδοση %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Αποσύρθηκε στην έκδοση %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "διπλότυπη ετικέτα %s, άλλη εμφάνιση στο %s" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "Η παραπομπή [%s] δεν αναφέρεται." + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "Διπλότυπη δήλωση, η οποία έχει επίσης οριστεί στο '%s'. \nΉ δήλωση είναι '%s'." + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "Παράμετροι Προτύπου" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Προκαλεί" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "%s (C++ %s)" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "κλάση" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "ένωση" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "έννοια" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "enum" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "enumerator" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "Διπλότυπος δήλωση, η οποία έχει επίσης οριστεί στο '%s \nΗ δήλωση είναι '%s'." + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (ενσωματωμένη συνάρτηση)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (μέθοδος της %s)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (κλάση)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (καθολική μεταβλητή ή σταθερά)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (ιδιότητα της %s)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Παράμετροι" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (μονάδα)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "μέθοδος" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "δεδομένα" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "ιδιότητα" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "μονάδα" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "διπλότυπη ετικέτα της εξίσωσης %s, άλλη εμφάνιση στο %s" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "Ανέγκυρο math_eqref_format: %r" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "λέξη κλειδί" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "τελεστής" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "αντικείμενο" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "εξαίρεση" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "δήλωση" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "ενσωματωμένη συνάρτηση" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Μεταβλητές" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Προκαλεί" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (στη μονάδα %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (ενσωματωμένη μεταβλητή)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (στη μονάδα %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (ενσωματωμένη κλάση)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (κλάση σε %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (μέθοδος %s.%s)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (στατική μέθοδος %s.%s)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (στατική μέθοδος της %s)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (μέθοδος κλάσης %s.%s)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (μέθοδος κλάσης της %s)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (ιδιότητα της %s.%s)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Ευρετήριο Μονάδων της Python" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "μονάδες" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Αποσύρθηκε" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "μέθοδος της κλάσης" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "στατική μέθοδος" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "περισσότεροι από έναν στόχοι βρέθηκα για την παραπομπή %r: %s" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (αποσύρθηκε)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (οδηγία)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (ρόλος)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "οδηγία" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "ρόλος" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "μεταβλητή περιβάλλοντος; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "Λανθασμένη περιγραφή επιλογής %r, θα πρέπει να μοιάζει με \"opt\", \"-opt args\", \"--opt args\", \"/opt args\" ή \"+opt args\"" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "γλωσσάρι" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "γραμματική ένδειξη" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "ετικέτα αναφοράς" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "μεταβλητή περιβάλλοντος" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "επιλογή προγράμματος" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "έγγραφο" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Ευρετήριο μονάδων" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Σελίδα αναζήτησης" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "διπλότυπη ετικέτα %s, άλλη εμφάνιση στο %s" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "το numfig έχει απενεργοποιηθεί. Το :numref: θα ανγοηθεί." + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "δεν έχει ορισθεί αριθμός για %s:%s" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "ο σύνδεσμος δεν έχει λεζάντα: %s" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "ανέγκυρο numfig_format: %s (%r)" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "ανέγκυρο numfig_format: %s" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "νέα παραμετροποίηση" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "η παραμετροποίηση άλλαξε" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "αλλαγμένες επεκτάσεις" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "η έκδοση του περιβάλλοντος μεταλώττισης δεν είναι η τρέχουσα" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "ο πηγαίος κατάλογος έχει αλλάξει" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "Το περιβάλλον δεν είναι συμβατό με τον επιλεγμένο μεταγλωττιστή, παρακαλείστε να επιλέξετε ένα διαφορετικό κατάλογο toctree." + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "Αδυναμία σάρωσης εγγράφων σε %s: %r" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "Ο τομέας %r δεν είναι καταχωρημένος" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "Βρέθηκε αυτοαναφερόμενο toctree. Θα αγνοηθεί." + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "το έγγραφο δεν συμπεριλαμβάνεται σε κανένα toctree" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "δείτε %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "δείτε επίσης %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "άγνωστος τύπος εγγραφής ευρετηρίου %r" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Σύμβολα" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "αναγνωρίστηκαν κυκλικές αναφορές toctree, θα αγνοηθούν: %s <- %s" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "το toctree περιλαμβάνει αναφορά στο έγγραφο %r η οποία δεν έχει τίτλο: δεν θα δημιουργηθεί σύνδεσμος" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "Το toctree περιλαμβάνει αναφορά στο αποκλεισμένο κείμενο %r" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "το toctree περιλαμβάνει αναφορά στο μη υπαρκτό έγγραφο %r" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "το αρχείο εικόνας δεν είναι αναγνώσιμο: %s" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "το αρχείο εικόνας %s δεν είναι αναγνώσιμο: %s" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "το μεταφορτωμένο αρχείο δεν είναι αναγνώσιμο: %s" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "στο %s έχουν ήδη ανατεθεί αριθμοί τομέα (εμφωλιασμένο αριθμημένο toctree;)" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "Θα δημιουργούσε το αρχείο %s." + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "\nΑναζητήστε αναδρομικα σε <MODULE_PATH>για δομοστοιχεία Python και πακέτα και δημιουργήστε \nένα αρχείο reST με οδηγίες automodule για κάθε πακέτο στο <OUTPUT_PATH>.\n\nΤα <EXCLUDE_PATTERN>μπορεί να αποτελούν αρχεία ή/και σχέδια καταλόγων τα οποία θα \nεκτελεστούν κατά τη δημιουργία.\n\nΣημείωση: από προεπιλογή αυτό το σενάριο δεν θα αντικαταστήσει τα ήδη δημιουργημένα αρχεία." + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "μονοπάτι για το δομοστοιχείο για το έγγραφο" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "αρχεία fnmatch-style και/ή υποδείγματα καταλόγου που θα εξαιρεθούν από τη δημιουργία" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "κατάλογο για τοποθέτηση όλων των προϊόντων" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "μέγιστο βάθος από υποδομοστοιχεία για απεικόνιση στο TOC (προεπιλογή: 4)" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "αντικατάσταση υπάρχοντων αρχείων" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "ακολουθία συμβολικών συνδέσμων. Ισχυρό όταν συνδυάζεται με το collective.recipe.omelette." + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "εκτελέστε το σενάριο χωρίς τη δημιουργία αρχείων" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "τοποθετήστε βιβλιογραφία για κάθε δομοστοιχείο στη δικής της σελίδα" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "να συμπεριληφθούν τα δομοστοιχεία \"_private\"" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "όνομα αρχείου του πίνακα περιεχομένων (προεπιλογή: δομοστοιχεία)" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "να μη δημιουργηθεί αρχείο με πίνακα περιεχομένων" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "μη δημιουργείτε κεφαλίδες για πακέτα δομοστοιχείων/πακέτων (π.χ. όταν τα docstrings τα περιλαμβάνουν ήδη)" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "τοποθέτηση βιβλιογραφίας δομοστοιχείου πριν από την βιβλιογραφία υπόδομοστοιχείου" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "ερμηνεία μονοπατιών δομοστοιχείων σύμφωνα με την προδιαγραφή POP-0420 αυτονόητων namespaces" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "επέκταση αρχείου (προεπιλογή: rst)" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "δημιουργία ενός πλήρους έργου με το sphinx-quickstart" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "η προσθήκη του module_path στο sys.path, χρησιμοποιείται όταν δίδεται το --full" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "όνομα έργου (προεπιλογή: όνομα ριζικού δομοστοιχείου)" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "συγγραφέας(εις) έργου, χρησιμοποιείται όταν δίδεται το --full" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "έκδοση έργου, χρησιμοποιείται όταν δίνεται το --full" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "έκδοση έργου, χρησιμοποιείται όταν δίδεται το --full, προεπιλογή σε --doc-version" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "επιλογές επέκτασης" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "το %s δεν είναι κατάλογος." + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "ανέγκυρο regex %r σε %s" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "Η δοκιμή της κάλυψης στις πηγές ολοκληρώθηκε, δείτε τα αποτελέσματα στο %(outdir)s python.txt." + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "ανέγκυρο regex %r στο coverage_c_regexes" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "το δομοστοιχείο %s δεν ήταν δυνατό να εισαχθεί: %s" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "λείπει '+' ή '-' στην επιλογή '%s'." + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "Η '%s δεν είναι μία έγκυρη επιλογή." + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "'%s' δεν αποτελεί μία έγκυρη επιλογή για pyversion" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "ανέγκυρος τύπος TestCode" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "Ολοκληρώθηκε η δοκιμή των doctests στις πηγές, δείτε τα αποτελέσματα σε %(outdir)s/output.txt." + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "δεν υπάρχει κώδικας/αποτέλεσμα στο τμήμα %s στο %s:%s" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "Ο ανέγκυρος κώδικας doctest θα αγνοηθεί: %r" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "Η οδηγία Graphviz δεν είναι δυνατό να περιλαμβάνει και περιεχόμενο και ένα όρισμα ονόματος αρχείου" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "Το εξωτερικό αρχείο Graphviz %r δεν βρέθηκε ή απέτυχε η ανάγνωσή του" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "Η οδηγία χωρίς περιεχόμενο \"graphviz\" θα αγνοηθεί." + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "το dot δεν παρήγαγε κανένα αρχείο εξόδου:\n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "η εντολή dot %r δεν είναι δυνατό να εκτελεστεί (απαιτείται για αποτέλεσμα graphviz), ελέγξτε τη ρύθμιση graphviz_dot" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "το dot ολοκλήρωσε με σφάλμα:\n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "Το graphviz_output_format πρέπει να είναι ένα από τα 'png', 'svg', αλλά είναι %r" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "κωδικός dot %r: %s" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[γράφημα: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[γράφημα]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "η μετατροπή ολοκλήρωσε με σφάλμα:[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "Η εντολή LaTex %r δεν είναι δυνατό να εκτελεστεί (απαιτείται για απεικόνιση μαθηματικών), ελέγξτε τη ρύθμιση imgmath_latex" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "%s η εντολή %r δεν είναι δυνατό να εκτελεστεί (απαιτείται για μαθηματική απεικόνιση), ελέγξτε τη ρύθμιση imgmath_%s" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "απεικόνιση latex %r: %s" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "σε σειρά latex %r: %s" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "Μόνιμος σύνδεσμος σε αυτή την εξίσωση" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "το απόθεμα intersphinx έχει μεταφερθεί: %s->%s" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "φότωση του αποθέματος intersphinx από %s..." + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "παρουσιάστηκαν κάποια ζητήματα με μερικά απο τα αποθέματα, αλλά υπήρξαν λειτουργικές εναλλακτικές:" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "αδυναμία προσέγγισης οποιασδήποτε αποθήκης με τα ακόλουθα ζητήματα:" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(στη %s έκδοση %s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "(στο %s)" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "το αναγνωριστικό intersphinx %r δεν είναι στοιχειοσειρά. Θα αγνοηθεί" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[πηγή]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Εκκρεμότητα" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "βρέθηκε εγγραφή TODO:%s" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<original entry>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(Το <<original entry>> βρίσκεται στο %s, γραμή %d.)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "αρχική εγγραφή" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "επισήμανση κώδικα δομοστοιχείου..." + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[τεκμηρίωση]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Κώδικας μονάδας" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Πηγαίος κώδικας για το %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Επισκόπηση: κώδικας της μονάδας" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Όλες οι μονάδες για τις οποίες υπάρχει διαθέσιμος κώδικας</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "ανέγκυρη υπογραφή για αυτόματο %s (%r)" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "σφάλμα κατά τη μορφοποίηση των ορισμάτων για %s:%s" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "απουσιάζει το χαρακτηριστικό %s στο αντικείμενο %s" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "δεν γνωρίζω ποιο δομοστοιχείο να εισάγω για αυτόματη τεκμηρίωση %r (προσπαθήστε να τοποθετήσετε μία οδηγία \"module\" ή \"currentmodule\" στο έγγραφο, ή να δώσετε ένα σαφές όνομα δομοστοιχείου)" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "\"::\" στο όνομα automodule δεν βγάζει νόημα" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "ορίσματα υπογραφής ή επιστροφή σημείωσης η οποία δόθηκε για το automodule %s" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "__all__ πρέπει να είναι λίστα στοιχειοσειράς, όχι %r (στο δομοστοιχείο %s) -- θα αγνοηθεί το __all__" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "απουσιάζον χαρακτηριστικό αναφερόμενο στο δομοστοιχείο :members\" ή __all__: %s, χαρακτηριστικό %s" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "Βάσεις: %s" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "ψευδώνυμο της :κλάσης:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "αδυναμία εισαγωγής %s" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "αδυναμία ανάλυσης ονόματος %s" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "αδυναμία εισαγωγής αντικειμένου %s" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "Το autosummary δημιουργεί αρχεία .rst εσωτερικά. Αλλά το δικό σας source_suffix δεν περιλαμβάνει .rst. Θα παραλειφθεί." + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "[autosummary] δημιουργία autosummary για: %s" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "[αυτόματη περίληψη] εγγραφή στο %s" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "\nΔημιουργία ReStrucuredText χρησιμοποιώντας τις οδηγίες autosummary.\n\nΤο sphinx-autogen αποτελεί ένα πρόσθιο εργαλείο για το sphinx.ext.autosummary.generate. Δημιουργεί \nτα αρχεία reStructuredText από τις οδηγίες autosummary οι οποίες περιλαμβάνονται στα \nπαραδοθέντα αρχεία εισόδου.\n\nΗ μορφή της οδηγίας autosummary τεκμηρειώνεται στο \nδομοστοιχείο ``sphinx.ext.autosummary`` της Python και μπορεί να αναγνωστεί χρησιμοποιώντας το :: \n\npydoc sphinx.ext.autosummary\n" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "αρχεία πηγής για να δημιουργηθούν τα αρχεία reST" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "ο κατάλογος που θα τοποθετεί όλο το αποτέλεσμα εξόδου" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "προεπιλεγμένη επέκταση για αρχεία (προεπιλογή: %(default)s)" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "προσαρμοσμένος κατάλογος προτύπου (προεπιλογή: %(default)s)" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "μέλη εισαγμένα στο έγγραφο (προεπιλογή: %(default)s)" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "Ορίσματα λέξης-κλειδί" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "Παράδειγμα" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "Παραδείγματα" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "Σημειώσεις" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "Άλλες παράμετροι" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "Αναφορές" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "Προειδοποιήσεις" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "Αποδόσεις" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Προσοχή" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Προσοχή" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Κίνδυνος" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Σφάλμα" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Συμβουλή" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Σημαντικό" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Σημείωση" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Δείτε επίσης" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Πρακτική συμβουλή" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Προειδοποίηση" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "συνεχίζεται από την προηγούμενη σελίδα" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "συνέχεια στην επόμενη σελίδα" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "μη-αλφαβιτικά" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "Αριιθμοί" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "σελίδα" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "Πίνακας περιεχομένων" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Αναζήτηση" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Πάμε" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Προβολή κώδικα" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Επισκόπηση" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Καλωσήρθατε! Αυτή είναι" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "η τεκμηρίωση του" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "τελευταία ενημέρωση" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Ευρετήρια και πίνακες:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Πλήρης Πίνακας Περιεχομένων" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "απαριθμεί όλα τα κεφάλαια και υποκεφάλαια" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "αναζήτηση αυτής της τεκμηρίωσης" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Καθολικό Ευρετήριο Μονάδων" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "γρήγορη πρόσβαση σε όλες τις μονάδες" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "όλες οι συναρτήσεις, κλάσεις, όροι" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Ευρετήριο – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Πλήρες ευρετήριο σε μία σελίδα" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Σελίδες ευρετηρίου ανά γράμμα" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "μπορεί να είναι τεράστιο" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Πλοήγηση" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Αναζήτηση στο %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Σχετικά με αυτά τα κείμενα" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Copyright" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Copyright</a>%(copyright)s" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© Copyright %(copyright)s." + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Τελευταία ενημέρωση στις %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Δημιουργήθηκε με το <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Αναζήτηση %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Προηγούμενο θέμα" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "προηγούμενο κεφάλαιο" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Επόμενο θέμα" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "επόμενο κεφάλαιο" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Παρακαλώ, ενεργοποιήστε τη JavaScript για να είναι δυνατή η λειτουργία\n αναζήτησης." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "αναζήτηση" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Αποτελέσματα Αναζήτησης" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "Η αναζήτησή σας δεν ταυτοποιήθηκε με κανένα κείμενο. Παρακαλώ, επιβεβαιώστε ότι όλες οι λέξεις έχουν τη σωστή ορθογραφία και ότι έχετε επιλέξεις αρκετές κατηγορίες." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Σύντομη αναζήτηση" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Αυτή η σελίδα" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Αλλαγές στην Έκδοση %(version)s —'\n%(docstitle)s" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Αυτόματα παραγόμενη λίστα αλλαγών στην έκδοση %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Αλλαγές βιβλιοθήκης" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Αλλαγές στο API της C" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Άλλες αλλαγές" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Μόνιμος σύνδεσμος σε αυτήν την κεφαλίδα" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Μόνιμος σύνδεσμος σε αυτόν τον ορισμό" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Απόκρυψη Ευρεθέντων Αναζητήσεων" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "Εκτελείται η αναζήτηση" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Προετοιμασία αναζήτησης..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "Η αναζήτηση ολοκληρώθηκε, βρέθηκε/αν %s σελίδα/ες με βάση τους όρους αναζήτησης." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", στο " + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Άνοιγμα πλαϊνής μπάρας" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Κλείσιμο πλαϊνής μπάρας" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Περιεχόμενα" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "βρέθηκε ευρετήριο βασιζόμενο σε 4 στήλες. Μπορεί να αποτελεί σφάλμα της επέκτασης που χρησιμοποιείτε: %r" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "Δεν υπάρχει αναφορά για την υποσημείωση [%s]." + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "Η υποσημείωση [#] δεν αναφέρεται." + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "ασυνεπείς αναφορές υποσημείωσης στα μεταφρασμένα μηνύματα. original: {0}, translated: {1}" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "ασυνεπείς αναφορές στα μεταφρασμένα μηνύματα. αρχικό: {0}, μεταφρασμένο: {1}" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "ασυνεπείς αναφορές παραπομπής στο μεταφρασμένο μήνυμα. αρχικό: {0}, μεταφρασμένο: {1}" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "ασυνεπείς αναφορές όρων στα μεταφρασμένα μηνύματα. αρχικό: {0}, μεταφρασμένο: {1}" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "περισσότεροι από ένας στόχοι βρέθηκαν για 'οποιαδήποτε' παραπομπή %r: θα μπορούσε να είναι %s" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "Ο %s:%s στόχος αναφοράς δεν βρέθηκε: %% (στόχος)" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "ο στόχος αναφοράς %r δεν βρέθηκε: %%(στόχος)" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "Δεν ήταν δυνατή η λήψη απομακρυσμένης εικόνας: %s [%d]" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "Δεν ήταν δυνατή η λήψη απομακρυσμένης εικόνας: %s [%s]" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "Άγνωστος τύπος αρχείου: %s..." + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "μη κωδικοποιήσιμοι χαρακτήρες πηγής, θα αντικατασταθούν με \"?\": %r" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "παράβλεψη" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "αποτυχία" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "σφάλμα ανάγνωσης: %s, %s" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "καταγραφή λάθους: %s, %s" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "Ανέγκυρος τύπος ημερομηνίας. Τοποθετείστε στη στοιχειοσειρά μονά εισαγωγικά εάν θέλετε να το εξάγετε απευθείας: %s" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "το toctree περιλαμβάνει αναφορά σε άγνωστο αρχείο %r" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "εξαίρεση κατά την αξιολόγηση μόνο της έκφρασης οδηγίας: %s" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "Η υποστήριξη για αξιολόγηση συντακτικού της Python 2 είναι απαρχαιωμένη και θα αφαιρεθεί απο το Sphinx 4.0. Μετατροπή του %s σε συντακτικό της Python 3." + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "ο προεπιλεγμένος ρόλος %s δεν βρέθηκε" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "δεν έχει καθοριστεί numfig_format για το %s" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "Κανένα ID δεν έχει ανατεθεί στο κόμβο %s" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Απευθείας σύνδεσμος σε αυτόν τον πίνακα" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Απευθείας σύνδεσμος σε αυτόν τον κώδικα" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Απευθείας σύνδεσμος σε αυτήν την εικόνα" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "Απευθείας σύνδεσμος σε αυτόν τον πίνακα περιεχομένων" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "Δεν ήταν δυνατή η λήψη του μεγέθους της εικόνας. Η επιλογή :scale: θα αγνοηθεί." + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "άγνωστο toplevel_sectioning %r για την κλάσση %r" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "πολύ μεγάλο :maxdepth:, θα αγνοηθεί." + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "ο τίτλος του εγγράφου δεν είναι μονός κόμβος κειμένου" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "ο ανακαλυφθέν τίτλος κόμβος δεν βρίσκεται σε τομέα, θέμα, πίνακα, προειδοποίηση ή πλαϊνή μπάρα" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Σημειώσεις υποσέλιδου" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "τόσο η επιλογή για tabularcolumns όσο και για :widths: δίνονται. Η επιλογή :widths: θα αγνοηθεί." + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "η μονάδα διάστασης %s δεν είναι έγκυρη. Θα αγνοηθεί." + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "βρέθηκε άγνωστος τύπος εγγραφής ευρετηρίου %s" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[εικόνα: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[εικόνα]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "η λεζάντα δεν βρίσκεται εντός μίας εικόνας." + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "μη υλοποιημένος τύπος κόμβου: %r" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "άγνωστος τύπος κόμβου: %r" diff --git a/sphinx/sphinx/locale/eo/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/eo/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..184ab4a --- /dev/null +++ b/sphinx/sphinx/locale/eo/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "eo", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "A\u016dtora rajto", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "", "Full index on one page": "", "General Index": "Indico universala", "Global Module Index": "Universala modjulindico", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "Indico – %(key)s", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "Sekva temo", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "Anta\u016da temo", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "", "Table of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "sekvo \u0109apitro", "previous chapter": "anta\u016da \u0109apitro", "quick access to all modules": "", "search": "ser\u0109u", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/eo/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/eo/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..32bc811 --- /dev/null +++ b/sphinx/sphinx/locale/eo/LC_MESSAGES/sphinx.po @@ -0,0 +1,3466 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Dinu Gherman <gherman@darwin.in-berlin.de>, 2014 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Esperanto (http://www.transifex.com/sphinx-doc/sphinx-1/language/eo/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: eo\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Indico universala" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "indico" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "sekva" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "antaŭa" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s dokumentaro" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Aŭtoro:" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parametroj" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "funkcio" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "membro" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "nomaĵo" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "tipo" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "klaso" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (klaso)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "datenoj" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "atributo" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "escepto" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "vidu %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "vidu ankaŭ %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Simboloj" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Eraro" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Universala modjulindico" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Indico – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Aŭtora rajto" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Antaŭa temo" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "antaŭa ĉapitro" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Sekva temo" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "sekvo ĉapitro" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "serĉu" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/es/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/es/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..fd47432 --- /dev/null +++ b/sphinx/sphinx/locale/es/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "es", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Derechos de autor</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Derechos de autor %(copyright)s.", ", in ": ", en ", "About these documents": "Sobre este documento", "Automatically generated list of changes in version %(version)s": "Lista de cambios generada autom\u00e1ticamente en la versi\u00f3n %(version)s", "C API changes": "Cambios en la API C", "Changes in Version %(version)s — %(docstitle)s": "Cambios en la versi\u00f3n %(version)s — %(docstitle)s", "Collapse sidebar": "Contraer barra lateral", "Complete Table of Contents": "\u00cdndice de contenidos completo", "Contents": "Contenidos", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Creado con <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Expandir barra lateral", "Full index on one page": "\u00cdndice completo en una p\u00e1gina", "General Index": "\u00cdndice General", "Global Module Index": "\u00cdndice Global de M\u00f3dulos", "Go": "Ir a", "Hide Search Matches": "Ocultar coincidencias de la b\u00fasqueda", "Index": "\u00cdndice", "Index – %(key)s": "\u00cdndice – %(key)s", "Index pages by letter": "\u00cdndice alfab\u00e9tico de p\u00e1ginas", "Indices and tables:": "\u00cdndices y tablas:", "Last updated on %(last_updated)s.": "Actualizado por \u00faltima vez en %(last_updated)s.", "Library changes": "Cambios en la biblioteca", "Navigation": "Navegaci\u00f3n", "Next topic": "Pr\u00f3ximo tema", "Other changes": "Otros cambios", "Overview": "Resumen", "Permalink to this definition": "Enlazar permanentemente con esta definici\u00f3n", "Permalink to this headline": "Enlazar permanentemente con este t\u00edtulo", "Please activate JavaScript to enable the search\n functionality.": "Por favor, active JavaScript para habilitar la funcionalidad\n de b\u00fasqueda.", "Preparing search...": "Preparando b\u00fasqueda...", "Previous topic": "Tema anterior", "Quick search": "B\u00fasqueda r\u00e1pida", "Search": "B\u00fasqueda", "Search Page": "P\u00e1gina de B\u00fasqueda", "Search Results": "Resultados de la b\u00fasqueda", "Search finished, found %s page(s) matching the search query.": "B\u00fasqueda finalizada, encontr\u00f3 %s p\u00e1gina(s) acorde con la consulta de b\u00fasqueda.", "Search within %(docstitle)s": "Buscar en %(docstitle)s", "Searching": "Buscando", "Searching for multiple words only shows matches that contain\n all words.": "La b\u00fasqueda de varias palabras solo muestra coincidencias que contienen\n todas las palabras.", "Show Source": "Mostrar el c\u00f3digo", "Table of Contents": "Tabla de contenido", "This Page": "Esta p\u00e1gina", "Welcome! This is": "\u00a1Bienvenido! Este es", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Su b\u00fasqueda no coincide con ning\u00fan documentos. Por favor, aseg\u00farese de que todas las palabras est\u00e9n correctamente escritas y que usted all\u00e1 seleccionado las suficientes categor\u00edas.", "all functions, classes, terms": "todas las funciones, clases, t\u00e9rminos", "can be huge": "puede ser muy grande", "last updated": "actualizado por \u00faltima vez el", "lists all sections and subsections": "muestra todas las secciones y subsecciones", "next chapter": "pr\u00f3ximo cap\u00edtulo", "previous chapter": "cap\u00edtulo anterior", "quick access to all modules": "acceso r\u00e1pido a todos los m\u00f3dulos", "search": "buscar", "search this documentation": "buscar en esta documentaci\u00f3n", "the documentation for": "la documentaci\u00f3n para"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/es/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/es/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..5153023 --- /dev/null +++ b/sphinx/sphinx/locale/es/LC_MESSAGES/sphinx.po @@ -0,0 +1,3472 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Edward Villegas-Pulgarin <cosmoscalibur@gmail.com>, 2018 +# Edward Villegas-Pulgarin <cosmoscalibur@gmail.com>, 2019 +# Edward Villegas-Pulgarin <cosmoscalibur@gmail.com>, 2018 +# Guillem Borrell <guillem@torroja.dmt.upm.es>, 2011 +# Ivan García <ivan.garcia@studio-point.com>, 2019 +# Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2013-2018,2020 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-16 23:58+0000\n" +"Last-Translator: Leonardo J. Caballero G. <leonardocaballero@gmail.com>\n" +"Language-Team: Spanish (http://www.transifex.com/sphinx-doc/sphinx-1/language/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "directorio de configuración no contiene un archivo conf.py (%s)" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "No se encuentra directorio fuente (%s)" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "Directorio fuente y directorio destino no pueden ser idénticos" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "Ejecutando Sphinx v%s" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "Por razones de seguridad, el modo paralelo está deshabilitado en macOS y python3.8 y superior. Para más detalles, lea https://github.com/sphinx-doc/sphinx/issues/6803" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "Este proyecto necesita al menos Sphinx v%s y por lo tanto no se puede construir con esta versión." + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "creando directorio de salida" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "mientras configura la extensión %s:" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "'setup' como se define actualmente en el archivo conf.py no es un Python invocable. Por favor, modifique su definición para que sea una función invocable. Esto es necesario para que el archivo conf.py se comporte como una extensión de Sphinx." + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "cargando traducciones [%s]... " + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "hecho" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "no disponible para mensajes incorporados" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "cargando el ambiente pickled" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "fallo: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "Ningún constructor seleccionado, utilizando el valor predeterminado: html" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "éxitoso" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "finalizo con problemas" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "compilación %s, %sadvertencia (con advertencias tratadas como errores)." + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "compilación %s, %s advertencias (con advertencias tratadas como errores)." + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "construir %s, %s advertencia." + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "compilación %s, %s advertencias." + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "construir %s." + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "la clase de nodo %r ya está registrada, sus visitantes serán reemplazados" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "la directiva %r ya está registrada, esa se reemplazará" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "el rol %r ya está registrado, ese se reemplazará" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "la extensión de %s no declara si es seguro para la lectura en paralelo, asumiendo que no es - consulte con el autor de la extensión para comprobar y hacer explícito" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "la extensión %s no es segura para lectura paralela" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "la extensión %s no declara si es seguro para la escritura paralela, suponiendo que no lo sea - solicite al autor de la extensión que lo verifique y haga explicito" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "la extensión %s no es segura para escritura paralela" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "realizando serialmente %s" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "no se puede reemplazar el ajuste de la configuración del diccionario %r, haciendo caso omiso (utilice %r para definir elementos individuales)" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "número no válido %r de valor de configuración %r, haciendo caso omiso" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "no se puede reemplazar los ajustes de configuración %r con tipo no compatible, haciendo caso omiso" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "valor de configuración desconocido %r en anulación, ignorando" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "No hay tal valor de configuración: %s" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "Valor de configuración %r ya presente" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "Hay un error de sintaxis en su archivo de configuración: %s\n" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "El archivo de configuración (o uno de los módulos que importa) invocó sys.exit()" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "Hay un error programable en su archivo de configuración:\n\n%s" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "El valor de configuración `source_suffix' espera una cadena de caracteres, una lista de cadena de caracteres o un diccionario. Pero `%r' es dado." + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "Sección %s" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "Figura %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Tabla %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "Lista %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "El valor de configuración `{name}` tiene que ser uno de {candidates}, pero fue dado `{current}`." + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "El valor de configuración `{name}' tiene tipo `{current.__name__}'; esperado {permitted}." + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "El valor de configuración `{name}' tiene el tipo `{current.__name__}', el valor predeterminado es `{default.__name__}'." + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "el valor de configuración %r se establece en una cadena con caracteres no ASCII; esto puede provocar errores Unicode. Por favor, utilice cadenas Unicode, ej. %r." + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "primary_domain %r no fue encontrado, se ignora." + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "Desde la versión 2.0, Sphinx usa \"index\" como master_doc por defecto. Agregue \"master_doc = 'contents'\" a su archivo de configuración conf.py." + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "Evento %r ya presente" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "Nombre de evento desconocido: %s" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "La extensión %s es requerida por la configuración de needs_extensions, pero esta no es cargada." + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "Este proyecto necesita la extensión %s por lo menos en la versión %s y por lo tanto no puede ser construido con la versión cargada (%s)." + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "El nombre del lexer de pigmentos %r se desconoce" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "No pudo el léxico literal_block como \"%s\". Destacado omitido." + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "documento no legible. Ignorado." + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "Constructor clase %s no tiene ningún atributo \"name\"" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "Constructor %r ya existe (en el módulo %s)" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "Nombre de constructor %s no registrados o disponibles a través del punto de entrada" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "Nombre de constructor %s no registrado" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "dominio %s ya esta registrado" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "dominio %s no esta registrado" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "La directiva %r ya fue registrada en el dominio %s" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "El rol %r ya fue registrado en el dominio %s" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "El índice %r ya fue registrado en el dominio %s" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "El %r object_type ya está registrado" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "El %r crossref_type ya está registrado" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "source_suffix %r ya está registrado" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "source_parser para %r ya está registrado" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "Analizador de fuentes para %s no registrado" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "Traductor para %r ya existe" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "kwargs para la función add_node() debe ser una tupla de función (visitar, salir): %r=%r" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "enumerable_node %r ya esta registrado" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "Renderizador matemático %s ya fue registrado" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "la extensión %r ya se fusionó con Sphinx desde la versión %s; esta extensión se omite." + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "Excepción original:\n" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "No puede importar la extensión %s" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "extensión %r no tiene ninguna función setup(); ¿es realmente un módulo de extensión de Sphinx?" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "La extensión %s utilizada por este proyecto necesita al menos la versión de Sphinx v%s; por lo tanto no puede ser construido con esta versión." + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "extensión %r devuelve un objeto no soportado de su función setup(); debe devolver un diccionario de metadatos o ninguno" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "tema %r no tiene configuraciones de \"tema\"" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "tema %r no tiene configuraciones de \"heredar\"" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "no encontrado ningún tema llamado %r, heredado por %r" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "configuración de %s.%s se produce en ninguna de las configuraciones de tema buscado" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "opción de tema no soportada %r fue dada" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "archivo %r o ruta del tema no es un archivo zip válido o no contiene ningún tema" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "sphinx_rtd_theme ya no es una dependencia difícil desde la versión 1.4.0. Por favor, instale manualmente. (pip install sphinx_rtd_theme)" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "sin tema llamado %r encontrado (¿falta el archivo theme.conf?)" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "una imagen adecuada para %s constructor no encontrado: %s (%s)" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "una imagen adecuada para %s constructor no encontrado: %s" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "compilando [mo]:" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "escribiendo salida... " + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "Todos los %d archivos po" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "los objetivos para %d los archivos po que se especifican" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "los objetivos para %d los archivos po que estan desactualizados" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "todos los archivos fuente" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "archivo %r dado en la línea de comandos no está en el directorio fuente, ignorado" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "archivo %r dado en la línea de comandos no existe, ignorado" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "%d archivos fuente dados en la línea de comandos" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "los objetivos para %d los archivos fuentes que estan desactualizados" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "compilando [%s]:" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "buscando por archivos no actualizados..." + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "encontrado %d" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "no encontrado" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "preparando ambiente" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "verificando consistencia" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "no hay archivos objetivo desactualizados." + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "actualizando ambiente" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "%sañadido, %s cambiado, %s removido" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "leyendo fuentes..." + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "Esperando a los workers..." + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "docnames para escribir: %s" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "preparando documentos" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "entrada de tabla de contenido duplicada encontrada: %s" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "copiando imágenes..." + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "no puede leer el archivo de imagen %r: en su lugar, lo copia" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "no se puede copiar archivo de imagen %r: %s" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "no se puede escribir archivo de imagen %r: %s" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "no se encuentra Pillow - copiando archivos de imágenes" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "escribiendo archivo %s..." + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "mimetype desconocido para %s, ignorando" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "El archivo de resumen está en %(outdir)s." + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "no hay cambios en versión %s." + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "escribiendo archivo de resumen..." + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Funciones incorporadas" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Nivel de módulo" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "copiando archivos fuente" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "no se pudo leer %r for para la creación del registro de cambios" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "El constructor ficticio no genera archivos." + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "El archivo ePub está en %(outdir)s." + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "el valor de configuración \"epub_language\" (o \"language\") no debe estar vacío para EPUB3" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "el valor de configuración \"epub_uid\" debe ser XML NAME para EPUB3" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "el valor de configuración \"epub_title\" (or \"html_title\") no debe estar vacío para EPUB3" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "el valor de configuración \"epub_author\" no debe estar vacío para EPUB3" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "el valor de configuración \"epub_contributor\" no debe estar vacío para EPUB3" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "el valor de configuración \"epub_description\" no debe estar vacío para EPUB3" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "el valor de configuración \"epub_publisher\" no debe estar vacío para EPUB3" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "el valor de configuración \"epub_copyright\" (or \"copyright\") no debe estar vacío para EPUB3" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "el valor de configuración \"epub_identifier\" no debe estar vacío para EPUB3" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "el valor de configuración \"version\" no debe estar vacío para EPUB3" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "css_file inválido: %r, ignorado" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "Los catálogos de mensajes están en %(outdir)s." + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "objetivos para los archivos de plantillas %d" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "leyendo plantillas..." + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "escribiendo catálogos de mensajes..." + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "Busque cualquier error en la salida anterior o en el archivo %(outdir)s/output.txt" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "Ancla '%s' no encontrado" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "enlace roto: %s (%s)" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "Las páginas del manual están en %(outdir)s." + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "no se encontró el valor de configuración \"man_pages\"; no se escribirán las páginas del manual" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "escribiendo" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "El valor de configuración \"man_pages\" hace referencia a un documento desconocido %s" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "Página HTML está en %(outdir)s." + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "ensamblando documento sencillo" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "escribiendo archivos adicionales" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "Los archivos Texinfo están en %(outdir)s." + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "\nEjecute el comando 'make' en ese directorio para ejecutarlos a través de makeinfo\n(usa el comando 'make info' aquí para hacer esto automáticamente)." + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "no se encontró el valor de configuración \"texinfo_documents\"; no se escribirán documentos" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "El valor de configuración \"texinfo_documents\" hace referencia a un documento desconocido %s" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "procesando %s" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "resolviendo referencias..." + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (en " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "copiando archivos de soporte Texinfo" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "error escribiendo archivo Makefile: %s" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "Los archivos de texto están en %(outdir)s." + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "error escribiendo archivo %s: %s" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "Los archivos XML están en %(outdir)s." + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "Los archivos pseudo-XML están en %(outdir)s." + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "el archivo de información de compilación está roto: %r" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "Las páginas HTML están en %(outdir)s." + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "Error al leer la información de compilación del fichero: %r" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d de %B de %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "El valor de configuración html_use_opensearch ahora debe ser una cadena" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Índice General" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "índice" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "siguiente" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "anterior" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "generando índices" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "escribiendo páginas adicionales" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "copiando archivos descargables..." + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "no se puede copiar archivo descargable %r: %s" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "copiando archivos estáticos..." + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "no se puede copiar archivo estático %r" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "copiando archivos extras" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "no se puede copiar archivo extra %r" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "Error al escribir el archivo de información de compilación: %r" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "no se pudo cargar el índice de búsqueda, pero no se crearán todos los documentos: el índice estará incompleto." + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "La página %s coincide con dos patrones en html_sidebars: %r y %r" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "Se produjo un error Unicode al representar la página %s. Asegúrese de que todos los valores de configuración que contengan contenido que no sea ASCII sean cadenas Unicode." + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "Ha ocurrido un error al renderizar la pagina %s. Motivo: %r" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "volcar inventario de objetos" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "volcar el índice de búsqueda en %s" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "js_file inválido: %r, ignorado" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "Muchos math_renderers están registrados. Pero no se ha seleccionado math_renderer." + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "Desconocido math_renderer %r es dado." + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "entrada html_extra_path %r no existe" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "entrada html_extra_path %r se coloca dentro de outdir" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "entrada html_static_path %r no existe" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "entrada html_static_path %r se coloca dentro de outdir" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "archivo de logo %r no existe" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "el archivo %r usado para el favicon no existe" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "documentación de %s - %s" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "Los archivos LaTeX están en %(outdir)s." + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "\nEjecuta el comando 'make' en este directorio para compilarlos usando (pdf)latex\n(usa el comando 'make latexpdf' aquí para hacer esto automáticamente)." + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "no se encontró el valor de configuración \"latex_documents\"; no se escribirán documentos" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "El valor de configuración \"latex_documents\" hace referencia a un documento desconocido %s" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Índice" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Versión" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "No se conoce la opción de Babel para el idioma %r" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "copiando archivos de soporte TeX" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "copiando archivos de soporte TeX..." + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "copiando archivos adicionales" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "Clave de configuración desconocida: latex_elements[%r], ignorada." + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "%r no tiene configuración de \"tema\"" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "%r no tiene configuración de \"%s\"" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "Ha ocurrido un error al compilar, iniciando depurador:" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "¡Interrumpido!" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "error en marcado de reST" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "Error de codificación:" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "El rastreo completo se ha guardado en %s, si desea informar el problema a los desarrolladores." + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "Error de recursión:" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "Esto puede suceder con archivos fuente muy grandes o profundamente anidados. Puede aumentar cuidadosamente el límite de recursión de Python predeterminado de 1000 en el archivo conf.py con, por ejemplo:" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "Ha ocurrido una excepción:" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "Por favor, informe también esto si fue un error del usuario, de modo que la próxima vez se pueda proporcionar un mejor mensaje de error." + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "Se puede presentar un informe de error en el rastreador en <https://github.com/sphinx-doc/sphinx/issues>. ¡Gracias!" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "número de trabajo debe ser un número positivo" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "Para más información, visita <http://sphinx-doc.org/>." + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "\nGenerar documentación a partir de archivos fuente.\n\nsphinx-build genera documentación de los archivos en SOURCEDIR y la coloca\nen OUTPUTDIR. Busca el archivo 'conf.py' en SOURCEDIR para los ajustes de la \nconfiguración. La herramienta 'sphinx-quickstart' puede usarse para generar archivos de plantilla,\nincluyendo el archivo 'conf.py'\n\nsphinx-build puede crear documentación en diferentes formatos. Un formato es\nseleccionado especificando el nombre del constructor en la línea de comando; por defecto es\nHTML. Los constructores también pueden realizar otras tareas relacionadas con la\ndocumentación.\n\nPor defecto, todo lo que está desactualizado está construido. Salida solo para los archivos\nseleccionados se pueden construir especificando nombres de archivo individuales.\n" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "ruta a los archivos fuente de la documentación" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "ruta al directorio de salida" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "una lista de archivos específicos para reconstruir. Ignorado si se especifica -a" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "opciones generales" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "constructor a usar (por defecto: html)" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "escribir todos los archivos (por defecto: solo escribir archivos nuevos y modificados)" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "no usar un entorno guardado, siempre leer todos los archivos" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "ruta para el entorno en caché y los archivos doctree (predeterminado: OUTPUTDIR/.doctrees)" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "construir en paralelo con N procesos donde sea posible (el valor especial \"auto\" establecerá N en recuento de CPU)" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "ruta del archivo de configuración (conf.py) donde se encuentra (predeterminado: igual que el valor SOURCEDIR)" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "no use ningún archivo de configuración, solomente opciones -D" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "sobreescribir un ajuste en el fichero de configuración" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "pasar un valor a la plantilla HTML" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "define la etiqueta: incluye bloques \"only\" con TAG" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "modo quisquilloso, advierte sobre todas las referencias faltantes" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "opciones de salida de consola" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "aumentar la verbosidad (puede repetirse)" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "sin salida en salida estándar, solo advertencias en los mensajes de error estándar" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "sin salida, ni siquiera advertencias" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "emitir salida de color (predeterminado: detección automática)" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "no emite salida de color (predeterminado: detección automática)" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "escribir avisos (y errores) al fichero indicado" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "convertir advertencias en errores" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "con -W, sigue adelante cuando recibas advertencias" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "mostrar rastreo completo en excepción" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "ejecutar Pdb en excepción" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "no se pueden encontrar los archivos %r" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "no se puede combinar la opción -a y nombres de archivo" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "no se puede abrir el archivo de advertencia %r: %s" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "El argumento de la opción -D debe estar en la forma nombre=valor" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "El argumento de la opción -A debe estar en la forma nombre=valor" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "insertar automáticamente docstrings de los módulos" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "probar automáticamente fragmentos de código en bloques doctest" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "enlace entre la documentación de Sphinx de diferentes proyectos" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "escribir entradas de \"todo\" que se pueden mostrar u ocultar en la compilación" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "verificación para el cubrimiento de la documentación" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "incluir expresiones matemáticas, mostradas como imágenes PNG o SVG" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "incluir matemática, mostrada en el navegador por MathJax" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "inclusión condicional de contenido basado en valores de configuración" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "incluir enlaces al código fuente de objetos documentados de Python" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "crear archivo .nojekyll para publicar el documento en páginas GitHub" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "Por favor, ingrese un nombre de ruta válido." + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "Por favor, ingrese algún texto." + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "Por favor, ingrese uno de %s." + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "Por favor, ingrese cualquiera de 'y' o 'n'" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "Por favor, ingrese un archivo de sufijo, por ejemplo, '.rst' o '.txt'." + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "* Nota: caracteres no ASCII ingresados y codificación de terminal desconocida, suponiendo UTF-8 o Latin-1." + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "Bienvenido a la utilidad de inicio rápido de Sphinx %s." + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "Ingrese los valores para las siguientes configuraciones (solo presione Entrar para\naceptar un valor predeterminado, si se da uno entre paréntesis)." + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "Ruta raíz seleccionada: %s" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "Ingrese la ruta raíz para la documentación." + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "Ruta raíz para la documentación" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "Error: un archivo conf.py ya existe en la ruta raíz seleccionada." + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "sphinx-quickstart no sobreescribirá proyectos existentes de Sphinx." + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "Por favor, ingrese una nueva ruta raíz (o ingrese Enter para salir)" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "Tiene dos opciones para colocar el directorio de compilación para la salida de Sphinx.\nO usas un directorio \"_build\" dentro de la ruta raíz, o separas\ndirectorios \"fuente\" y \"compilación\" dentro de la ruta raíz." + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "Separar directorios fuente y compilado (y/n)" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "Dentro del directorio raíz, se crearán dos directorios más; \"_templates\"\npara plantillas HTML personalizadas y \"_static\" para hojas de estilo personalizadas y otras archivos\nestáticos. Puede ingresar otro prefijo (como \".\") Para reemplazar el guión bajo." + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "Prefijo de nombre para directorios de plantillas y estático" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "El nombre del proyecto aparecerá en varios lugares en la documentación construida." + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "Nombre de proyecto" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "Autor(es)" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "Sphinx tiene la noción de una \"version\" y un \"release\" para el\nsoftware. Cada versión puede tener múltiples versiones. Por ejemplo, para\nPython la versión es algo así como 2.5 o 3.0, mientras que el lanzamiento es\nalgo así como 2.5.1 o 3.0a1. Si no necesita esta estructura dual,\nsolo establezca ambos en el mismo valor." + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "Versión del proyecto" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "Liberación del proyecto" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "Si los documentos deben escribirse en un idioma que no sea inglés,\npuede seleccionar un idioma aquí por su código de idioma. Sphinx entonces\ntraducir el texto que genera a ese idioma.\n\nPara obtener una lista de códigos compatibles, vea\nhttps://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "Lenguaje del proyecto" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "El sufijo del nombre de archivo para los archivos de origen. Comúnmente, esto es \".txt\"\no \".rst\". Solo los archivos con este sufijo se consideran documentos." + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "Sufijo del archivo fuente" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "Un documento es especial porque se considera el nodo superior del\n\"contents tree\", es decir, es la raíz de la estructura jerárquica\nde los documentos. Normalmente, esto es \"index\", pero si su documento \"index\"\nes una plantilla personalizada, también puede establecerlo en otro nombre de archivo." + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "Nombre del documento maestro (sin sufijo)" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "Error: el archivo maestro %s ya se ha encontrado en la ruta raíz seleccionada." + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "sphinx-quickstart no sobreescribirá el archivo existente." + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "Ingrese un nuevo nombre de archivo o cambie el nombre del archivo existente y presione Enter" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "Indique cuál de las siguientes extensiones de Sphinx deben habilitarse:" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "Nota: imgmath y mathjax no se pueden habilitar al mismo tiempo. imgmath ha sido deseleccionado." + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "Se puede generar un archivo Makefile y un archivo de comandos de Windows para que usted\nsolo tiene que ejecutar, por ejemplo, `make html' en lugar de invocar sphinx-build\ndirectamente." + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "Crear Makefile? (y/n)" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "¿Crear archivo de comandos para Windows? (y/n)" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "Creando archivo %s." + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "El archivo %s ya existe, omitiendo." + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "Terminado: se ha creado una estructura de directorio inicial." + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "Ahora debe completar su archivo maestro %s y crear otros archivos fuente\nde documentación." + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "Use el archivo Makefile para compilar los documentos, así ejecute el comando:\n    make builder" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "Use el comando sphinx-build para compilar los documentos, así ejecute el comando:\n sphinx-build -b builder %s %s" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "donde \"builder\" es uno de los constructores compatibles, por ejemplo, html, latex o linkcheck." + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "\nGenere los archivos necesarios para un proyecto Sphinx.\n\nsphinx-quickstart es una herramienta interactiva que hace algunas preguntas sobre su\nproyecto y luego genera un directorio completo de documentación y un ejemplo del archivo\nMakefilepara ser utilizado con el comando sphinx-build.\n" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "modo silencioso" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "raíz del proyecto" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "Opciones de estructura" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "si se especifica, separe los directorios de fuentes y de compilación" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "reemplazo para punto en _templates, etc." + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "Opciones básicas del proyecto" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "nombre del proyecto" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "autores" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "versión del proyecto" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "liberación del proyecto" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "lenguaje del documento" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "sufijo de archivo fuente" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "nombre de documento maestro" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "usar epub" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "Opciones de extensión" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "habilitada extensión %s" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "habilitar extensiones arbitrarias" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "creación del Makefile y Batchfile" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "crear makefile" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "no crear makefile" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "crear batchfile" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "no crear batchfile" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "use el modo make para Makefile/make.bat" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "no use el modo make para Makefile/make.bat" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "Plantillas de proyecto" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "directorio de plantillas para archivos de plantillas" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "definir una variable de proyceto" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "se especifica \"quiet\", pero no se especifica ninguno de \"project\" o \"author\"." + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "Error: la ruta especificada no es un directorio, o ya existen archivos sphinx." + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "sphinx-quickstart solo se genera en un directorio vacío. Por favor, especifique una nueva ruta raíz." + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "Variable de plantilla inválida: %s" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "Más dedent ha detectado" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "Subtítulo inválido: %s" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "la especificación del número de línea está fuera de range(1-%d): %r" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "No puede utilizar ambas opciones \"%s\" y \"%s\"" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "Archivo incluido %r no encontrado o la lectura del mismo fallo" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "Codificación %r usado para la lectura archivo incluido %r parece estar mala, trate de darle una opción :encoding:" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "Objeto nombrado %r no encontrado en el archivo incluido %r" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "No puede utilizar a \"lineno-match\" con un conjunto desunido de \"líneas\"" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "Línea especifico %r: sin líneas tiradas desde el archivo incluido %r" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Autor de la sección: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Autor del módulo: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Código del autor: " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Autor: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parámetros" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Devuelve" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Tipo del valor devuelto" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (función C)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (miembro C)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (macro C)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (tipo C)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (variable C)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "función" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "miembro" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "macro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "tipo" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "variable" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "descripción duplicada del objeto C de %s, otra instancia en %s, utilice :noindex: para uno de ellos" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Nuevo en la versión %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Distinto en la versión %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Obsoleto desde la versión %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "citación duplicada %s, otra instancia en %s" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "Citación [%s] no está referenciada." + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "Declaración duplicada, también definida en '%s'.\nDeclaración es '%s'." + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "Parametros de Plantilla" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Lanzamientos" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "%s (C++ %s)" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "clase" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "unión" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "concepto" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "enum" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "enumeración" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "Definición duplicada, también definida en '%s'.\nEl nombre de la definición es '%s'." + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (función incorporada)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (método de %s)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (clase)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (variable global o constante)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (atributo de %s)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Argumentos" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (módulo)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "método" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "dato" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "atributo" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "módulo" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "duplicada %s descripción de %s, otra %s en %s" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "etiqueta duplicada de la ecuación %s, otra instancia en %s" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "No válido math_eqref_format: %r" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "palabra clave" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operador" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "objeto" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "excepción" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "sentencia" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "función incorporada" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Variables" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Muestra" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (en el módulo %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (variable incorporada)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (en el módulo %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (clase incorporada)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (clase en %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (método de %s.%s)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (método estático de %s.%s)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (método estático de %s)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (método de clase de %s.%s)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (método de clase de %s)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (atributo de %s.%s)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "%s() (propiedad de %s)" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Índice de Módulos Python" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "módulos" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Obsoleto" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "método de la clase" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "método estático" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "descripción duplicada del objeto de %s, otra instancia en %s, utilice :noindex: para uno de ellos" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "se encontró más de un objetivo para la referencia cruzada %r: %s" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (obsoleto)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (directiva)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr ":%s: (opción directiva)" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (rol)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "directiva" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "directive-option" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "rol" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "descripción duplicada de %s %s, otra instancia en %s" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "variables de entorno; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "Descripción de la opción con formato incorrecto %r, debe verse como \"opt\", \"-opt args\", \"--opt args\", \"/opt args\" o \"+opt args\"" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "%sopción de línea de comando " + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "opción de línea de comando" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "el término del glosario debe ir precedido de una línea vacía" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "los términos del glosario no deben estar separados por líneas vacías" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "el glosario parece estar mal formateado, verifique la sangría" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "termino de glosario" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "gramática simbólica" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "etiqueta de referencia" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "variables de entorno" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "opción de programa" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "documento" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Índice de Módulos" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Página de Búsqueda" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "etiqueta duplicada %s, otra instancia en %s" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "duplicada %s descripción de %s, otra instancia en %s" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "numfig está deshabilitado. :numref: se ignora." + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "no se asigna ningún número para %s: %s" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "el enlace no tiene subtítulo: %s" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "inválido numfig_format: %s (%r)" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "inválido numfig_format: %s" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "nueva configuración" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "configuración modificada" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "extensiones modificadas" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "la versión del entorno de compilación no es actual" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "directorio fuente ha cambiado" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "Este entorno es incompatible con el generador seleccionado, elija otro directorio doctree." + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "Error al escanear los documentos en %s: %r" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "Dominio %r no está registrado" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "toctree auto referenciado encontrado. Ignorado." + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "documento no está incluido en ningún toctree" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "ver %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "ver también %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "tipo de entrada de índice desconocido %r" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Símbolos" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "referencias circulares de toctree detectadas, ignorando: %s <- %s" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "toctree contiene una referencia al documento %r que no tiene título: no se generará ningún enlace" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "toctree contiene referencia al documento excluido %r" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "toctree contiene referencias a documentos inexistentes %r" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "archivo de imagen no legible:%s" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "archivo de imagen %s no legible: %s" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "el archivo de descarga no es legible: %s" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "%s ya tiene asignados números de sección (¿número de árbol anidado?)" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "Debería crear archivo %s." + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "\nMire recursivamente en <MODULE_PATH> para módulos y paquetes de Python y cree\nun archivo reST con directivas automodule por paquete en el <OUTPUT_PATH>.\n\nLos <EXCLUDE_PATTERN>s pueden ser patrones de archivo y/o directorio que serán\nexcluidos de la generación.\n\nNota: Por defecto, este script no sobrescribirá los archivos ya creados." + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "ruta al módulo al documento" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "archivo de estilo fnmatch y/o patrones de directorio para excluir de la generación" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "directorio para colocar toda la salida" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "rofundidad máxima de submódulos para mostrar en la tabla de contenido (predeterminado: 4)" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "sobreescribir archivos existentes" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "seguir enlaces simbólicos. Potente cuando se combina con el paquete collective.recipe.omelette." + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "ejecutar la rutina sin crear archivos" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "poner documentación para cada módulo en su propia página" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "incluir \"_private\" en módulos" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "nombre de archivo de la tabla de contenido (predeterminado: módulos)" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "no crear un archivo de tabla de contenido" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "no cree encabezados para los paquetes de módulos/paquetes (por ejemplo, cuando las cadenas de documentación \"docstrings\" ya los contienen)" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "poner la documentación del módulo antes de la documentación del submódulo" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "interpretar las rutas del módulo de acuerdo con la especificación de espacios de nombres implícitos en la PEP-0420" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "sufijo de archivo (por defecto: rst)" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "generar un proyecto completo con sphinx-quickstart" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "agregue module_path al sys.path, que se usa cuando se da el parámetro --full" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "nombre del proyecto (predeterminado: nombre del módulo raíz)" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "autor(es) del proyecto, utilizado cuando se da el parámetro --full" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "versión del proyecto, utilizado cuando se da el parámetro --full" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "lanzamiento del proyecto, utilizado cuando se da el parámetro --full, por defecto es --doc-version" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "opciones de extensión" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "%s no es un directorio." + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "expresiones regulares inválidas %r en %s" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "Pruebas de cobertura en las fuentes terminadas, mira los resultados en %(outdir)spython.txt." + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "expresiones regulares inválidas %r en coverage_c_regexes" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "el módulo %s no podía ser importado: %s" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "falta '+' o '-' en la opción '%s'." + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "'%s' no es una opción válida." + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "'%s' no es una opción pyversion válida" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "tipo de TestCode inválido" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "Prueba de doctests en las fuentes terminadas, mira los resultados en %(outdir)s/output.txt." + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "sin código/salida en el bloque %s en %s:%s" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "ignorando el código doctest no válido: %r" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "====================== duraciones de lectura más lentas =======================" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "Directiva Graphviz no puede tener tanto el contenido y un argumento de nombre de archivo" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "Archivo externo Graphviz %r no encontrado o la lectura del mismo fallo" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "Ignorando la directiva \"graphviz\" sin contenido." + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "dot no produjo un archivo de salida:\n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "comando dot %r no se puede ejecutar (necesarios para la salida de graphviz), Compruebe la configuración de graphviz_dot" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "dot salió con error:\n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "el valor del parámetro graphviz_output_format debe ser uno de 'png', 'svg', pero es %r" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "dot código %r: %s" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[gráfica: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[gráfica]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "el comando convert %r no puede ejecutar, compruebe el valor de configuración image_converter" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "convert salió con error:\n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "comando LaTeX %r no se puede ejecutar (necesario para la visualización matemática), compruebe la configuración de imgmath_latex" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "El comando%s %r no se puede ejecutar (necesario para la visualización matemática), verifique la configuración imgmath_%s" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "visualizar latex %r: %s" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "en línea latex %r: %s" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "Enlace permanente a esta ecuación" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "el inventario intersphinx se ha movido: %s -> %s" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "cargando inventario intersphinx desde %s..." + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "encontró algunos problemas con algunos de los inventarios, pero tenían alternativas de trabajo:" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "no se pudo llegar a ninguno de los inventarios con los siguientes problemas:" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(en %s versión %s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "(en %s)" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "el identificador de intersphinx %r no es una cadena. Ignorado" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "Error al leer intersphinx_mapping[%s], ignorado: %r" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[fuente]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Por hacer" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "Marca TODO encontrada: %s" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<entrada original>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(La <<entrada original>> se encuentra en %s, línea %d.)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "entrada original" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "resaltando el código del módulo..." + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[documentos]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Código de módulo" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Código fuente para %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Resumen: código de modulo" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Todos los módulos para los cuales disponen código</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "firma inválida para auto%s (%r)" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "error al formatear argumentos para %s: %s" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "falta el atributo %s en el objeto %s" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "autodoc: no se pudo determinar %r que se documentará, se produjo la siguiente excepción:\n%s" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "no sabe qué módulo importar para el autodocumento %r (intente colocar una directiva \"module\" o \"currentmodule\" en el documento o dar un nombre explícito al módulo)" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "\"::\" en el nombre del automodule no tiene sentido" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "argumentos de firma o anotación de retorno dada para automodule %s" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "__all__ debe ser una lista de cadenas, no %r (en el módulo %s) -- ignorando __all__" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "atributo faltante mencionado en :members: o módulo __all__: %s, atributo %s" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "Bases: %s" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "alias de :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "Error al analizar type_comment para %r: %s" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "referencias autosummary excluidas documento %r. Ignorado." + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "autosummary: no se encontró el archivo stub %r. Verifique su configuración de autosummary_generate." + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "fallo al importar %s" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "fallo al analizar el nombre %s" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "fallo al importar el objeto %s" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "autosummary_generate: archivo no encontrado: %s" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "autosummary genera archivos .rst internamente. Pero su source_suffix no contiene archivo .rst. Saltado." + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "autosummary: no se pudo determinar %r que se documentará, se produjo la siguiente excepción:\n%s" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "[autosummary] generar autosummary para: %s" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "[autosummary] escribiendo a %s" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "[autosummary] fallo al importar %r: %s" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "\nGenere ReStructuredText usando directivas de resumen automático \"autosummary\".\n\nsphinx-autogen es una interfaz para sphinx.ext.autosummary.generate. Genera\nlos archivos reStructuredText de las directivas autosummary contenidas en el\nlos archivos de entrada dados.\n\nEl formato de la directiva autosummary está documentado en el módulo Python\n``sphinx.ext.autosummary`` y se puede leer usando el siguiente comando::\n\n pydoc sphinx.ext.autosummary\n" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "archivos fuente para generar archivos rST para" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "directorio para colocar toda la salida en" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "sufijo predeterminado para archivos (predeterminado: %(default)s)" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "directorio de plantillas personalizadas (predeterminado: %(default)s)" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "documento importados miembros (predeterminado: %(default)s)" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "Argumentos de palabras clave" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "Ejemplo" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "Ejemplos" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "Notas" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "Otros parámetros" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "Referencias" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "Avisos" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "Campos" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Atención" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Prudencia" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Peligro" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Error" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Consejo" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Importante" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Nota" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Ver también" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Truco" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Advertencia" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "proviene de la página anterior" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "continué en la próxima página" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "No alfabético" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "Números" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "página" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "Tabla de contenido" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Búsqueda" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Ir a" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Mostrar el código" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Resumen" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "¡Bienvenido! Este es" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "la documentación para" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "actualizado por última vez el" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Índices y tablas:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Índice de contenidos completo" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "muestra todas las secciones y subsecciones" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "buscar en esta documentación" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Índice Global de Módulos" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "acceso rápido a todos los módulos" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "todas las funciones, clases, términos" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Índice – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Índice completo en una página" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Índice alfabético de páginas" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "puede ser muy grande" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navegación" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Buscar en %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Sobre este documento" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Copyright" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Derechos de autor</a> %(copyright)s." + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© Derechos de autor %(copyright)s." + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Actualizado por última vez en %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Creado con <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Buscar en %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Tema anterior" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "capítulo anterior" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Próximo tema" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "próximo capítulo" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Por favor, active JavaScript para habilitar la funcionalidad\n de búsqueda." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "La búsqueda de varias palabras solo muestra coincidencias que contienen\n todas las palabras." + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "buscar" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Resultados de la búsqueda" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "Su búsqueda no coincide con ningún documentos. Por favor, asegúrese de que todas las palabras estén correctamente escritas y que usted allá seleccionado las suficientes categorías." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Búsqueda rápida" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Esta página" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Cambios en la versión %(version)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Lista de cambios generada automáticamente en la versión %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Cambios en la biblioteca" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Cambios en la API C" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Otros cambios" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Enlazar permanentemente con este título" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Enlazar permanentemente con esta definición" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Ocultar coincidencias de la búsqueda" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "Buscando" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Preparando búsqueda..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "Búsqueda finalizada, encontró %s página(s) acorde con la consulta de búsqueda." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", en " + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Expandir barra lateral" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Contraer barra lateral" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Contenidos" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "Índice basado en 4 columnas encontrado. Puede ser un error de extensiones que usted usa: %r" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "Pie de página [%s] no está referenciado." + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "Pie de página [#] no está referenciado." + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "referencias de pie de página inconsistentes en el mensaje traducido. original: {0}, traducido: {1}" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "referencias inconsistentes en el mensaje traducido. original: {0}, traducido: {1}" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "referencias de citas inconsistentes en el mensaje traducido. original: {0}, traducido: {1}" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "referencias de término inconsistentes en el mensaje traducido. original: {0}, traducido: {1}" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "más de un objetivo destino encontrado para 'cualquier' referencia cruzada %r: podría ser %s" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "%s:%s destino de referencia no encontrada: %% (destino)s" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "%r destino de referencia no encontrada: %% (destino)s" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "No se pudo recuperar la imagen remota: %s [%d]" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "No se pudo recuperar la imagen remota: %s [%s]" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "Formato de imagen desconocido: %s..." + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "caracteres fuente no codificables, reemplazando con \"?\": %r" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "omitido" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "fallado" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "leyendo error: %s, %s" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "escribiendo error: %s, %s" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "Formato de fecha inválido. Cite la cadena con comillas simples si desea generarla directamente: %s" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "toctree contiene referencia al archivo inexistente %r" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "excepción al evaluar solamente la expresión directiva: %s" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "El soporte para evaluar la sintaxis de Python 2 está en desuso y se eliminará en Sphinx 4.0. Convierta %s a la sintaxis de Python 3." + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "rol por defecto %s no encontrado" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "numfig_format no está definido para %s" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "Cualquier ID no asignado para el nodo %s" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Enlace permanente a esta tabla" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Enlace permanente a este código fuente" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Enlace permanente a esta imagen" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "Enlace permanente a la tabla de contenidos" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "No se pudo obtener el tamaño de la imagen. La opción :scale: se ignora." + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "desconocida %r toplevel_sectioning para la clase %r" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "demasiado grande :maxdepth:, ignorado." + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "El título del documento no es un nodo de texto único" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "no se encontró el nodo de título en la sección, tema, tabla, advertencia o barra lateral" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Notas a pie de página" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "ambas columnas tabulares y la opción :widths: se dan. La opción :widths: se ignora." + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "la unidad de dimensión %s no es válida. Ignorado." + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "tipo de entrada de índice desconocido %s encontrado" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[imagen: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[imagen]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "subtítulo no dentro de una figura." + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "tipo de nodo no implementado: %r" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "tipo de nodo desconocido: %r" diff --git a/sphinx/sphinx/locale/et/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/et/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..c50c7dd --- /dev/null +++ b/sphinx/sphinx/locale/et/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "et", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s &8212; %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Autori\u00f5igused</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Autori\u00f5igused %(copyright)s.", ", in ": "", "About these documents": "Info selle dokumentatsiooni kohta", "Automatically generated list of changes in version %(version)s": "Automaatselt genereeritud nimekiri versiooni %(version)s muutustest", "C API changes": "C API muutused", "Changes in Version %(version)s — %(docstitle)s": "Muutused versioonis %(version)s — %(docstitle)s", "Collapse sidebar": "Varja k\u00fclgriba", "Complete Table of Contents": "T\u00e4ielik sisukorratabel", "Contents": "Sisukord", "Copyright": "Autori\u00f5igus", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Loodud <a href=\"http://sphinx-doc.org/\">Sphinxiga</a> (versioon: %(sphinx_version)s).", "Expand sidebar": "N\u00e4ita k\u00fclgriba", "Full index on one page": "T\u00e4isindeks \u00fchel lehel", "General Index": "\u00dcldindeks", "Global Module Index": "Globaalne moodulite indeks", "Go": "Otsi", "Hide Search Matches": "Varja otsingu tulemused", "Index": "Indeks", "Index – %(key)s": "Indeks – %(key)s", "Index pages by letter": "Indeksi lehek\u00fcljed algust\u00e4he kaupa", "Indices and tables:": "Indeksid ja tabelid:", "Last updated on %(last_updated)s.": "Viimati uuendatud %(last_updated)s.", "Library changes": "Teegi muutused", "Navigation": "Navigatsioon", "Next topic": "J\u00e4rgmine teema", "Other changes": "\u00dclej\u00e4\u00e4nud muutused", "Overview": "\u00dclevaade", "Permalink to this definition": "P\u00fcsiviit sellele definitsioonile", "Permalink to this headline": "P\u00fcsiviit sellele pealkirjale", "Please activate JavaScript to enable the search\n functionality.": "Otsingu v\u00f5imaldamiseks tuleb aktiveerida JavaScript.", "Preparing search...": "Otsingu ettevalmistamine...", "Previous topic": "Eelmine teema", "Quick search": "Kiirotsing", "Search": "Otsing", "Search Page": "Otsinguleht", "Search Results": "Otsingu tulemused", "Search finished, found %s page(s) matching the search query.": "Otsingu tulemusena leiti %s leht(e).", "Search within %(docstitle)s": "Otsi %(docstitle)s piires", "Searching": "Otsimine", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "N\u00e4ita l\u00e4htekoodi", "Table of Contents": "Sisukorratabel", "This Page": "K\u00e4esolev leht", "Welcome! This is": "Tervitused! See on", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Sinu otsingule ei vastanud \u00fckski dokument. Palun veendu, et k\u00f5ik sisestatud s\u00f5nad on \u00f5igesti kirjutatud ja sa oled valikud piisaval hulgal kategooriaid.", "all functions, classes, terms": "k\u00f5ik funktsioonid, klassid ja terminid", "can be huge": "v\u00f5ib olla v\u00e4ga suur", "last updated": "viimati uuendatud", "lists all sections and subsections": "toob v\u00e4lja k\u00f5ik sektsioonid ja alamsektsioonid", "next chapter": "j\u00e4rgmine jaotis", "previous chapter": "eelmine jaotis", "quick access to all modules": "kiire ligip\u00e4\u00e4s k\u00f5igile moodulitele", "search": "otsi", "search this documentation": "otsi sellest dokumentatsioonist", "the documentation for": "dokumentatsioon projektile"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/et/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/et/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..def0d2e --- /dev/null +++ b/sphinx/sphinx/locale/et/LC_MESSAGES/sphinx.po @@ -0,0 +1,3469 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Aivar Annamaa <aivar.annamaa@gmail.com>, 2011 +# Ivar Smolin <okul at linux ee>, 2012 +# Ivar Smolin <okul@linux.ee>, 2013-2020 +# Luc Saffre <luc.saffre@gmail.com>, 2015 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Estonian (http://www.transifex.com/sphinx-doc/sphinx-1/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.8.0\n" +"Language: et\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "seadistuste kataloog (%s) ei sisalda faili conf.py" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "Lähtekataloogi (%s) pole võimalik leida" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "Lähtekataloog ja sihtkataloog ei tohi olla identsed" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "Sphinx v%s käitamine" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "See projekt vajab vähemalt Sphinxi v%s ja seetõttu pole projekti võimalik käesoleva versiooniga ehitada." + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "väljundkataloogi loomine" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "tõlgete laadimine [%s]... " + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "valmis" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "tõrge: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "Ehitajat pole valitud, kasutatakse vaikimisi ehitajat: html" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "oli edukas" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "lõppes probleemidega" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "ehitamine %s, %s hoiatus." + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "ehitamine %s." + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "vigane arv %r seadistuse väärtusele %r, eiratakse" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "Puudub määratud seadistusväärtus: %s" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "Seadistuste väärtus %r on juba olemas" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "Seadistusfail (või mõni selle poolt imporditud moodulitest) kutsus välja sys.exit()" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "Sektsioon %s" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "Joonis %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Tabel %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "Nimekiri %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "primary_domain %r ei leitud, eiratakse." + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "dokument pole loetav ja seda eiratakse." + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "Ehitaja klassil %s puudub atribuut \"name\"" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "Ehitaja %r on juba olemas (moodulis %s)" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "Ehitajat nimega %s pole registreeritud" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "domeen %s on juba registreeritud" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "domeen %s pole veel registreeritud" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "source_parser on %r jaoks juba registreeritud" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "Lähtekoodi analüsaatorit pole %s jaoks registreeritud" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "Algne erind:\n" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "Laiendust %s pole võimalik importida" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "erindil %r puudub funktsioon setup(); kas see on päriselt Sphinxi laiendusmoodul?" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Pythoni täiustusettepanekud; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "teemal %r puudub \"theme\" säte" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "teemal %r puudub \"inherit\" säte" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "fail %r teemarajal pole korrektni zip-fail või ei sisalda see teemat" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "sphinx_rtd_theme pole alates versioonist 1.4.0 enam otsene sõltuvus. Palun paigalda see käsitsi. (pip install sphinx_rtd_theme)" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "teemat nimega %r ei leitud (kas theme.conf on puudu?)" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "ehitamine [mo]: " + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "väljundi kirjutamine... " + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "%d määratud po-faili sihtfailid" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "%d po-faili sihtfailid on aegunud" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "kõik lähtefailid" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "%d lähtefaili sihtfailid on aegunud" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "ehitamine [%s]: " + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "praeguseks aegunud failide otsimine... " + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "leitud %d" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "ei leitud" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "aegunud sihtfaile pole" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "keskkonna uuendamine:" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "lisatud %s, muudetud %s, eemaldatud %s" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "lähtefailide lugemine..." + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "dokumentide ettevalmistamine" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "kujutiste kopeerimine... " + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "kujutise faili %r pole võimalik kopeerida: %s" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "kujutise faili %r pole võimalik kirjutada: %s" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "faili %s kirjutamine..." + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "Ülevaatefail asub kataloogis %(outdir)s." + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "versioonis %s pole muutusi." + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "kokkuvõttefaili kirjutamine..." + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Sisseehitatud" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Mooduli tase" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "lähtefailide kopeerimine..." + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "vigane css_file: %r, eiratakse" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "Sõnumikataloogid asuvad kataloogis %(outdir)s." + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "%d mallifaili sihtfailid" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "mallide lugemine... " + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "sõnumikataloogide kirjutamine... " + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "Otsi vigu ülalolevast väljundist või failist %(outdir)s/output.txt" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "Juhendi lehed asuvad kataloogis %(outdir)s." + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "seadistusparameetrit \"man_pages\" ei leitud, juhendi lehti ei kirjutata" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "HTML-leht asub kataloogis %(outdir)s." + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "Texinfo failid asuvad kataloogis %(outdir)s." + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "seadistusparameetrit \"texinfo_documents\" ei leitud, dokumente ei kirjutata" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "viidete lahendamine..." + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (pealkirjas " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "Tekstifailid asuvad kataloogis %(outdir)s." + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "viga faili %s kirjutamisel: %s" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "XML-failid asuvad kataloogis %(outdir)s." + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "PseudoXML-failid asuvad kataloogis %(outdir)s." + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "HTML-lehed asuvad kataloogis %(outdir)s." + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d. %b %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Üldindeks" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "indeks" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "järgmine" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "eelmine" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "allalaaditavate failide kopeerimine..." + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "staatiliste failide kopeerimine... " + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "staatilist faili %r pole võimalik kopeerida" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "vigane js_file: %r, eiratakse" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "logofaili %r pole olemas" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "favicon faili %r pole olemas" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s dokumentatsioon" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "LaTeX-failid asuvad kataloogis %(outdir)s." + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "\nNende jooksutamiseks läbi (pdf)latex programmi käivita selles kataloogis\n'make' (selle automaatseks tegemiseks kasuta `make latexpdf')." + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "seadistusparameetrit \"latex_documents\" ei leitud, dokumente ei kirjutata" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "seadistusparameeter \"latex_documents\" viitab tundmatule dokumendile %s" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Indeks" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Redaktsioon" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "TeX-i tugifailide kopeerimine..." + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "Kui see oli kasutaja viga, siis anna palun sellest teada, et tulevikus oleks võimalik parem veateade väljastada." + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "Vearaportit on võimalik esitada jälguris aadressil <https://github.com/sphinx-doc/sphinx/issues>. Aitäh!" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "Lisateabe jaoks külasta <http://sphinx-doc.org/>." + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "\nDokumentatsiooni genereerimine lähtefailidest.\n\nsphinx-build genereerib dokumentatsiooni kataloogis SOURCEDIR asuvatest\nfailidest ja paneb selle kataloogi OUTPUTDIR. Seadistusparameetrite lugemiseks\notsitakse SOURCEDIR kataloogist faili 'conf.py'. Mallifailide, kaasa arvatud\nconf.py genereerimiseks võib kasutada vahendit 'sphinx-quickstart'.\n\nsphinx-build suudab luua dokumentatsiooni erinevates vormingutes. Vormingu\nvalimiseks määratakse käsurealt ehitaja nimi, vaikimisi on selleks HTML.\nEhitaja võib läbi viia ka teisi dokumentatsiooni töötlemiseks vajalikke\ntoiminguid.\n\nVaikimisi ehitatakse kõik, mis on uuenenud. Üksikute failinimede määramisega\nsaab ainult valitud failidest genereeritud väljundit.\n" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "dokumentatsiooni lähtefailide rada" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "väljundkataloogi rada" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "määratud failide uuestiehitamine. Võtme -a korral eiratakse" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "üldsuvandid" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "kasutatav ehitaja (vaikimisi: html)" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "kõikide failide kirjutamine (vaikimisi kirjutatakse ainult uued ja muutunud failid)" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "salvestatud keskkonda ei kasutata, alati loetakse kõik failid" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "puhverdatud keskkonna ja dokumendipuu rada (vaikimisi: OUTPUTDIR/.doctrees)" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "rööbiti ehitamine N protsessiga, kui võimalik (eriväärtus \"auto\" määrab N väärtuseks protsessorite arvu)" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "seadistusfaili (conf.py) asukoha rada (vaikimisi sama mis SOURCEDIR)" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "seadistusfaili ei kasutata üldse, ainult -D suvandid" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "seadistusfailis määratud väärtuse asendamine" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "väärtuse edastamine HTML-mallidesse" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "konsooliväljundi suvandid" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "hoiatuste (ja vigade) kirjutamine määratud faili" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "hoiatuste muutmine vigadeks" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "erindi korral täieliku tagasijälituse näitamine" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "erindi korral Pdb käivitamine" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "faile %r pole võimalik leida" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "suvandit -a ja failinimesid pole võimalik kombineerida" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "hoiatuste faili %r pole võimalik avada: %s" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "-D suvandi argument peab olema vormingus nimi=väärtus" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "-A suvandi argument peab olema vormingus nimi=väärtus" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "moodulite dokumentatsioonistringide automaatne lisamine" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "dokumentatsioonistringides olevate koodijuppide automaattestimine" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "eri projektide Sphinx-dokumentatsiooni omavaheline viitamine" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "\"teha\" sissekannete kirjutamine, mida võib ehitamisega peita või näidata" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "dokumentatsiooni katvuse kontrollid" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "matemaatika kaasamine, mis renderdatakse PNG- või SVG-kujutisteks" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "matemaatika kaasamine, mis renderdatakse veebisirvikus MathJax-i abil" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "sisu tingimuslik kaasamine seadistusparameetrite alusel" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "dokumenteeritud Python-objektide lähtekoodile viitamise kaasamine" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr ".nojekyll faili loomine dokumentide avaldamiseks GitHub-i lehtedel" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "Palun sisesta mingi tekst." + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "Palun sisesta kas 'y' või 'n'." + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "Tere tulemast kasutama Sphinx %s lendstardi utiliiti." + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "Viga: valitud juurkataloogist leiti olemasolev conf.py." + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "sphinx-quickstart ei kirjuta olemasolevaid Sphinx-projekte üle." + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "Palun sisesta uus juurkataloog (või vajuta Enter lõpetamiseks)" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "Lähtekoodi ja ehitamise kataloogide eraldamine (y/n)" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "Mallide ja staatilise kataloogi nime eesliide" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "Projekti nimi" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "Autorite nimed" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "Projekti versioon" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "Projekti väljalase" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "Projekti keel" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "Lähtefaili järelliide" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "Sinu põhidokumendi nimi (ilma järelliiteta)" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "sphinx-quickstart ei kirjuta olemasolevat faili üle." + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "Palun sisesta uus failinimi või nimeta olemasolev fail ümber ja vajuta Enter" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "Märkus: imgmath ja mathjax ei saa korraga lubatud olla. imgmath eemaldati valikust." + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "Kas luua Makefile? (y/n)" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "Kas luua Windowsi käsufail? (y/n)" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "Faili %s loomine." + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "Fail %s on juba olemas ja jäetakse vahele." + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "Lõpetamine: Algne kataloogistruktuur on loodud." + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "\nSphinx-projekti jaoks vajalike failide genereerimine.\n\nsphinx-quickstart on interaktiivne tööriist, mis küsib mõned küsimused Sinu\nprojekti kohta ja seepeale genereerib täieliku dokumentatsioonikataloogi ning\nnäidis-Makefile kasutamiseks koos sphinx-buildiga.\n" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "vaikne režiim" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "Struktuuri suvandid" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "kasutamise korral eraldatakse lähtefailide ja ehitamise kataloogid" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "Projekti põhisuvandid" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "projekti nimi" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "autorite nimed" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "projekti versioon" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "projekti väljalase" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "dokumendi keel" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "lähtefaili järelliide" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "põhidokumendi nimi" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "Laienduste suvandid" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "laienduse %s lubamine" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "suvaliste laienduste määramine" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "Makefile ja Batchfile loomine" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "makefile loomine" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "makefile loomata jätmine" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "batchfile loomine" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "batchfile loomata jätmine" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "Projekti loomine mallist" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "mallifailide kataloog" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "malli muutuja kirjeldamine" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "Vigane mallimuutuja: %s" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "Vigane selgitustekst: %s" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "Suvandeid \"%s\" ja \"%s\" pole võimalik korraga kasutada" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Sektsiooni autor: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Mooduli autor: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Koodi autor: " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Autor: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parameetrid" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Tagastab" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Tagastustüüp" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C funktsioon)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C liige)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C makro)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C tüüp)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C muutuja)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "funktsioon" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "liige" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "makro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "tüüp" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "muutuja" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Uus versioonis %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Muudetud versioonis %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Iganenud alates versioonist %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "Malli parameetrid" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "klass" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "loend" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (sisseehitatud funktsioon)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s meetod)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (klass)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (globaalmuutuja või konstant)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s atribuut)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Argumendid" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (moodul)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "meetod" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "andmed" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "atribuut" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "moodul" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "võrrandil %s on topeltsilt, teine instants on %s" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "võtmesõna" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operaator" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "objekt" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "erind" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "lause" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "sisseehitatud funktsioon" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Muutujad" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (moodulis %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (sisseehitatud muutuja)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (moodulis %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (sisseehitatud klass)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (klass moodulis %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s meetod)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s staatiline meetod)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s staatiline meetod)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (klassi %s.%s meetod)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (klassi %s meetod)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s atribuut)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Pythoni moodulite indeks" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "moodulid" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Iganenud" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "klassi meetod" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "staatiline meetod" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (iganenud)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (direktiiv)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (roll)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "direktiiv" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "roll" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "keskkonnamuutuja; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "sõnastiku termin" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "grammatika märk" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "viite silt" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "keskkonnamuutuja" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "programmi suvand" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "dokument" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Mooduli indeks" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Otsinguleht" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "dokument pole ühegi sisukorrapuu osa" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "vaata %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "vaata ka %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Sümbolid" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "kujutise fail pole loetav: %s" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "kujutise fail %s pole loetav: %s" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "laienduse suvandid" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "%s pole kataloog." + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "Lähtefailide katvustestimine on lõppenud, vaata tulemusi failist %(outdir)spython.txt." + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "vigane TestCode tüüp" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "Lähtefailide doctest-testimine on lõppenud, vaata tulemusi failist %(outdir)s/output.txt." + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "vigase doctest koodi eiramine: %r" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "Graphviz direktiivil ei tohi samaaegselt olla argumendid content ja filename" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "Välist Graphviz-faili %r ei leitud või esines tõrge selle lugemisel" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "Ilma sisuta \"graphviz\" direktiivi eiramine." + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "dot käsku %r pole võimalik käivitada (vajalik graphvizi väljundi jaoks), kontrolli graphviz_dot sätteid" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "graphviz_output_format peab olema kas 'png' või 'svg', kuid mitte %r" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[joonis: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[joonis]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "Püsiviit sellele võrrandile" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(projektis %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[lähtekood]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Teha" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "Leitud TEHA kirje: %s" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<algne kirje>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(<<algne kirje>> asub failis %s, real %d.)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "algne kirje" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[dokumentatsioon]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Mooduli kood" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>%s lähtekood</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Ülevaade: mooduli kood" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Kõik lähtekoodiga moodulid</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "Põlvnemine: %s" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "klassi :class:`%s` sünonüüm" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "tõrge %s importimisel" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "tõrge objekti %s importimisel" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "[autosummary] automaatkokkuvõtte genereerimine failile: %s" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "[autosummary] kirjutamine kataloogi %s" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "lähtefailid, mille kohta rST-faile genereerida" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "väljundfailide kataloog" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "failide vaikimisi järelliide (vaikimisi: %(default)s)" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "kohandatud mallide kataloog (vaikimisi: %(default)s)" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "imporditud liikmete dokumenteerimine (vaikimisi: %(default)s)" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "Võtmesõnadega argumendid" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "Näide" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "Näited" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "Märkused" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Tähelepanu" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Ettevaatust" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Oht" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Viga" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Vihje" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Tähtis" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Märkus" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Vaata ka" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Nõuanne" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Hoiatus" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "jätk eelmisele leheküljele" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "jätkub järgmisel leheküljel" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "lehekülg" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "Sisukorratabel" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Otsing" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Otsi" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Näita lähtekoodi" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Ülevaade" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Tervitused! See on" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "dokumentatsioon projektile" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "viimati uuendatud" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Indeksid ja tabelid:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Täielik sisukorratabel" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "toob välja kõik sektsioonid ja alamsektsioonid" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "otsi sellest dokumentatsioonist" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Globaalne moodulite indeks" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "kiire ligipääs kõigile moodulitele" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "kõik funktsioonid, klassid ja terminid" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Indeks – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Täisindeks ühel lehel" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Indeksi leheküljed algustähe kaupa" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "võib olla väga suur" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navigatsioon" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Otsi %(docstitle)s piires" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Info selle dokumentatsiooni kohta" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Autoriõigus" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Autoriõigused</a> %(copyright)s." + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© Autoriõigused %(copyright)s." + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Viimati uuendatud %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Loodud <a href=\"http://sphinx-doc.org/\">Sphinxiga</a> (versioon: %(sphinx_version)s)." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Otsi %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Eelmine teema" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "eelmine jaotis" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Järgmine teema" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "järgmine jaotis" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Otsingu võimaldamiseks tuleb aktiveerida JavaScript." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "otsi" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Otsingu tulemused" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "Sinu otsingule ei vastanud ükski dokument. Palun veendu, et kõik sisestatud sõnad on õigesti kirjutatud ja sa oled valikud piisaval hulgal kategooriaid." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Kiirotsing" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Käesolev leht" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Muutused versioonis %(version)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s &8212; %(docstitle)s" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Automaatselt genereeritud nimekiri versiooni %(version)s muutustest" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Teegi muutused" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "C API muutused" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Ülejäänud muutused" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Püsiviit sellele pealkirjale" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Püsiviit sellele definitsioonile" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Varja otsingu tulemused" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "Otsimine" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Otsingu ettevalmistamine..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "Otsingu tulemusena leiti %s leht(e)." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Näita külgriba" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Varja külgriba" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Sisukord" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "viga lugemisel: %s, %s" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "viga kirjutamisel: %s, %s" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Püsiviit sellele tabelile" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Püsiviit sellele programmikoodile" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Püsiviit sellele pildile" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "Püsiviit sellele sisukorrapuule" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr ":maxdepth: on liiga suur ja seda eiratakse." + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Joonealused märkused" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[pilt: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[pilt]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/eu/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/eu/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..9672f5d --- /dev/null +++ b/sphinx/sphinx/locale/eu/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "eu", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "Dokumentu hauen inguruan", "Automatically generated list of changes in version %(version)s": "Automatikoki sortutako %(version)s bertsioaren aldaketen zerrenda", "C API changes": "C API aldaketak", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Alboko barra tolestu", "Complete Table of Contents": "Eduki taula osoa", "Contents": "Edukiak", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s erabiliz sortutakoa.", "Expand sidebar": "Alboko barra luzatu", "Full index on one page": "Indize guztia orri batean", "General Index": "Indize orokorra", "Global Module Index": "Modulu indize globala", "Go": "Joan", "Hide Search Matches": "Bilaketa bat-etortzeak ezkutatu", "Index": "Indizea", "Index – %(key)s": "Indizea – %(key)s", "Index pages by letter": "Indize orriak hizkika", "Indices and tables:": "Indizeak eta taulak:", "Last updated on %(last_updated)s.": "Azken aldaketa: %(last_updated)s.", "Library changes": "Liburutegi aldaketak", "Navigation": "Nabigazioa", "Next topic": "Hurrengo gaia", "Other changes": "Beste aldaketak", "Overview": "Gainbegirada", "Permalink to this definition": "Definizio honetarako esteka iraunkorra", "Permalink to this headline": "Goiburu honetarako esteka iraunkorra", "Please activate JavaScript to enable the search\n functionality.": "Mesedez, gaitu JavaScript-a bilaketa erabili ahal izateko.", "Preparing search...": "", "Previous topic": "Aurreko gaia", "Quick search": "Bilaketa azkarra", "Search": "Bilatu", "Search Page": "Bilaketa orria", "Search Results": "Bilaketa emaitzak", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "Bilatu %(docstitle)s(e)n", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Iturburua ikusi", "Table of Contents": "", "This Page": "Orri hau", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "funtzio, klase, termino guztiak", "can be huge": "handia izan daiteke", "last updated": "", "lists all sections and subsections": "atal eta azpiatal guztiak zerrendatu", "next chapter": "hurrengo kapitulua", "previous chapter": "aurreko kapitulua", "quick access to all modules": "modulu guztietara atzipen azkarra", "search": "bilatu", "search this documentation": "dokumentazio honetan bilatu", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/eu/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/eu/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..a72468c --- /dev/null +++ b/sphinx/sphinx/locale/eu/LC_MESSAGES/sphinx.po @@ -0,0 +1,3467 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Ales Zabala Alava <shagi@gisa-elkartea.org>, 2011 +# Asier Iturralde Sarasola <asier.iturralde@gmail.com>, 2018 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Basque (http://www.transifex.com/sphinx-doc/sphinx-1/language/eu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: eu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Hobekuntza Proposamena; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Modulu maila" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (hemen: " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%Y %b %d" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Indize orokorra" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "indizea" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "hurrengoa" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "aurrekoa" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s dokumentazioa" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Indizea" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Argitalpena" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Atalaren egilea: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Moduluaren egilea: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Kodearen egilea: " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Egilea:" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parametroak" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Itzultzen du" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Itzulketa mota" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C funtzioa)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C partaidea)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C makroa)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C mota)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C aldagaia)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "funtzioa" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "partaidea" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "makroa" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "mota" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "aldagaia" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Berria %s bertsioan" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "%s bertsioan aldatuta" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "%s bertsiotik aurrera zaharkituta" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Jaurtitzen du" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "klasea" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s metodoa)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (klasea)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (aldagai globala edo konstantea)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s atributua)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Argumentuak" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (modulua)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "metodoa" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "datuak" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "atributua" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "modulua" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "gako-hitza" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "eragiketa" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "objetua" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "salbuespena" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "sententzia" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Aldagaiak" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Goratzen du" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (%s moduluan)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (%s moduluan)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (klasea %s-(e)n)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s metodoa)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s metodo estatikoa)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s metodo estatikoa)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (%s.%s klaseko metodoa)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (%s klaseko metodoa)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s atributua)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Python moduluen indizea" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "moduluak" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Zaharkitua" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "klaseko metodoa" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "metodo estatikoa" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (zaharkitua)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (rola)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "rola" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "inguruneko aldagaia; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "glosarioko terminoa" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "gramatikako token-a" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "erreferentzia etiketa" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "inguruneko aldagaia" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "programako aukera" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Moduluen indizea" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Bilaketa orria" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "%s ikusi" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "ikusi %s baita ere" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[iturburua]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Egitekoa" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "jatorrizko sarrera" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[dokumentazioa]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Moduluko kodea" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>%s(r)en iturburu kodea</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Gainbegirada: moduluko kodea" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Kodea eskuragarri duten modulu guztiak</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Adi" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Kontuz" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Arriskua" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Errorea" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Argibidea" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Garrantzitsua" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Oharra" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Ikusi baita ere" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Iradokizuna" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Kontuz" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "aurreko orritik jarraitzen du" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Bilatu" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Joan" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Iturburua ikusi" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Gainbegirada" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Indizeak eta taulak:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Eduki taula osoa" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "atal eta azpiatal guztiak zerrendatu" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "dokumentazio honetan bilatu" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Modulu indize globala" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "modulu guztietara atzipen azkarra" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "funtzio, klase, termino guztiak" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Indizea – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Indize guztia orri batean" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Indize orriak hizkika" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "handia izan daiteke" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Nabigazioa" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Bilatu %(docstitle)s(e)n" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Dokumentu hauen inguruan" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Copyright" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Azken aldaketa: %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s erabiliz sortutakoa." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "%(docstitle)s bilatu" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Aurreko gaia" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "aurreko kapitulua" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Hurrengo gaia" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "hurrengo kapitulua" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Mesedez, gaitu JavaScript-a bilaketa erabili ahal izateko." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "bilatu" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Bilaketa emaitzak" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Bilaketa azkarra" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Orri hau" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Automatikoki sortutako %(version)s bertsioaren aldaketen zerrenda" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Liburutegi aldaketak" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "C API aldaketak" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Beste aldaketak" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Goiburu honetarako esteka iraunkorra" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Definizio honetarako esteka iraunkorra" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Bilaketa bat-etortzeak ezkutatu" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Alboko barra luzatu" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Alboko barra tolestu" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Edukiak" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Oin-oharrak" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[irudia]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/fa/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/fa/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..87a3025 --- /dev/null +++ b/sphinx/sphinx/locale/fa/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "fa", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "\u062f\u0631\u0628\u0627\u0631\u0647 \u0627\u06cc\u0646 \u0645\u0633\u062a\u0646\u062f\u0627\u062a", "Automatically generated list of changes in version %(version)s": "\u0644\u06cc\u0633\u062a \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u062f\u0631 \u0646\u0633\u062e\u0647 %(version)s", "C API changes": "C API \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "\u0641\u0647\u0631\u0633\u062a \u06a9\u0627\u0645\u0644 \u0645\u0637\u0627\u0644\u0628", "Contents": "", "Copyright": "\u06a9\u067e\u06cc \u0631\u0627\u06cc\u062a", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": ". <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0628\u0627", "Expand sidebar": "", "Full index on one page": "\u0641\u0647\u0631\u0633\u062a \u06a9\u0627\u0645\u0644 \u062f\u0631 \u06cc\u06a9 \u0635\u0641\u062d\u0647", "General Index": "\u0641\u0647\u0631\u0633\u062a \u06a9\u0644\u06cc", "Global Module Index": "\u0641\u0647\u0631\u0633\u062a \u06a9\u0644\u06cc \u0645\u0627\u0698\u0648\u0644 \u0647\u0627", "Go": "\u0628\u0631\u0648", "Hide Search Matches": "\u0639\u062f\u0645 \u0646\u0645\u0627\u06cc\u0634 \u0646\u062a\u0627\u06cc\u062c \u06cc\u0627\u0641\u062a \u0634\u062f\u0647", "Index": "\u0641\u0647\u0631\u0633\u062a", "Index – %(key)s": "\u0641\u0647\u0631\u0633\u062a – %(key)s", "Index pages by letter": "\u0641\u0647\u0631\u0633\u062a \u0635\u0641\u062d\u0627\u062a \u0628\u0631 \u0627\u0633\u0627\u0633 \u062d\u0631\u0648\u0641", "Indices and tables:": "\u0627\u06cc\u0646\u062f\u06a9\u0633 \u0647\u0627 \u0648 \u062c\u062f\u0627\u0648\u0644:", "Last updated on %(last_updated)s.": ". %(last_updated)s \u0622\u062e\u0631\u06cc\u0646 \u0628\u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u062f\u0631", "Library changes": "\u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u06cc\u06cc", "Navigation": "\u0646\u0627\u0648\u0628\u0631\u06cc", "Next topic": "\u0645\u0648\u0636\u0648\u0639 \u0628\u0639\u062f\u06cc", "Other changes": "\u062f\u06af\u0631 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a", "Overview": "\u0628\u0631\u0631\u0633\u06cc \u0627\u062c\u0645\u0627\u0644\u06cc", "Permalink to this definition": "\u0644\u06cc\u0646\u06a9 \u062b\u0627\u0628\u062a \u0628\u0647 \u0627\u06cc\u0646 \u062a\u0639\u0631\u06cc\u0641", "Permalink to this headline": "\u0644\u06cc\u0646\u06a9 \u062b\u0627\u0628\u062a \u0628\u0647 \u0627\u06cc\u0646 \u0633\u0631 \u0645\u0642\u0627\u0644\u0647", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "\u0645\u0648\u0636\u0648\u0639 \u0642\u0628\u0644\u06cc", "Quick search": "\u062c\u0633\u062a\u062c\u0648 \u0633\u0631\u06cc\u0639", "Search": "\u062c\u0633\u062a\u062c\u0648", "Search Page": "\u0635\u0641\u062d\u0647 \u062c\u0633\u062a\u062c\u0648", "Search Results": "\u0646\u062a\u0627\u06cc\u062c \u062c\u0633\u062a\u062c\u0648", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "\u062c\u0633\u062a\u062c\u0648 \u062f\u0631 %(docstitle)s", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "\u0646\u0645\u0627\u06cc\u0634 \u0633\u0648\u0631\u0633", "Table of Contents": "", "This Page": "\u0635\u0641\u062d\u0647 \u0641\u0639\u0644\u06cc", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "\u062a\u0645\u0627\u0645\u06cc \u062a\u0648\u0627\u0628\u0639 \u060c \u06a9\u0644\u0627\u0633 \u0647\u0627 \u060c \u0627\u0635\u0637\u0644\u0627\u062d\u0627\u062a", "can be huge": "", "last updated": "", "lists all sections and subsections": "\u0641\u0647\u0631\u0633\u062a \u062a\u0645\u0627\u0645\u06cc \u0628\u062e\u0634 \u0647\u0627 \u0648 \u0632\u06cc\u0631 \u0645\u062c\u0645\u0648\u0639\u0647 \u0647\u0627", "next chapter": "\u0641\u0635\u0644 \u0628\u0639\u062f\u06cc", "previous chapter": "\u0641\u0635\u0644 \u0642\u0628\u0644\u06cc", "quick access to all modules": "\u062f\u0633\u062a\u0631\u0633\u06cc \u0633\u0631\u06cc\u0639 \u0628\u0647 \u062a\u0645\u0627\u0645\u06cc \u0645\u062a\u062f\u0647\u0627", "search": "\u062c\u0633\u062a\u062c\u0648", "search this documentation": "\u062c\u0633\u062a\u062c\u0648 \u062f\u0631 \u0627\u06cc\u0646 \u0627\u0633\u0646\u0627\u062f", "the documentation for": ""}, "plural_expr": "(n > 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/fa/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/fa/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..6f1c35d --- /dev/null +++ b/sphinx/sphinx/locale/fa/LC_MESSAGES/sphinx.po @@ -0,0 +1,3465 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Persian (http://www.transifex.com/sphinx-doc/sphinx-1/language/fa/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: fa\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "درونی سازی" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "در سطح ماژول" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "فهرست کلی" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "فهرست" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "بعدی" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "قبلی" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "فهرست" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "انتشار" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr ":نویسنده این بخش" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "نویسنده این ماژول:" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr ":نویسنده" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "پارامترها" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "نوع برگشتی" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C تابع)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C عضو)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C ماکرو)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C نوع)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C متغیر)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "جدید در نسخه %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "تغییر داده شده در نسخه %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "منسوخ شده از نسخه %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (توابع درونی)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s متد)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s مشخصه)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (ماژول)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "ماژول" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "کلمه کلیدی" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "عملگر" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "شیء" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "استثناء" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "گذاره" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "توابع درونی" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "برانگیختن" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (در ماژول %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (متغیر درونی)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (در ماژول %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (کلاس درونی)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (کلاس در %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s متد)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s متد استاتیک)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s متد استاتیک)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s مشخصه)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "ماژول ها" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "منسوخ شده" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "%s متغیرهای عمومی؛" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "فهرست ماژول ها" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "صفحه جستجو" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "در دست انجام" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "دقت" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "ملاحظه" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "خطر" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "خطا" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "تذکر" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "مهم" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "توجه" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "همچنین ملاحظه نمائید" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "نکته" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "هشدار" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "جستجو" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "برو" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "نمایش سورس" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "بررسی اجمالی" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "ایندکس ها و جداول:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "فهرست کامل مطالب" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "فهرست تمامی بخش ها و زیر مجموعه ها" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "جستجو در این اسناد" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "فهرست کلی ماژول ها" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "دسترسی سریع به تمامی متدها" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "تمامی توابع ، کلاس ها ، اصطلاحات" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "فهرست – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "فهرست کامل در یک صفحه" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "فهرست صفحات بر اساس حروف" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "ناوبری" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "جستجو در %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "درباره این مستندات" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "کپی رایت" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr ". %(last_updated)s آخرین بروز رسانی در" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr ". <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s ایجاد شده با" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "جستجو %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "موضوع قبلی" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "فصل قبلی" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "موضوع بعدی" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "فصل بعدی" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "جستجو" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "نتایج جستجو" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "جستجو سریع" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "صفحه فعلی" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "لیست تولید شده خودکار از تغییرات در نسخه %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "تغییرات کتابخانه ایی" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "C API تغییرات" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "دگر تغییرات" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "لینک ثابت به این سر مقاله" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "لینک ثابت به این تعریف" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "عدم نمایش نتایج یافت شده" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/fi/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/fi/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..1c29068 --- /dev/null +++ b/sphinx/sphinx/locale/fi/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "fi", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "Tietoja t\u00e4st\u00e4 documentist\u00e4", "Automatically generated list of changes in version %(version)s": "Automaattisesti luotu muutoshistoria alkaen versiosta %(version)s", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "", "Full index on one page": "Hakemisto yhten\u00e4 luettelona", "General Index": "Yleinen sis\u00e4llysluettelo", "Global Module Index": "Yleinen moduulien sis\u00e4llysluettelo", "Go": "Siirry", "Hide Search Matches": "Piilota l\u00f6ydetyt", "Index": "Sis\u00e4llysluettelo", "Index – %(key)s": "", "Index pages by letter": "Hakemisto aakkostus sivuttain", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "Navikointi", "Next topic": ">>", "Other changes": "", "Overview": "Yhteenveto", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "Javascript pit\u00e4\u00e4 olla sallittu, jotta etsint\u00e4 toimii.", "Preparing search...": "", "Previous topic": "<<", "Quick search": "Pikahaku", "Search": "Etsi", "Search Page": "Etsi sivu", "Search Results": "Etsinn\u00e4n tulos", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "N\u00e4yt\u00e4 l\u00e4hdekoodina", "Table of Contents": "", "This Page": "T\u00e4m\u00e4 sivu", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "voi olla iso", "last updated": "", "lists all sections and subsections": "", "next chapter": ">>", "previous chapter": "<<", "quick access to all modules": "", "search": "etsi", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/fi/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/fi/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..3d004d8 --- /dev/null +++ b/sphinx/sphinx/locale/fi/LC_MESSAGES/sphinx.po @@ -0,0 +1,3466 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# FIRST AUTHOR <EMAIL@ADDRESS>, 2009 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Finnish (http://www.transifex.com/sphinx-doc/sphinx-1/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Moduulitaso" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d.%m.%Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Yleinen sisällysluettelo" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "hakemisto" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr ">" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "<" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Sisällysluettelo" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Luvun kirjoittaja: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Moduulin kirjoittaja: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Tekijä: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Uusi versiossa %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Muutettu versiossa %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Poistettu versiosta %s alkaen" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (moduuli)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "moduuli" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "moduulit" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Poistettu" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (poistettu)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Moduuli sisällysluettelo" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Etsi sivu" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Tehtävä vielä" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Huom" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Varoitus" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Vaara" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Virhe" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Vihje" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Tärkeä" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Muista" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Katso myös" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Vihje" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Varoitus" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Etsi" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Siirry" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Näytä lähdekoodina" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Yhteenveto" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Yleinen moduulien sisällysluettelo" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Hakemisto yhtenä luettelona" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Hakemisto aakkostus sivuttain" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "voi olla iso" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navikointi" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Tietoja tästä documentistä" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "<<" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "<<" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr ">>" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr ">>" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Javascript pitää olla sallittu, jotta etsintä toimii." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "etsi" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Etsinnän tulos" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Pikahaku" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Tämä sivu" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Automaattisesti luotu muutoshistoria alkaen versiosta %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Piilota löydetyt" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/fr/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/fr/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..af036d6 --- /dev/null +++ b/sphinx/sphinx/locale/fr/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "fr", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", dans", "About these documents": "\u00c0 propos de ces documents", "Automatically generated list of changes in version %(version)s": "Liste auto-g\u00e9n\u00e9r\u00e9e des modifications dans la version %(version)s", "C API changes": "Modifications de l'API C", "Changes in Version %(version)s — %(docstitle)s": "Changements dans la version %(version)s — %(docstitle)s", "Collapse sidebar": "R\u00e9duire la barre lat\u00e9rale", "Complete Table of Contents": "Table des mati\u00e8res compl\u00e8te", "Contents": "Contenu", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Cr\u00e9\u00e9 avec <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Agrandir la barre lat\u00e9rale", "Full index on one page": "Index complet sur une seule page", "General Index": "Index g\u00e9n\u00e9ral", "Global Module Index": "Index g\u00e9n\u00e9ral des modules", "Go": "Go", "Hide Search Matches": "Cacher les r\u00e9sultats de la recherche", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Indexer les pages par lettre", "Indices and tables:": "Indices et tables :", "Last updated on %(last_updated)s.": "Mis \u00e0 jour le %(last_updated)s.", "Library changes": "Modifications de la biblioth\u00e8que", "Navigation": "Navigation", "Next topic": "Sujet suivant", "Other changes": "Autres modifications", "Overview": "R\u00e9sum\u00e9", "Permalink to this definition": "Lien permanent vers cette d\u00e9finition", "Permalink to this headline": "Lien permanent vers ce titre", "Please activate JavaScript to enable the search\n functionality.": "Veuillez activer le JavaScript pour que la recherche fonctionne.", "Preparing search...": "Pr\u00e9paration de la recherche...", "Previous topic": "Sujet pr\u00e9c\u00e9dent", "Quick search": "Recherche rapide", "Search": "Recherche", "Search Page": "Page de recherche", "Search Results": "R\u00e9sultats de la recherche", "Search finished, found %s page(s) matching the search query.": "La recherche est finie, %s page(s) trouv\u00e9e(s) qui corresponde(nt) \u00e0 la recherche.", "Search within %(docstitle)s": "Recherchez dans %(docstitle)s", "Searching": "Recherche en cours", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Montrer le code source", "Table of Contents": "Table des mati\u00e8res", "This Page": "Cette page", "Welcome! This is": "Bienvenue ! Ceci est", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Votre recherche ne correspond \u00e0 aucun document. Veuillez v\u00e9rifier que les mots sont correctement orthographi\u00e9s et que vous avez s\u00e9lectionn\u00e9 assez de cat\u00e9gories.", "all functions, classes, terms": "toutes les fonctions, classes, termes", "can be huge": "peut \u00eatre \u00e9norme", "last updated": "derni\u00e8re modification", "lists all sections and subsections": "lister l'ensemble des sections et sous-sections", "next chapter": "Chapitre suivant", "previous chapter": "Chapitre pr\u00e9c\u00e9dent", "quick access to all modules": "acc\u00e8s rapide \u00e0 l'ensemble des modules", "search": "rechercher", "search this documentation": "rechercher dans cette documentation", "the documentation for": "la documentation pour"}, "plural_expr": "(n > 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/fr/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/fr/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..2252e8a --- /dev/null +++ b/sphinx/sphinx/locale/fr/LC_MESSAGES/sphinx.po @@ -0,0 +1,3486 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Christophe CHAUVET <christophe.chauvet@gmail.com>, 2017 +# Christophe CHAUVET <christophe.chauvet@gmail.com>, 2013,2015 +# cyrille gachot <cyrille.gachot@smile.fr>, 2019 +# Larlet David <david@larlet.fr>, 2008 +# fgallaire <fgallaire@gmail.com>, 2010 +# fgallaire <fgallaire@gmail.com>, 2010 +# François Poirotte <clicky@erebot.net>, 2016-2017 +# Georg Brandl <g.brandl@gmx.net>, 2014 +# Jean-Daniel Browne <jeandaniel.browne@gmail.com>, 2010 +# Jean-François B. <jfbu@free.fr>, 2017-2019 +# Julien Palard <github@mandark.fr>, 2017 +# Julien Malard <julien.malard@mail.mcgill.ca>, 2019 +# Kim Sylvestre <kim.sylvestre@gmail.com>, 2019 +# Larlet David <david@larlet.fr>, 2008 +# LAURENT Raphaël <laurent@ined.fr>, 2018-2019 +# Lilian Besson <inactive+Naereen@transifex.com>, 2013-2014 +# Nikolaj van Omme <nikolaj.van.omme@gmail.com>, 2014-2015 +# Olivier Bonaventure <bonaventure@acm.org>, 2019 +# Pierre Grépon <pgrepon@yahoo.fr>, 2016 +# Sebastien Douche <sdouche@gmail.com>, 2008 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016,2020 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-22 14:28+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: French (http://www.transifex.com/sphinx-doc/sphinx-1/language/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "Le répertoire de configuration ne contient pas de fichier conf.py (%s)" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "Impossible de trouver le répertoire source (%s)" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "Les répertoires source et destination ne doivent pas être identiques." + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "Sphinx v%s en cours d'exécution" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "Ce projet nécessite au minimum Sphinx v%s et ne peut donc être construit avec cette version." + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "création du répertoire de sortie" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "lors de l'initialisation de l'extension %s :" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "'setup' tel que défini dans conf.py n'est pas un objet Python appelable. Veuillez modifier sa définition pour en faire une fonction appelable. Ceci est nécessaire pour que conf.py se comporte comme une extension Sphinx." + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "Chargement des traductions [%s]... " + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "fait" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "traductions indisponibles" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "chargement de l'environnement pickled" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "échec : %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "Aucun constructeur sélectionné, utilisation du défaut : html" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "a réussi" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "s'est terminée avec des problèmes" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "la compilation %s, %s avertissement." + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "la compilation %s." + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "La classe de nœud %r est déjà enregistrée, ses visiteurs seront écrasés" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "La directive %r est déjà enregistrée, elle sera écrasée" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "Le rôle %r est déjà enregistré, il sera écrasé" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "l’extension %s ne se déclare pas compatible à la lecture en parallèle, on supposera qu’elle ne l'est pas - merci de demander à l'auteur de l’extension de vérifier ce qu’il en est et de le préciser explicitement" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "l’extension %s ne se déclare pas compatible à l’écriture en parallèle, on supposera qu’elle ne l’est pas - merci de demander à l'auteur de l’extension de vérifier ce qu’il en est et de le préciser explicitement" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "serialisation en cours %s" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "impossible d'écraser le dictionnaire de configuration %r ; ignoré (utilisez %r pour modifier les éléments individuellement)" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "nombre non valide %r pour l'option de configuration %r ; ignoré" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "impossible de remplacer le paramètre de configuration %r par un type non-supporté ; ignoré" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "paramètre de configuration %r inconnu dans override ; ignoré" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "Option de configuration inexistante : %s" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "L'option de configuration %r est déjà présente" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "Il y a une erreur de syntaxe dans votre fichier de configuration : %s\n" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "Le fichier de configuration (ou un des modules qu'il utilise) génère un sys.exit()" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "Il y a une erreur de programmation dans votre fichier de configuration : 1%s" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "Le paramètre `source_suffix` s'attend à recevoir une chaîne de caractères, une liste de chaînes de caractères ou un dictionnaire. Mais vous avez fourni un `%r`." + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "Section %s" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "Fig. %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Tableau %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "Code source %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "La valeur saisie `{current}` est erronée, la valeur de configuration `{name}` doit figurer dans {candidates}, " + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "Le paramètre de configuration `{name}' est de type `{current.__name__}'; le type attendu est {permitted}." + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "Le paramètre de configuration `{name}' a pour type `{current.__name__}', tandis que le type par défaut est `{default.__name__}'. " + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "La valeur du paramètre %r est une chaîne de caractères non-ASCII. Cela peut conduire à des erreurs Unicode. Veuillez utiliser une chaîne Unicode, par exemple %r." + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "primary_domain %r non trouvé; ignoré." + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "Depuis la v2.0, Sphinx utilise \"index\" en tant que master_doc par défault. Merci d'ajouter \"master_doc = 'contents'\" dans votre conf.py." + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "Évènement %r déjà présent" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "Nom d'évènement inconnu : %s" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "L'extension %s est exigée par le paramètre needs_extensions, mais n'est pas chargée." + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "Ce projet nécessite que l'extension %s soit au minimum en version %s et par conséquent il ne peut pas être construit avec la version chargée (%s)." + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "Le nom du lexeur Pygments %r est inconnu" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "Analyse lexicale de literal_bloc impossible en \"%s\". Mise en évidence annulée." + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "document non lisible, il sera ignoré" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "La classe Builder %s n'a pas d'attribut « name »" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "Le constructeur %r existe déjà (dans le module %s)" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "Le nom de Constructeur %s n'est ni enregistré ni accessible par point d'entrée" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "domaine %s non enregistré" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "domaine %s déjà enregistré" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "domaine 1%s non encore enregistré" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "La directive %r est déjà enregistrée sur le domaine %s" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "Le rôle %r est déjà enregistré sur le domaine %s" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "L'index %r est déjà enregistré sur le domaine %s" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "Le type de l'objet %r est déjà enregistré" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "Le type %r crossref_type est déjà enregistré" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "L'extension source %r est déjà enregistrée" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "source_parser pour %r est déjà enregistré" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "source_parser pour %s non enregistré" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "Il existe déjà un traducteur pour %r" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "Les kwargs pour add_node() doivent être un tuple de fonction (visite, départ) : %r=%r" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "enumerable_node %r est déjà enregistré" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "Le générateur de rendu mathématique %s est déjà enregistré" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "l'extension %r a été intégrée à Sphinx depuis la version %s ; cette extension est ignorée." + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "Exception initiale :\n" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "L'extension ne peut pas être importée %s" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "l'extension %r n'a pas de fonction setup(); est-elle réellement un module d'extension de Sphinx ?" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "L'extension %s utilisée par ce projet nécessite au moins Sphinx v%s ; il ne peut donc pas être construit avec la version courante." + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "l'extension %r a renvoyé par sa fonction setup() un type d'objet non supporté ; elle devrait renvoyer None ou un dictionnaire de méta-données" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "Le thème %r n'a pas de paramètre \"theme\"" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "Le thème %r n'a pas de paramètre \"inherit\"" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "Aucun thème nommé %r n'est trouvé, hérité de %r" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "paramètre %s.%s n'apparaît dans aucunes des configurations de thème recherchées" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "L'option %r n'est pas supportée pour ce thème" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "le fichier %r dans le répertoire des thèmes n'est pas valide ou ne contient aucun thème" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "sphinx_rtd_theme n'est plus une dépendance stricte depuis la version 1.4.0. Veuillez l'installer manuellement (pip install sphinx_rtd_theme)." + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "Aucun thème nommé %r n'est trouvé (il manque le fichier theme.conf?)" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "image appropriée pour le constructeur %s non trouvée : %s (%s)" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "image appropriée pour le constructeur %s non trouvée : %s" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "construction en cours [mo]:" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "écriture... " + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "tout les %d fichiers po" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "cibles pour les fichiers po %d qui sont spécifiées" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "cibles pour les fichiers po %d qui sont périmées" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "tous les fichiers source" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "le fichier %r saisi en ligne de commande n'est pas présent dans le répertoire source, il sera ignoré" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "le fichier %r saisi en ligne de commande n'existe pas, il sera ignoré" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "%d fichier source saisi en ligne de commande" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "cibles pour les fichiers sources %d qui sont périmées" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "construction [%s]:" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "recherche des fichiers périmés... " + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "%d trouvé" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "aucun résultat" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "environnement de sérialisation" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "vérification de la cohérence" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "aucune cible n'est périmée." + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "mise-à-jour de l'environnement :" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "%s ajouté, %s modifié, %s supprimé" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "lecture des sources... " + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "En attente des processus parallélisés..." + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "documents à écrire : %s" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "document en préparation" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "Entrée de la table des matières dupliquée trouvée: %s" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "copie des images... " + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "impossible de lire le fichier image %r: il sera copié à la place" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "impossible de copier le fichier image %r: %s" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "impossible d'écrire le fichier image %r: %s" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "Pillow non trouvé - copie des fichiers image" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "fichier %s en cours d'écriture..." + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "mimetype inconnu pour %s, il sera ignoré" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "Le fichier d'aperçu se trouve dans %(outdir)s." + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "aucun changement dans la version %s" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "écriture du fichier de résumé..." + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Fonctions de base" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Module" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "copie des fichiers sources..." + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "impossible de lire %r pour la création du changelog" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "Le constructeur factice ne génère aucun fichier." + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "Le fichier ePub se trouve dans %(outdir)s ." + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "la variable de configuration \"epub_language\" (ou \"language\") ne peut pas être vide pour EPUB3" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "le paramètre de configuration \"epub_uid\" ne peut pas être vide pour EPUB3" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "le paramètre de configuration \"epub_title\" (ou \"html_title\") ne peut pas être vide pour EPUB3" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "le paramètre de configuration \"epub_author\" ne peut pas être vide pour EPUB3" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "le paramètre de configuration \"epub_contributor\" ne peut pas être vide pour EPUB3" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "le paramètre de configuration \"epub_description\" ne peut pas être vide pour EPUB3" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "le paramètre de configuration \"epub_publisher\" ne peut pas être vide pour EPUB3" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "le paramètre de configuration \"epub_copyright\" (ou \"copyright\") ne peut pas être vide pour EPUB3" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "le paramètre de configuration \"epub_identifier\" ne peut pas être vide pour EPUB3" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "le paramètre de configuration \"version\" ne peut pas être vide pour EPUB3" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "fichier CSS invalide : %r, le fichier sera ignoré" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "La liste des messages se trouve dans %(outdir)s." + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "cibles pour les modèles de fichiers %d" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "lecture des gabarits... " + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "écriture des catalogues de messages... " + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "Recherchez les éventuelles erreurs dans la sortie ci-dessus ou dans %(outdir)s/output.txt" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "Ancre '%s' non trouvée" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "lien mort: %s (%s)" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "Le manuel se trouve dans %(outdir)s." + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "aucun valeur de configuration \"man_pages\" trouvée; aucun page du manuel ne sera enregistrée" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "enregistrement" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "le paramètre de configuration \"man_pages\" référence un document inconnu %s" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "Les pages HTML sont dans %(outdir)s ." + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "création du document unique" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "enregistrement des fichiers supplémentaires" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "Les fichiers Texinfo se trouvent dans %(outdir)s." + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "\nExécuter 'make' dans ce répertoire pour les soumettre à makeinfo\n(ou 'make info' directement ici pour l'automatiser)." + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "aucun paramètre de configuration \"texinfo_documents\" trouvé: aucun document ne sera écrit" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "La valeur du paramètre \"texinfo_documents\" référence un document inconnu %s" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "traitement en cours %s" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "résolution des références..." + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "(dans" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "copie des fichiers de support TeX" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "erreur lors l'écriture du fichier Makefile : %s" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "Les fichiers texte se trouvent dans %(outdir)s." + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "erreur lors l'écriture du fichier %s : %s" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "Les fichiers XML se trouvent dans %(outdir)s." + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "Le fichier pseudo-XML se trouve dans %(outdir)s." + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "le fichier de configuration de construction est corrompu : %r" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "Les pages HTML sont dans %(outdir)s ." + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "Échec de lecture du fichier de configuration de construction : %r" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "la variable de configuration html_use_opensearch doit maintenant être de type string" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Index général" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "index" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "suivant" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "précédent" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "copie des fichiers téléchargeables... " + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "impossible de copier le fichier téléchargeable %r: %s" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "copie des fichiers statiques... " + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "impossible de copier le fichier static %r" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "copie des fichiers supplémentaires impossible %r" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "Échec d'écriture du fichier de configuration de construction : %r" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "L'index de recherche n'a pas pu être chargé, mais tous les documents ne seront pas construits: l'index sera incomplet." + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "la page %s correspond à deux modèles dans html_sidebars: %r et %r" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "une erreur Unicode est survenue lors du rendu de la page %s. Veuillez vous assurer que toutes les valeurs de configuration comportant des caractères non-ASCII sont des chaînes Unicode." + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "Un erreur est survenue lors de la génération de la page: %s.\nLa raison est: %r" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "le fichier js_file : %r est invalide, il sera ignoré" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "Plusieurs math_renderers sont enregistrés. Mais aucun n'est sélectionné." + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "math_renderer saisi %r inconnu." + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "l'entrée html_extra_path %r n'existe pas" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "l'entrée html_static_path %r n'existe pas" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "le fichier de logo %r n'existe pas" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "le fichier de favicon %r n'existe pas " + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "Documentation %s %s" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "Les fichiers LaTex se trouvent dans %(outdir)s." + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "\nExécuter 'make' dans ce répertoire pour les soumettre à (pdf)latex\n(ou 'make latexpdf' directement ici pour l’automatiser)." + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "aucune valeur de configuration \"latex_documents\" trouvée; aucun document de sera généré" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "La valeur du paramètre \"latex_documents\" référence un document inconnu %s" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Index" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Version" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "Aucune option Babel disponible pour la langue %r" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "copie des fichiers de support TeX" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "copie des fichiers de support TeX..." + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "copie de fichiers supplémentaires" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "Une exception a été levée lors de la génération, démarrage du débogueur :" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "Erreur de balise reST :" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "Erreur d'encodage :" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "Le traceback complet a été sauvé dans %s, au cas où vous souhaiteriez signaler le problème aux développeurs." + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "Erreur de récursion :" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "Cela peut se produire avec des fichiers sources très volumineux ou profondément imbriqués. Vous pouvez soigneusement augmenter la limite de récursivité par défaut de Python de 1000 dans conf.py avec p. ex. :" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "Une exception a été levée :" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "Merci de rapporter ceci s'il s'agit d'une erreur utilisateur, afin d'améliorer le message d'erreur à l'avenir." + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "Un rapport d'erreur peut être déposé dans le système de tickets à <https://github.com/sphinx-doc/sphinx/issues>. Merci !" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "Le numéro du job doit être strictement positif" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "Pour plus d'information : <http://sphinx-doc.org/>." + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "\nCréation de la documentation à partir des fichiers sources.\n\nsphinx-build crée la documentation à partir des fichiers dans SOURCEDIR et la met\ndans OUTPUTDIR. Il prend en compte « conf.py » de SOURCEDIR pour les valeurs de\nconfiguration. L'outil « sphinx-quickstart » peut être utilisé pour créer des fichiers de\ngabarits (template), y-compris « conf.py » .\n\nsphinx-build peut créer la documentation sous différents formats. Un format est\nsélectionné par la spécification du nom du constructeur (builder) sur la ligne de commande ;\npar défault, HTML (constructeur « html »). Les constructeurs peuvent s'acquitter d'autres tâches\nrelatives à la production de la documentation.\n\nPar défaut, tout ce qui n’est pas à jour est construit. On peut restreindre le processus\nà certains fichiers spécifiques en précisant leurs noms.\n" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "chemin des fichiers sources de la documentation" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "chemin du répertoire de sortie" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "une liste de fichiers spécifiques à reconstruire. Sera ignoré si l'option -a est spécifiée." + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "options générales" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "constructeur à utiliser (par defaut: HTML)" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "enregistrement des tous les fichiers (par défaut : enregistrement des nouveaux fichiers et des fichiers qui ont été modifiés)" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "ne pas utiliser un environnement sauvegardé, relire toujours tous les fichiers" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "chemin pour le cache d'environnement et de fichiers doctree (défaut : OUTPUTDIR/.doctrees) " + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "build parallèle avec N processus si possible (la valeur spéciale \"auto\" ajuste N à cpu-count)" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "chemin dans lequel se trouve le fichier de configuration (conf.py). (valeur par défaut : identique à SOURCEDIR)." + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "n'utilisez aucun fichier de configuration, seulement l'option -D" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "outre passer un paramètre du fichier de configuration" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "passer une valeur aux templates HTML" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "définit une balise : seules les blocs \"only\" avec TAG seront inclus" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "mode sourcilleux, signale toute référence manquante" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "options de la console de sortie" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "augmenter la verbosité (peut être répété)" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "aucune sortie vers stdout, seulement les avertissements vers stderr" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "aucune sortie du tout, même pas les avertissements" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "émettre une sortie de couleur (par défaut : auto-détection)" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "ne pas émettre une sortie de couleur (par défaut : auto-détection)" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "écrire les avertissements (et les erreurs) vers le fichier spécifié" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "modifier les avertissements en erreurs" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "montrer le retraçage complet en cas d'exception" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "exécuter Pdb si une exception se produit." + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "fichier %r introuvable" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "impossible de combiner l'option -a avec le nom du fichier" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "impossible d'ouvrir le fichier des avertissements %r : %s" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "l'option -D doit être sous la forme nom=valeur" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "l'option -A doit être sous la forme nom=valeur" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "insère automatiquement les docstrings des modules" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "tester automatiquement des extraits de code dans des blocs doctest" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "lien entre la documentation Sphinx de différents projets" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "entrées \"todo\" pouvant être montrées ou cachées à la compilation" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "vérification de la couverture de la documentation" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "expressions mathématiques, traduites en images PNG ou SVG" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "expressions mathématiques, transmises dans le navigateur à MathJax" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "inclusion conditionnelle du contenu basé sur la valeur de configuration" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "inclure des liens vers le code source documenté des objets Python" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "crée un fichier .nojekyll pour publier le document sur GitHub pages" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "Merci de saisir un chemin valide." + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "Merci de saisir du texte." + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "Merci de saisir un des %s." + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "Merci de saisir 'y' ou 'n'." + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "Merci de saisir l'extension du fichier, par exemple '.rst' ou '.txt'." + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "* Note: caractères non-ASCII en entrée et l'encodage de terminal est inconnu -- UTF-8 ou Latin-1 présupposé" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "Bienvenue dans le kit de démarrage rapide de Sphinx %s." + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "racine de la documentation." + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "Erreur : un fichier conf.py a été trouvé dans le répertoire racine." + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "sphinx-quickstart n'écrasera pas un projet Sphinx existant." + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "Merci de saisir un nouveau répertoire racine (ou tapez juste Entrée)" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "Séparer les répertoires build et source (y/n)" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "Préfixe de nom pour les répertoires static et de gabarits (templates)" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "Nom du projet" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "Nom(s) de l'auteur" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "Version du projet" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "version du projet" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "Langue du projet" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "Extension des fichiers sources" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "Non du fichier principal (sans extension)" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "Erreur : le fichier principal %s est déjà présent dans le répertoire racine du projet." + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "sphinx-quickstart n'écrasera pas les fichiers existants." + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "Merci de saisir un nouveau nom de fichier, ou de renommer le fichier existant et valider avec Entrée" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "Indiquer lesquelles de ces extensions Sphinx doivent être activées :" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "Note : imgmath et mathjax ne peuvent pas être activés en même temps. imgmath a été désactivé." + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "Création du Makefile ? (y/n)" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "Création du fichier de commandes Windows ? (y/n)" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "Fichier en cours de création %s." + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "Le fichier %s existe déjà, il ne sera pas remplacé" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "Terminé : la structure initiale a été créée." + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "\nEngendre les fichiers requis pour un projet Sphinx.\n\nsphinx-quickstart est un outil interactif qui pose des questions à propos de votre projet et génère un répertoire avec la structure complète nécessaire ainsi qu'un Makefile qui peut être utilisé comme alternative à sphinx-build.\n" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "mode silencieux" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "Options de structure" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "si spécifié, les répertoires source et build seront séparés" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "remplace le point dans _templates etc." + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "Options basiques du projet." + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "nom du projet" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "nom de l'auteur" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "version du projet" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "version du projet" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "langue du document" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "préfixe des fichiers source" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "nom du document principal" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "utilisé epub" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "Options d'extension" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "autoriser l'extension %s" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "active l'emploi d'extensions quelconques" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "Création des fichiers Batchfile et Makefile" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "créer un fichier makefile" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "ne pas créer un fichier makefile" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "créer un fichier batch" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "ne pas créer un fichier batch" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "utiliser make-mode pour Makefile/make.bat" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "ne pas utiliser make-mode pour Makefile/make.bat" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "Gabarits de projet" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "répertoire des templates" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "définissez une variable de template" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "vous avez spécifiez \"quit\" , mais \"project\" ou \"author\" ne sont pas spécifiés." + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "Erreur : le chemin spécifié n'est pas un répertoire, ou les fichiers Sphinx existent déjà." + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "sphinx-quickstart peut générer ces fichiers seulement dans un répertoire vide. Merci de spécifier un nouveau répertoire racine." + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "Variable de template invalide : %s" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "Contre-indentation excessive détectée" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "Légende invalide: %s" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "le numéro de ligne spécifiée est en dehors des limites (1-%d):%r" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "Impossible d'utiliser les options \"%s\" et \"%s\" en même temps." + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "Le fichier d'include %r est introuvable ou sa lecture a échouée." + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "L’encodage %r utilisé pour lire le fichier inclus %r semble erroné, veuillez ajouter une option :encoding:" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "L'objet nommé %r est introuvable dans le fichier d'include %r" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "On ne peut pas utiliser \"lineno-match\" avec un \"lines\" non contigu " + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "Spécification de lignes %r : aucune ligne extraite du fichier inclus %r" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Auteur de la section : " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Auteur du module : " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Auteur du code : " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Auteur : " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Paramètres" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Renvoie" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Type renvoyé" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (fonction C)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (membre C)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (macro C)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (type C)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (variable C)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "fonction" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "membre" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "macro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "type" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "variable" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Nouveau dans la version %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Modifié dans la version %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Obsolète depuis la version %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "citation dupliquée %s, une autre instance dans %s" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "La citation [%s] n'est pas référencée" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "Déclaration dupliquée, également définie dans '%s'.\nLa déclaration est '%s'." + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "Paramètres du modèle" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Déclenche" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "%s (C++ %s)" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "classe" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "union" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "concept" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "énumération" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "énumérateur" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "déclaration dupliquée, également définie dans '%s'. Le nom de la déclaration est '%s'." + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (fonction de base)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (méthode %s)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (classe)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (variable globale ou constante)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (attribut %s)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Arguments" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (module)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "méthode" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "données" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "attribut" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "module" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "Libellé dupliqué pour l'équation %s, autre instance dans %s" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "math_eqref_format invalide : %r" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "mot-clé" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "opérateur" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "objet" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "exception" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "état" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "fonction de base" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Variables" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Lève" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (dans le module %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (variable de base)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (dans le module %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (classe de base)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (classe dans %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (méthode %s.%s)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (méthode statique %s.%s)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (méthode statique %s)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (méthode de la classe %s.%s)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (méthode de la classe %s)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (attribut %s.%s)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Index des modules Python" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "modules" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Obsolète" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "méthode de classe" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "méthode statique" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "plusieurs cibles trouvées pour le renvoi %r : %s" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (obsolète)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (directive)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (role)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "directive" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "role" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "variable d'environnement; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "description de l'option malformée, elle doit ressembler à \nMalformed option description %r, should look like \"opt\", \"-opt args\", \"--opt args\", \"/opt args\" or \"+opt args\"" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "terme du glossaire" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "élément de grammaire" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "étiquette de référence" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "variable d'environnement" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "option du programme" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "document" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Index du module" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Page de recherche" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "libellé dupliqué %s, l'autre instance se trouve dans %s" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "le paramètre numfig est désactivé : le paramètre :numref: est ignoré" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "aucun numéro assigné pour %s : %s" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "le lien n'a pas de légende : %s" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "format de numfig_format invalide : %s (%r)" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "format de numfig_format invalide : %s" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "nouvelle configuration" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "la configuration a changé" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "les extensions ont changé" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "version non à jour de l’environnement de construction" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "le répertoire racine a changé" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "Cet environnement est incompatible avec le constructeur sélectionné, veuillez choisir un autre répertoire doctree." + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "Échec du scan des documents dans %s : %r" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "le domaine %r n'est pas enregistré." + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "une table des matières auto-référencée a été trouvée. Elle sera ignorée." + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "Le document n'est inclut dans aucune table des matières de l'arborescence." + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "voir %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "voir aussi %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "type d'index saisie inconnu %r" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Symboles" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "table des matières avec une référence circulaire détectée, elle sera ignorée : %s <- %s" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "la table des matière contient une référence à un document %r qui n'a pas de titre : aucun lien ne sera généré" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "le toctree contient une référence à des documents exclus %r" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "la table des matière contient des références à des documents inexistants %r" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "fichier image %s illisible " + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "fichier image %s illisible : %s" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "le fichier téléchargé n’est pas lisible: %s" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "%s a déjà des numéros de section attribués (toctree numérotés emboîtés ?)" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "Créerait le fichier %s." + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "\nCherche récursivement dans <MODULE_PATH> des modules et packages Python et crée\ndans <OUTPUT_PATH> un fichier reST par package avec des directives automodule.\n\nLes <EXCLUDE_PATTERN>s peuvent être tout pattern de fichiers et/ou de répertoires à exclure.\n\nNote : par défaut ce script n'écrasera pas des fichiers déjà créés." + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "chemin vers le module à documenter" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "patterns de fichier fnmatch-style et/ou répertoire à exclure" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "répertoire où placer toutes les sorties" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "Nombre maximum de sous-modules visibles dans la table des matières (par défaut : 4)" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "remplacer les fichiers existants" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "suivre les liens symboliques. Très utile en combinaison avec collective.recipe.omelette." + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "exécuter le script sans créer les fichiers" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "afficher la documentation de chaque module sur sa propre page" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "inclure le module \"_private\"" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "nom du fichier de table des matières (défaut : modules)" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "ne pas créer de fichier de table des matières" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "ne pas créer de titres pour le module ou package (e.g. lorsque les doctrings en fournissent déjà)" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "mettre la documentation du module avant celle du sous-module" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "interprète les chemins de module selon la spécification PEP-0420 des espaces implicites de noms" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "extension du fichier (par défaut : rst)" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "générer un projet complet avec sphinx-quickstart" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "ajoute module_path à la fin de sys.path, utilisé lorsque --full est présent" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "nom du projet (par défaut : nom du module principal)" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "auteur(s) du projet, utilisé quand l'option -full est précisée" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "version du projet, utilisé quand l'option -full est précisée" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "révision du projet, utilisé lorsque --full est présent, par défaut reprend --doc-version" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "options relatives aux extensions" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "%s n'est pas un répertoire" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "regex invalide %r dans %s" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "Vérification du taux de couverture documentaire dans les sources achevée, voir les résultats dans %(outdir)spython.txt." + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "regex invalide %r dans coverage_c_regexes" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "le module %s ne pas être importé : %s" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "option '+' ou '-' manquante dans %s." + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "'%s' n'est pas une option valide." + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "%s n'est pas une option pyversion valide" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "type TestCode invalide" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "Exécution des doctests des sources achevée, voir les résultats dans %(outdir)s/output.txt." + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "pas de code ou sortie dans le bloc %s en %s : %s" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "code doctest invalide ignoré : %r" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "La directive Graphviz ne peut pas avoir simultanément du contenu et un argument de nom de fichier" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "Fichier externe Graphviz %r non trouvé ou échec de sa lecture" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "Directive « graphviz » sans contenu ignorée." + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "dot n'a pas produit de fichier de sortie : \n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "la commande dot %r ne peut pas être exécutée (nécessaire pour le rendu graphviz). Vérifiez le paramètre graphviz_dot" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "dot a terminé avec une erreur :\n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "graphviz_output_format doit être « png » ou « svg », mais est %r" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "dot code %r: %s" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[graphe: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[graphe]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "convert a terminé avec une erreur :\n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "La commande LaTeX %r (nécessaire pour le rendu des équations mathématiques), ne peut pas être exécutée, vérifier le paramètre imgmath_latex" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "La commande de %s, %r, ne pas être exécuté (nécessaire pour display mathématique), vérifier la configuration imgmath_%s" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "latex de type display %r : %s" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "latex en ligne %r : %s" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "Lien permanent vers cette équation" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "l’inventaire intersphinx a bougé : %s -> %s" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "chargement de l'inventaire intersphinx de %s..." + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "quelques problèmes ont été rencontrés avec quelques uns des inventaires, mais ils disposaient d'alternatives fonctionnelles :" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "échec d'accès à un quelconque inventaire, messages de contexte suivants :" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(disponible dans %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "(dans %s)" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "l’identifiant intersphinx %r n'est pas une chaîne. Il sera ignoré" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[source]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "À faire" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "Entrée TODO trouvée : %s" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<entrée originale>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(l'<<entrée originale>> se trouve dans %s, à la ligne %d)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "entrée originale" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "coloration syntaxique du code du module..." + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[docs]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Code du module" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Code source de %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Vue d'ensemble : code du module" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Modules pour lesquels le code est disponible</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "signature invalide pour auto%s (%r)" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "erreur pendant la mise en forme de l'argument %s:%s" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "attribut manquant %s dans l'objet %s" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "module à importer pour auto-documenter %r est inconnu (essayer de placer une directive \"module\" ou \"currentmodule\" dans le document, ou de donner un nom de module explicite)" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "\"::\" dans le nom d'automodule n'a pas de sens" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "arguments de signature ou annotation de return donnés pour l’automodule %s" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "__all__ devrait être une liste de chaînes, pas %r (dans module %s) -- __all__ sera ignoré" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "attribut mentionné dans :members: ou _all_:module %s est manquant, attribut %s" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "Bases : %s" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "alias de :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "échec d'importation de %s" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "échec de l’analyse du nom %s" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "échec d’importation de l'object %s" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "autosummary engendre les fichiers .rst de manière interne. Mais votre source_suffix ne contient pas .rst. Ignoré." + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "[autosummary] engendrement d’un auto-sommaire pour : %s" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "[autosummary] écriture dans %s" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "\nEngendre du ReStructuredText par les directives autosummary.\n\nsphinx-autogen est une interface à sphinx.ext.autosummary.generate. Il\nengendre les fichiers reStructuredText à partir des directives autosummary\ncontenues dans les fichiers donnés en entrée.\n\nLe format de la directive autosummary est documentée dans le module\nPython \"sphinx.ext.autosummary\" et peut être lu via : ::\n\npydoc sphinx.ext.autosummary\n" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "fichiers sources pour lesquels il faut produire des fichiers rST" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "répertoire où placer toutes les sorties" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "extension par défaut pour les fichiers (par défaut : %(default)s)" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "répertoire des templates spécifiques (par défaut : %(default)s)" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "membres importés du document (défaut : %(default)s)" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "Arguments de mots-clés" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "Exemple" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "Exemples" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "Notes" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "Autres paramètres" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "Références" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "Avertissements" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "Yields" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Attention" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Prudence" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Danger" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Erreur" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Indication" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Important" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Note" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Voir aussi" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Astuce" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Avertissement" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "suite de la page précédente" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "suite sur la page suivante" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "Non alphabétique" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "Chiffres" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "page" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "Table des matières" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Recherche" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Go" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Montrer le code source" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Résumé" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Bienvenue ! Ceci est" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "la documentation pour" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "dernière modification" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Indices et tables :" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Table des matières complète" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "lister l'ensemble des sections et sous-sections" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "rechercher dans cette documentation" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Index général des modules" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "accès rapide à l'ensemble des modules" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "toutes les fonctions, classes, termes" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Index – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Index complet sur une seule page" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Indexer les pages par lettre" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "peut être énorme" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navigation" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Recherchez dans %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "À propos de ces documents" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Copyright" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© Copyright %(copyright)s." + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Mis à jour le %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Créé avec <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Rechercher %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Sujet précédent" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "Chapitre précédent" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Sujet suivant" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "Chapitre suivant" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Veuillez activer le JavaScript pour que la recherche fonctionne." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "rechercher" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Résultats de la recherche" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "Votre recherche ne correspond à aucun document. Veuillez vérifier que les mots sont correctement orthographiés et que vous avez sélectionné assez de catégories." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Recherche rapide" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Cette page" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Changements dans la version %(version)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Liste auto-générée des modifications dans la version %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Modifications de la bibliothèque" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Modifications de l'API C" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Autres modifications" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Lien permanent vers ce titre" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Lien permanent vers cette définition" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Cacher les résultats de la recherche" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "Recherche en cours" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Préparation de la recherche..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "La recherche est finie, %s page(s) trouvée(s) qui corresponde(nt) à la recherche." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", dans" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Agrandir la barre latérale" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Réduire la barre latérale" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Contenu" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "index trouvé avec style ancien à 4 colonnes. Possiblement un bogue d’extensions que vous utilisez : %r" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "La note de bas de page [%s] n'est pas référencée." + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "La note de bas de page [#] n'est pas référencée." + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "incohérences de références de notes de bas de page dans le message traduit. Original : {0}, traduit : {1} " + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "incohérences de références dans le message traduit. Original : {0}, traduit : {1}" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "incohérences de références de citation dans le message traduit. Original : {0}, traduit : {1}" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "ncohérences de références de terme dans le message traduit. Original : {0}, traduit : {1}" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "plus d'une cible trouvée pour la référence %r de type 'any' : pourrait être %s" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "%s:%s référence cible non trouvée : %%(target)s" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "%r référence cible non trouvée %%(target)s" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "impossible d'atteindre l'image distante %s[%d]" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "impossible d'atteindre l'image distante %s[%s]" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "Format d'image inconnu : %s..." + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "le caractère source est indécodable, il sera remplacé par \"?\" : %r" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "ignoré" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "échoué" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "erreur de lecture : %s,%s" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "erreur d'écriture : %s,%s" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "Format de date invalide. Insérez la chaîne de caractères entre des guillemets simples si vous voulez l'afficher telle quelle : %s" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "la table des matières contient des références à des fichiers inexistants %r" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "exception pendant l’évaluation de l'expression de la directive only : %s" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "Le support pour l’évaluation de la syntaxe de Python 2 est dépréciée et sera expurgé dans Sphinx 4.0. Convertissez %s à la syntaxe Python 3." + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "rôle par défaut %s introuvable" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "numfig_format n'est pas défini %s" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "Aucun ID assigné au node %s" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Lien permanent vers ce tableau" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Lien permanent vers ce code" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Lien permanent vers cette image" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "Lien permanent vers cette table des matières" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "impossible d'obtenir la taille de l'image. L'option :scale: est ignorée." + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "toplevel_sectioning %r inconnu pour la classe %r" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr ":maxdepth: trop grand, ignoré." + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "le titre du document n'est pas un unique node de type Text" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "le titre de node rencontré n'est apparenté à aucun parmi section, topic, table, admonition ou sidebar" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Notes de bas de page" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "options tabularcolumns et :widths: simultanément présentes. :widths: sera ignoré." + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "%s est invalide comme unité de dimension. Ignoré." + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "le type inconnu d’entrée d’index %s a été trouvé" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[image: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[image]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "la légende n'est pas à l'intérieur de la figure." + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "type de node non-implémenté : %r" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "type de node inconnu : %r" diff --git a/sphinx/sphinx/locale/he/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/he/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..bda8b13 --- /dev/null +++ b/sphinx/sphinx/locale/he/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "he", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "\u05e2\u05dc \u05de\u05e1\u05de\u05db\u05d9\u05dd \u05d0\u05dc\u05d5", "Automatically generated list of changes in version %(version)s": "\u05d9\u05e6\u05e8 \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05ea \u05e8\u05e9\u05d9\u05de\u05d4 \u05e9\u05dc \u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05d1\u05d2\u05e8\u05e1\u05d4 %(version)s", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "\u05db\u05d5\u05d5\u05e5 \u05e1\u05e8\u05d2\u05dc \u05e6\u05d3", "Complete Table of Contents": "\u05ea\u05d5\u05db\u05df \u05e2\u05e0\u05d9\u05d9\u05e0\u05d9\u05dd \u05de\u05dc\u05d0", "Contents": "\u05ea\u05d5\u05db\u05df", "Copyright": "\u05d6\u05db\u05d5\u05d9\u05d5\u05ea \u05e9\u05de\u05d5\u05e8\u05d5\u05ea", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "\u05d4\u05e8\u05d7\u05d1 \u05e1\u05e8\u05d2\u05dc \u05e6\u05d3", "Full index on one page": "\u05d0\u05d9\u05e0\u05d3\u05e7\u05e1 \u05de\u05dc\u05d0 \u05d1\u05e2\u05de\u05d5\u05d3 \u05d0\u05d7\u05d3", "General Index": "", "Global Module Index": "\u05d0\u05d9\u05e0\u05d3\u05e7\u05e1 \u05de\u05d5\u05d3\u05d5\u05dc\u05d9\u05dd \u05d2\u05dc\u05d5\u05d1\u05dc\u05d9", "Go": "\u05dc\u05da", "Hide Search Matches": "\u05d4\u05e1\u05ea\u05e8 \u05ea\u05d5\u05e6\u05d0\u05d5\u05ea \u05d7\u05d9\u05e4\u05d5\u05e9", "Index": "\u05d0\u05d9\u05e0\u05d3\u05e7\u05e1", "Index – %(key)s": "", "Index pages by letter": "\u05e2\u05de\u05d5\u05d3\u05d9 \u05d0\u05d9\u05e0\u05d3\u05e7\u05e1 \u05dc\u05e4\u05d9 \u05d0\u05d5\u05ea\u05d9\u05d5\u05ea", "Indices and tables:": "", "Last updated on %(last_updated)s.": "\u05e2\u05d5\u05d3\u05db\u05df \u05dc\u05d0\u05d7\u05e8\u05d5\u05e0\u05d4 \u05d1 %(last_updated)s.", "Library changes": "", "Navigation": "\u05e0\u05d9\u05d5\u05d5\u05d8", "Next topic": "\u05e0\u05d5\u05e9\u05d0 \u05d4\u05d1\u05d0", "Other changes": "\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05d0\u05d7\u05e8\u05d9\u05dd", "Overview": "\u05e1\u05e7\u05d9\u05e8\u05d4 \u05db\u05dc\u05dc\u05d9\u05ea", "Permalink to this definition": "\u05e7\u05d9\u05e9\u05d5\u05e8 \u05e7\u05d1\u05d5\u05e2 \u05dc\u05d4\u05d2\u05d3\u05e8\u05d4 \u05d6\u05d5", "Permalink to this headline": "\u05e7\u05d9\u05e9\u05d5\u05e8 \u05e7\u05d1\u05d5\u05e2 \u05dc\u05db\u05d5\u05ea\u05e8\u05ea \u05d6\u05d5", "Please activate JavaScript to enable the search\n functionality.": "\u05d0\u05e0\u05d0 \u05d4\u05e4\u05e2\u05dc \u05d2'\u05d0\u05d5\u05d0\u05e1\u05e7\u05e8\u05d9\u05e4\u05d8 \u05e2\"\u05de \u05dc\u05d0\u05e4\u05e9\u05e8 \u05d0\u05ea\n \u05d4\u05d7\u05d9\u05e4\u05d5\u05e9.", "Preparing search...": "", "Previous topic": "\u05e0\u05d5\u05e9\u05d0 \u05e7\u05d5\u05d3\u05dd", "Quick search": "\u05d7\u05d9\u05e4\u05d5\u05e9 \u05de\u05d4\u05d9\u05e8", "Search": "\u05d7\u05d9\u05e4\u05d5\u05e9", "Search Page": "\u05d3\u05e3 \u05d7\u05d9\u05e4\u05d5\u05e9", "Search Results": "\u05ea\u05d5\u05e6\u05d0\u05d5\u05ea \u05d4\u05d7\u05d9\u05e4\u05d5\u05e9", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "\u05d7\u05e4\u05e9 \u05d1\u05ea\u05d5\u05da %(docstitle)s", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "\u05d4\u05e6\u05d2 \u05de\u05e7\u05d5\u05e8", "Table of Contents": "", "This Page": "\u05e2\u05de\u05d5\u05d3 \u05d6\u05d4", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "\u05db\u05dc \u05d4\u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05ea, \u05d4\u05de\u05d7\u05dc\u05e7\u05d5\u05ea, \u05d4\u05de\u05d5\u05e9\u05d2\u05d9\u05dd", "can be huge": "\u05e2\u05e9\u05d5\u05d9 \u05dc\u05d4\u05d9\u05d5\u05ea \u05e2\u05e6\u05d5\u05dd", "last updated": "", "lists all sections and subsections": "", "next chapter": "\u05e4\u05e8\u05e7 \u05d4\u05d1\u05d0", "previous chapter": "\u05e4\u05e8\u05e7 \u05e7\u05d5\u05d3\u05dd", "quick access to all modules": "\u05d2\u05d9\u05e9\u05d4 \u05de\u05d4\u05d9\u05e8\u05d4 \u05dc\u05db\u05dc \u05d4\u05de\u05d5\u05d3\u05d5\u05dc\u05d9\u05dd", "search": "\u05d7\u05d9\u05e4\u05d5\u05e9", "search this documentation": "\u05d7\u05e4\u05e9 \u05d1\u05ea\u05d9\u05e2\u05d5\u05d3 \u05d6\u05d4", "the documentation for": ""}, "plural_expr": "(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/he/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/he/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..159c600 --- /dev/null +++ b/sphinx/sphinx/locale/he/LC_MESSAGES/sphinx.po @@ -0,0 +1,3466 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# FIRST AUTHOR <EMAIL@ADDRESS>, 2011 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Hebrew (http://www.transifex.com/sphinx-doc/sphinx-1/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.8.0\n" +"Language: he\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" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "רמת המודול" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "(בתוך" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "אינדקס" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "הבא" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "הקודם" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "תיעוד %s %s" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "אינדקס" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "מהדורה" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "מחבר הקטע:" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "מחבר המודול:" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "מחבר הקוד:" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "מחבר:" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "פרמטרים" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "פונקציה" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "מאקרו" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "משתנה" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "חדש בגרסה %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "השתנה בגרסה %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr " לא מומלץ לשימוש מגרסה %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "מחלקה" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "מודול" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "מילת מפתח" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "משתנים" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "משתנה סביבה; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "משתנה סביבה" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "מודול אינדקס" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "דף חיפוש" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "ראה %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "ראה גם %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[מקור]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "לעשות" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "הטקסט המקורי" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[תיעוד]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>הראה קוד מקור ל %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>כל המודולים שיש להם קוד זמין</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "תשומת לב" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "זהירות" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "סכנה" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "שגיאה" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "רמז" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "חשוב" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "הערה" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "ראה גם" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "טיפ" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "אזהרה" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "המשך מעמוד קודם" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "חיפוש" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "לך" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "הצג מקור" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "סקירה כללית" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "תוכן עניינים מלא" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "חפש בתיעוד זה" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "אינדקס מודולים גלובלי" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "גישה מהירה לכל המודולים" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "כל הפונקציות, המחלקות, המושגים" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "אינדקס מלא בעמוד אחד" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "עמודי אינדקס לפי אותיות" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "עשוי להיות עצום" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "ניווט" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "חפש בתוך %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "על מסמכים אלו" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "זכויות שמורות" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "עודכן לאחרונה ב %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "חפש %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "נושא קודם" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "פרק קודם" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "נושא הבא" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "פרק הבא" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "אנא הפעל ג'אואסקריפט ע\"מ לאפשר את\n החיפוש." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "חיפוש" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "תוצאות החיפוש" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "חיפוש מהיר" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "עמוד זה" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "יצר אוטומטית רשימה של שינויים בגרסה %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "שינויים אחרים" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "קישור קבוע לכותרת זו" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "קישור קבוע להגדרה זו" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "הסתר תוצאות חיפוש" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "הרחב סרגל צד" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "כווץ סרגל צד" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "תוכן" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "הערות שוליים" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[תמונה]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/hi/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/hi/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..43c4e21 --- /dev/null +++ b/sphinx/sphinx/locale/hi/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "hi", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">\u0938\u0930\u094d\u0935\u093e\u0927\u093f\u0915\u093e\u0930</a> %(copyright)s.", "© Copyright %(copyright)s.": "© \u0938\u0930\u094d\u0935\u093e\u0927\u093f\u0915\u093e\u0930 %(copyright)s.", ", in ": ", \u092e\u0947\u0902 ", "About these documents": "\u0907\u0928 \u0932\u0947\u0916\u092a\u0924\u094d\u0930\u094b\u0902 \u0915\u0947 \u092c\u093e\u0930\u0947 \u092e\u0947\u0902", "Automatically generated list of changes in version %(version)s": "\u0938\u0902\u0938\u094d\u0915\u0930\u0923 %(version)s \u092e\u0947\u0902 \u0938\u094d\u0935\u0924\u0903 \u0930\u091a\u093f\u0924 \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928\u094b\u0902 \u0915\u0940 \u0938\u0942\u091a\u0940", "C API changes": "\u0938\u0940 \u0910.\u092a\u0940.\u0906\u0908. \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928", "Changes in Version %(version)s — %(docstitle)s": "\u092a\u0930\u093f\u0935\u0930\u094d\u0924\u093f\u0924 \u0938\u0902\u0938\u094d\u0915\u0930\u0923 %(version)s — %(docstitle)s", "Collapse sidebar": "\u0915\u093f\u0928\u093e\u0930\u0947 \u0915\u093e \u0938\u094d\u0925\u093e\u0928 \u0918\u091f\u093e\u090f\u0902", "Complete Table of Contents": "\u0935\u093f\u0938\u094d\u0924\u0943\u0924 \u0935\u093f\u0937\u092f-\u0938\u0942\u091a\u0940", "Contents": "\u0935\u093f\u0937\u092f \u0938\u093e\u092e\u093f\u0917\u094d\u0930\u0940", "Copyright": "\u0938\u0930\u094d\u0935\u093e\u0927\u093f\u0915\u093e\u0930", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s \u0938\u0947 \u0928\u093f\u0930\u094d\u092e\u093f\u0924.", "Expand sidebar": "\u0915\u093f\u0928\u093e\u0930\u0947 \u0915\u093e \u0938\u094d\u0925\u093e\u0928 \u092c\u095d\u093e\u090f\u0902", "Full index on one page": "\u090f\u0915 \u092a\u0943\u0937\u094d\u0920 \u092a\u0930 \u092a\u0942\u0930\u0940 \u0905\u0928\u0941\u0915\u094d\u0930\u092e\u0923\u093f\u0915\u093e", "General Index": "\u0938\u093e\u092e\u093e\u0928\u094d\u092f \u0905\u0928\u0941\u0915\u094d\u0930\u092e\u093e\u0923\u093f\u0915\u093e", "Global Module Index": "\u0938\u093e\u0930\u094d\u0935\u092d\u094c\u092e\u093f\u0915 \u092a\u094d\u0930\u092d\u093e\u0917 \u0938\u0942\u091a\u0940", "Go": "\u091a\u0932\u093f\u090f", "Hide Search Matches": "\u0916\u094b\u091c\u0947 \u0917\u090f \u091c\u094b\u095c\u0947 \u091b\u093f\u092a\u093e\u090f\u0902", "Index": "\u0905\u0928\u0941\u0915\u094d\u0930\u092e\u0923\u093f\u0915\u093e", "Index – %(key)s": "\u0905\u0928\u0941\u0915\u094d\u0930\u092e\u0923\u093f\u0915\u093e – %(key)s", "Index pages by letter": "\u0905\u0915\u094d\u0937\u0930 \u0926\u094d\u0935\u093e\u0930\u093e \u0905\u0928\u0941\u0915\u094d\u0930\u092e\u093f\u0924 \u092a\u0943\u0937\u094d\u0920", "Indices and tables:": "\u0938\u0942\u091a\u093f\u092f\u093e\u0901 \u0914\u0930 \u0938\u093e\u0930\u0923\u093f\u092f\u093e\u0901:", "Last updated on %(last_updated)s.": "\u0905\u0902\u0924\u093f\u092e \u092c\u093e\u0930 \u0938\u092e\u094d\u092a\u093e\u0926\u093f\u0924 %(last_updated)s.", "Library changes": "\u092a\u0941\u0938\u094d\u0924\u0915\u093e\u0932\u092f \u092e\u0947\u0902 \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928", "Navigation": "\u0938\u0902\u091a\u093e\u0932\u0928", "Next topic": "\u0905\u0917\u0932\u093e \u092a\u094d\u0930\u0915\u0930\u0923", "Other changes": "\u0905\u0928\u094d\u092f \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928", "Overview": "\u0938\u093f\u0902\u0939\u093e\u0935\u0932\u094b\u0915\u0928", "Permalink to this definition": "\u0907\u0938 \u092a\u0930\u093f\u092d\u093e\u0937\u093e \u0915\u0940 \u0938\u094d\u0925\u093e\u092f\u0940 \u0915\u095c\u0940", "Permalink to this headline": "\u0907\u0938 \u0936\u0940\u0930\u094d\u0937-\u092a\u0902\u0915\u094d\u0924\u093f \u0915\u0940 \u0938\u094d\u0925\u093e\u092f\u0940 \u0915\u095c\u0940", "Please activate JavaScript to enable the search\n functionality.": "\u0916\u094b\u091c \u0915\u093e\u0930\u094d\u092f \u0915\u0947 \u0932\u093f\u090f \u091c\u093e\u0935\u093e \u0938\u094d\u0915\u094d\u0930\u093f\u092a\u094d\u091f \u0915\u093e \u0939\u094b\u0928\u093e \u0906\u0935\u0936\u094d\u092f\u0915 \u0939\u0948. \u0915\u0943\u092a\u092f\u093e \u091c\u093e\u0935\u093e \u0938\u094d\u0915\u094d\u0930\u093f\u092a\u094d\u091f \u0915\u094b \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902.", "Preparing search...": "\u0916\u094b\u091c \u0915\u0940 \u0924\u0948\u092f\u093e\u0930\u0940", "Previous topic": "\u092a\u093f\u091b\u0932\u093e \u092a\u094d\u0930\u0915\u0930\u0923", "Quick search": "\u0924\u094d\u0935\u0930\u093f\u0924 \u0916\u094b\u091c", "Search": "\u0916\u094b\u091c", "Search Page": "\u0916\u094b\u091c \u092a\u0943\u0937\u094d\u0920", "Search Results": "\u0916\u094b\u091c \u092a\u0930\u0940\u0923\u093e\u092e ", "Search finished, found %s page(s) matching the search query.": "\u0916\u094b\u091c \u092a\u0942\u0930\u094d\u0923, \u0916\u094b\u091c \u0935\u093f\u0937\u092f \u0915\u0947 \u0905\u0928\u0941\u0915\u0942\u0932 %s \u092a\u0943\u0937\u094d\u0920 \u092e\u093f\u0932\u093e (\u092e\u093f\u0932\u0947).", "Search within %(docstitle)s": "%(docstitle)s \u092e\u0947\u0902 \u0916\u094b\u091c\u0947\u0902", "Searching": "\u0916\u094b\u091c \u091c\u093e\u0930\u0940", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "\u0938\u094d\u0930\u094b\u0924 \u0926\u093f\u0916\u093e\u090f\u0901", "Table of Contents": "\u0935\u093f\u0937\u092f-\u0938\u0942\u091a\u0940", "This Page": "\u092f\u0939 \u092a\u0943\u0937\u094d\u0920 ", "Welcome! This is": "\u0928\u092e\u0938\u094d\u0924\u0947! \u092f\u0939 \u0939\u0948", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u0906\u092a\u0915\u0947 \u0916\u094b\u091c \u092a\u0930\u093f\u0923\u093e\u092e\u094b\u0902 \u092e\u0947\u0902 \u0915\u094b\u0908 \u092a\u094d\u0930\u0932\u0947\u0916 \u0928\u0939\u0940\u0902 \u092e\u093f\u0932\u093e. \u0915\u0943\u092a\u092f\u093e \u0938\u0941\u0928\u093f\u0936\u094d\u091a\u093f\u0924 \u0915\u0930\u0947\u0902 \u0915\u093f \u0938\u092d\u0940 \u0936\u092c\u094d\u0926\u094b\u0902 \u0915\u0940 \u0935\u0930\u094d\u0924\u0928\u0940 \u0936\u0941\u0926\u094d\u0927 \u0939\u0948 \u0914\u0930 \u0906\u092a\u0928\u0947 \u092f\u0925\u0947\u0937\u094d\u091f \u0936\u094d\u0930\u0947\u0923\u093f\u092f\u093e\u0902 \u091a\u0941\u0928\u0940 \u0939\u0948\u0902.", "all functions, classes, terms": "\u0938\u092d\u0940 \u0915\u093e\u0930\u094d\u092f\u092f\u0941\u0915\u094d\u0924\u093f\u092f\u093e\u0902, \u0935\u0930\u094d\u0917, \u0936\u092c\u094d\u0926", "can be huge": "\u092c\u0943\u0939\u0926\u093e\u0915\u093e\u0930 \u0939\u094b \u0938\u0915\u0924\u093e \u0939\u0948", "last updated": "\u0905\u0902\u0924\u093f\u092e \u092a\u0930\u093f\u0935\u0930\u094d\u0927\u0928", "lists all sections and subsections": "\u0938\u092d\u0940 \u0905\u0928\u0941\u092d\u093e\u0917\u094b\u0902 \u090f\u0935\u0902 \u0909\u092a-\u0905\u0928\u0941\u092d\u093e\u0917\u094b\u0902 \u0915\u0940 \u0938\u0942\u091a\u0940", "next chapter": "\u0905\u0917\u0932\u093e \u0905\u0927\u094d\u092f\u093e\u092f", "previous chapter": "\u092a\u093f\u091b\u0932\u093e \u0905\u0927\u094d\u092f\u093e\u092f", "quick access to all modules": "\u0938\u092d\u0940 \u092a\u094d\u0930\u092d\u093e\u0917 \u0924\u0915 \u0924\u0941\u0930\u0902\u0924 \u092a\u0939\u0941\u0901\u091a", "search": "\u0916\u094b\u091c", "search this documentation": "\u0907\u0938 \u0906\u0932\u0947\u0916 \u092e\u0947\u0902 \u0916\u094b\u091c\u0947\u0902", "the documentation for": "\u0906\u0932\u0947\u0916 \u0935\u093f\u0937\u092f"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/hi/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/hi/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..6409fb8 --- /dev/null +++ b/sphinx/sphinx/locale/hi/LC_MESSAGES/sphinx.po @@ -0,0 +1,3469 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Ajay Singh <ajaysajay@gmail.com>, 2019 +# Purnank H. Ghumalia <me@purnank.in>, 2015-2016 +# Sumanjali Damarla <damarlasumanjali@gmail.com>, 2020 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2019 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Hindi (http://www.transifex.com/sphinx-doc/sphinx-1/language/hi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: hi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "विन्यास निर्देशिका में कोन्फ़.पाय #conf.py# फाइल (%s) नहीं है " + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "स्रोत निर्देशिका (%s) नहीं मिली" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "स्रोत निर्देशिका और गंतव्य निर्देशिका समरूप नहीं हो सकतीं" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "स्फिंक्स %s संस्करण चल रहा है" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "सुरक्षा कारण वर्ष macOS तथा python 3.8 और अधिक, के साथ समानांतर कार्य शैली कि सुविधा उपलब्ध नहीं हैं | अधिक जानकारी के लिए, कृपया \"https://github.com/sphinx-doc/sphinx/issues/6803\" पढ़े |" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "इस परियोजना में स्फिंक्स का कम से कम %s संस्करण चाहिए और इसलिए इस संस्करण से बनाना संभव नहीं है." + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "परिणाम निर्देशिका बनाई जा रही है" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "%s आयाम को स्थापित करते हुए:" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "'स्थापना' को जैसा कि अभी कोन्फ़.पाई में परिभाषित किया गया है, पाइथन से निर्देशित नहीं है. कृपया इसकी परिभाषा में परिवर्तन करके इसे निर्देश योग्य कर्म बनाएं. कोन्फ़.पाई को स्फिंक्स के आयाम की तरह व्यवहार के लिए इसकी आवश्कयता है." + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "[%s] अनुवाद पढ़ा जा रहा है..." + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "संपन्न" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "अंतर्निर्मित संदेशों में उपलब्ध नहीं है" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "रक्षित स्थिति को लागू किया जा रहा है" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "असफल: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "किसी निर्माता को नहीं चुना गया, मानक उपयोग: एच्.टी.ऍम.एल." + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "सफल हुआ" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "समस्याओं के साथ समाप्त हुआ" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "%s निर्माण, चेतावनी %s (चेतावनी को गलती माने)| " + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "%s सम्पूर्ण, %s चेतावनी." + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "%s निर्मित." + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "निर्देशक कक्षा #node class# %r पहले से पंजीकृत है, इसके अभ्यागत निरस्त हो जाएंगे " + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "निर्देश %r पहले से पंजीकृत है, यह निरस्त हो जाएगा" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "भूमिका %r पहले से पंजीकृत है, यह निरस्त हो जाएगी" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "%s आयाम यह घोषित नहीं करता कि यह समानांतर पाठन के लिए सुरक्षित है. यह मानते हुए की ऐसा नहीं है - कृपया आयाम के लेखक को जांच करने और स्पष्ट व्यक्त करने के लिए कहें." + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "समानांतर पठन के लिए यह %s विस्तार अथवा आयाम सुरक्षित नहीं है | " + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "%s आयाम यह घोषित नहीं करता कि यह समानांतर लेखन के लिए सुरक्षित है. यह मानते हुए की ऐसा नहीं है - कृपया आयाम के लेखक को जांच करने और स्पष्ट व्यक्त करने के लिए कहें." + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "समानांतर लेखन के लिए %s विस्तार अथवा आयाम सुरक्षित नहीं है | " + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "%s पर काम कर रहे हैं" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "शब्दकोष विन्यास मान %r की उल्लंघन नहीं किया जा सकता, अनदेखा किया गया (प्रत्येक अवयव का मान रखने के लिए %r का उपयोग करें)" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "विन्यास मान %r के लिए अमान्य संख्या %r, अनदेखा किया गया" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "असमर्थित प्रकार के साथ विन्यास मान %r का उल्लंघन नहीं किया जा सकता, अनदेखा किया गया" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "आरोहण में अज्ञात विन्यास मान %r, अनदेखा किया गया" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "ऐसा कोई विन्यास मान नहीं है: %s" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "विन्यास मान %r पहले से विद्यमान है" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "आपकी विन्यास फाइल में रचनाक्रम की त्रुटि है: %s\n" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "विन्यास फाइल (अथवा इसके द्वारा आयातित प्रभागों) द्वारा sys.exit() का आह्वान किया गया" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "विन्यास फाइल में प्रोग्राम के योग्य त्रुटि है:\n\n%s" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "विन्यास मान `source_suffix' में अक्षर-समूह, अक्षर-समूहों की सूची, अथवा कोष की अनुमति है. लेकिन `%r' दिया गया है." + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "भाग %s" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "चित्र %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "सारणी %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "सूची %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "`{name}` विन्यास मान, {candidates} में से एक होना चाहिए, परन्तु `{current}` दिया गया है." + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "विन्यास मान `{name}' का प्रकार `{current.__name__}' है; अपेक्षित {permitted}." + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "विन्यास मान `{name}' का प्रकार `{current.__name__}' है; मानक `{default.__name__}' का प्रयोग किया गया." + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "विन्यास मान %r एक बिना-असकी #non-ASCII# अक्षरों के अक्षर-समूह है; यह यूनिकोड त्रुटियां करवा सकता है. कृपया यूनिकोड अक्षर-समूह का प्रयोग करें, जैसे कि %r." + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "primary_domain %r नहीं मिला, अनदेखा किया गया." + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "संस्करण 2.0 से, स्फिंक्स इंडेक्स #\"index\"# का मास्टर-डॉक् #master_doc# की तरह स्वतः उपयोग करता है. कृपया अपनी conf.py में \"master_doc = 'contents'\" जोड़ें." + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "%r घटना पहले से विद्यमान है" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "अज्ञात घटना नाम: %s" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "आयाम %s की needs_extensions मान में आवश्कता है, पर यह नहीं चढ़ाया गया है." + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "इस परियोजना में आयाम %s का कम से कम %s संस्करण चाहिए इसलिए उपलब्ध संस्करण (%s) से बनाना संभव नहीं है." + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "पिगमेंटस लेक्सर नाम %r अज्ञात है" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "literal_block का \"%s\" नियमन नहीं हो सका. विशेषअंकन छोड़ दिया गया." + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "लेखपत्र पठनीय नहीं है. उपेक्षित." + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "निर्माण वर्ग %s का कोई \"नाम\" भाव नहीं है" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "निर्माता %r पहले से (%s प्रभाग में) उपलब्ध है" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "निर्माता नाम %s पंजीकृत नहीं है अथवा प्रवेश स्थान पर उपलब्ध नहीं है." + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "निर्माता नाम %s पंजीकृत नहीं है" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "अधिकारक्षेत्र %s पहले से पंजीकृत है" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "अधिकारक्षेत्र %s अभी पंजीकृत नहीं है" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "%r निर्देश पहले से अधिकार-क्षेत्र %s में पंजीकृत है, " + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "%r भूमिका पहले से अधिकार-क्षेत्र %s में पंजीकृत है, " + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "%r अनुक्रमणिका पहले से अधिकार-क्षेत्र %s में पंजीकृत है" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "%r object_type पहले से पंजीकृत है" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "%r crossref_type पहले से पंजीकृत है" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "source_suffix %r पहले से पंजीकृत है" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "%r का source_parser पहले से पंजीकृत है" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "%s का स्रोत व्याख्याता पंजीकृत नहीं है" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "%r के लिए अनुवादक पहले से विद्यमान है" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "add_node() के kwargs एक (visit, depart) फंक्शन टपल #function tuple# होने चाहिए: %r=%r" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "enumerable_node %r पहले से पंजीकृत है" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "गणित प्रस्तोता %s पहले से पंजीकृत है" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "%r आयाम को %sसंस्करण से स्फिंक्स में सम्मिलित किया जा चुका है; आयाम की उपेक्षा की गयी." + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "मौलिक अपवाद:\n" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "%s आयाम का आयात नहीं किया जा सका" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "आयाम %r में कोई सेटअप #setup()# कारक नहीं है; क्या यह वास्तव में स्फिंक्स का परिवर्धक प्रभाग है?" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "इस परियोजना में प्रयुक्त %s परिवर्धक को स्फिंक्स का कम से कम %s संस्करण चाहिए; इसलिए इस संस्करण से बनाना संभव नहीं है." + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "परिवर्धक %r के सेटअप() कर्म से एक असहाय वस्तु वापस मिली है; इसको 'कुछ नहीं' अथवा मेटाडाटा कोश भेजना चाहिए था" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "पाइथन अभिवृद्धि प्रस्ताव; पी.ई.पी. %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "रुपविन्यास %r में कोई \"रूप\" मान नहीं है" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "रुपविन्यास %r में कोई अनुगत मान नहीं है" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "%r नाम से कोई रूप नहीं मिला, %r द्वारा अनुगत" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "विन्यास मान %s.%s खोजे गए किसी भी रूप विन्यास में नहीं दिखा" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "विन्यास का असमर्थित रूप विकल्प %r दिया गया" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "रुपविन्यास के पथ में फाइल %r कोई प्रमाणिक ज़िप फाइल नहीं है या इसमें कोई रुपविन्यास नहीं सहेजा गया है" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "संस्करण 1.4.0 से sphinx_rtd_theme पर कोई दृढ निर्भरता नहीं है. कृपया इसे स्वयं स्थापित करें. (pip install sphinx_rtd_theme)" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "%r नामक कोई रूप विन्यास नहीं मिला (theme.conf अनुपस्थित?)" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "%s निर्माता के लिए योग्य चित्र नहीं मिला: %s.(%s)" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "%s निर्माता के लिए योग्य चित्र नहीं मिला: %s" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "निर्माणाधीन [mo]: " + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "परिणाम लिखा जा रहा है..." + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "सभी %d पी.ओ. फाइलें" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "निर्दिष्ट %d पी.ओ. फाइलों के लक्ष्य" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "%d पी.ओ. फाइलों के लक्ष्य कालातीत है" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "सभी स्रोत फाइलें" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "आदेश स्थान में दी गयी फाइल %r स्रोत निर्देशिका में नहीं है, उपेक्षा की जा रही है" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "आदेश स्थान में दी गयी फाइल %r का नहीं है, उपेक्षा कर दी गई" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "%d स्रोत फाइलें आदेश स्थान में दी " + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "%d फाइलों के लक्ष्य कालातीत है" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "निर्माणाधीन [%s]: " + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "अप्रचलित फाइलों को चिन्हित किया जा रहा है..." + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "%d मिला" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "एक भी नहीं मिला" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "स्थिति को परिरक्षित किया जा रहा है" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "संगतता की जांच की जा रही है" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "कोई प्रयोजन कालातीत नहीं है" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "स्थिति का नवीनीकरण किया जा रहा है" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "%s जोड़ा गया, %s बदला गया, %s हटाया गया" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "स्रोतों को पढ़ा जा रहा है..." + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "कर्मियों की प्रतीक्षा हो रही है" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "लेखन के लिए शेष लेखपत्र: %s" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "लेखपत्र बनाए जा रहे हैं" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "विषय-सूची प्रविष्टि की प्रतिलिपि पायी गई: %s" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "चित्रों की प्रतिलिपि बनाई जा रही है..." + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "चित्रलेख फाइल %r नहीं पढ़ा जा सका: इसकी प्रतिलिपि बनाई जा रही है" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "चित्रलेख फाइल %r की प्रतिलिपि नहीं की जा सकी:%s" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "चित्रलेख फाइल %r नहीं लिखा जा सका:%s" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "पिलो नहीं मिला - चित्र फाइलों की प्रतिलिपि बनाई जा रही है" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "%s फाइल को लिखा जा रहा है..." + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "%s के लिए अज्ञात लेख प्रकार, छोड़ा गया" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "संक्षिप्त विवरण फाइल %(outdir)s में है." + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "%s संस्करण में कोई परिवर्तन नहीं हैं." + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "सार फाइल को लिखा जा रहा है..." + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "अंतर्निर्मित" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "प्रभाग स्तर" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "स्रोत फाइलों की प्रतिलिपि बनाई जा रही है..." + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "परिवर्तन सूची बनाने के लिए %r को नहीं पढ़ा जा सका" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "मूक निर्माता से किसी फाइलों की उत्पत्ति नहीं होती." + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "ई-पब फाइल %(outdir)s में है." + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "ई-पब3 के लिए विन्यास मान \"epub_language\" (अथवा \"language\") खाली नहीं होना चाहिए" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "ई-पब3 के लिए विन्यास मान \"epub_uid\" एक्स.एम्.एल. नाम होना चाहिए" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "ई-पब3 के लिए विन्यास मान \"epub_title\" (अथवा \"html_title\") खाली नहीं होना चाहिए" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "ई-पब3 के लिए विन्यास मान \"epub_author\" खाली नहीं होना चाहिए" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "ई-पब3 के लिए विन्यास मान \"epub_contributor\" खाली नहीं होना चाहिए" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "ई-पब3 के लिए विन्यास मान \"epub_description\" खाली नहीं होना चाहिए" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "ई-पब3 के लिए विन्यास मान \"epub_publisher\" खाली नहीं होना चाहिए" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "ई-पब3 के लिए विन्यास मान \"epub_copyright\" (अथवा \"copyright\") खाली नहीं होना चाहिए" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "ई-पब3 के लिए विन्यास मान \"epub_identifier\" खाली नहीं होना चाहिए" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "ई-पब3 के लिए विन्यास मान \"version\" खाली नहीं होना चाहिए" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "अमान्य css_file: %r, उपेक्षित" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "सन्देश सूचीपत्र %(outdir)s में हैं." + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "%d नमूना फाइलों के लक्ष्य" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "नमूनों को पढ़ा जा रहा है..." + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "सन्देश सूचीपत्रों को लिखा जा रहा है..." + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "उपरोक्त परिणाम में अथवा %(outdir)s /output.txt में त्रुटियाँ ढूँढने का प्रयास " + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "लक्ष्य '%s' नहीं मिला" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "खंडित कड़ी: %s (%s)" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "पुस्तिका पृष्ठ %(outdir)sमें हैं." + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "कोई \"man_pages\" विन्यास मान नहीं मिला; कोई नियमावली पृष्ठ नहीं लिखे जाएंगे" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "लिखा जा रहा है" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "\"man_pages\" विन्यास मान अज्ञात लेखपत्र %s का सन्दर्भ है" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "एच.टी.एम्.एल. पृष्ठ %(outdir)sमें है." + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "एकल लेखपत्र संकलन किया जा रहा है" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "अतिरिक्त फाइलों को लिखा जा रहा है" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "टेक्सइन्फो पृष्ठ %(outdir)sमें हैं." + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "\nइन्हें मेकइन्फो से चलाने के लिए उस निर्देशिका में 'मेक' आदेश चलायें\n(ऐसा स्वचालित रूप से करने के लिए यहाँ 'मेक इन्फो' आदेश का उपयोग करें)" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "कोई \"texinfo_documents\" विन्यास मान नहीं मिला; कोई लेखपत्र नहीं लिखे जाएंगे" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "\"texinfo_documents\" विन्यास मान अज्ञात लेखपत्र %s का सन्दर्भ है" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "%s की प्रक्रिया जारी" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "सन्दर्भों का विश्लेषण किया जा रहा है..." + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (में" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "टेक्सइन्फो सहायक फाइलों की प्रतिलिपि की जा रही है..." + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "मेकफाइल लिखने में त्रुटि: %s" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "पाठ फाइल %(outdir)s में हैं." + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "%s फाइल लिखने में व्यवधान: %s" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "एक्स.एम्.एल. लेखपत्र %(outdir)s में हैं." + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "छद्म-एक्स.एम्.एल. लेखपत्र %(outdir)s में हैं." + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "निर्माण सूचनापत्र फाइल खंडित है: %r" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "एच.टी.एम्.एल. पृष्ठ %(outdir)sमें हैं." + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "निर्माण सूचनापत्र फाइल को नहीं पढ़ा जा सका: %r" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "html_use_opensearch विन्यास मान अब वर्णाक्षरों में होना आवश्यक है" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "सामान्य अनुक्रमाणिका" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "अनुक्रमणिका" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "आगामी" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "पूर्ववर्ती" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "अनुक्रमाणिका निर्मित की जा रही है" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "अतिरिक्त पृष्ठ लिखे जा रहे हैं" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "उतारी गई फाइलों की प्रतिलिपि बनाई जा रही है..." + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "उतारी गई फाइलों %r की प्रतिलिपि नहीं की जा सकी: %s" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "अपरिवर्ती फाइलों की प्रतिलिपि बनाई जा रही है..." + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "स्थैतिक फाइल %r की प्रतिलिपि नहीं की जा सकी" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "अतिरिक्त फाइलों की प्रतिलिपियां बनाये जा रहे है| " + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "अतिरिक्त फाइल %r की प्रतिलिपि नहीं की जा सकी" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "निर्माण फाइल को नहीं लिखा जा सका: %r" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "खोज अनुक्रमाणिका नहीं चढाई जा सकी, लेकिन सभी लेखपत्र नहीं बनाए जाएंगे: अनुक्रमणिका अपूर्ण रहेगी." + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "पृष्ठ %s html_sidebars में दो आकृतियों से मिलता है: %r %r" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "पृष्ठ %s की प्रस्तुति करते समय यूनिकोड त्रुटि हुई. कृपया यह सुनिश्चित कर लें कि सभी नॉन-असकी #non-ASCII# विहित विन्यास मान यूनिकोड अक्षरों में हैं." + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "पृष्ठ %s की प्रस्तुति करते समय एक त्रुटि हुई.\nकारण: %r" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "विषयवस्तुओं का भंडार बनाया जा रहा है" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "%s में खोज अनुक्रमाणिका भंडार बनाया जा रहा है" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "अमान्य js_file: %r, उपेक्षित" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "कई math_renderers पंजीकृत हैं. लेकिन कोई math_renderers नहीं चुना गया है." + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "अज्ञात math_renderer %r दिया गया." + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "html_extra_path प्रविष्टि %r का अस्तित्व नहीं है" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "html_extra_path का प्रविष्टि %r outdir में है| " + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "html_static_path प्रविष्टि %r का अस्तित्व नहीं है" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "html_static_path का प्रविष्टि %r outdir में है| " + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "प्रतीकचिन्ह फाइल %r का अस्तित्व नहीं है" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "इष्ट चिन्ह फाइल %r का अस्तित्व नहीं है" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s दिग्दर्शिका" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "लाटेक्स लेखपत्र %(outdir)s में हैं." + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "\nइन्हें (pdf)latex से चलाने के लिए उस निर्देशिका में 'मेक' आदेश चलायें\n(ऐसा स्वचालित रूप से करने के लिए यहाँ 'make latexpdf' आदेश का उपयोग करें)" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "कोई \"latex_documents\" विन्यास मान नहीं मिला; कोई नहीं लिखे जाएंगे" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "\"latex_documents\" विन्यास मान अज्ञात लेखपत्र %s का सन्दर्भ है" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "अनुक्रमणिका" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "आवृत्ति" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "%r भाषा के लिए कोई बाबेल विकल्प नहीं " + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "टेक्स सहायक फाइलों की प्रतिलिपि की जा रही है..." + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "टेक्स सहायक फाइलों की प्रतिलिपि की जा रही है..." + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "अतिरिक्त फाइलों की प्रतिकृति बनाई जा रही है" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "%r में कोई \"रूप\" मान नहीं है" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "%r में कोई \"%s \" मान नहीं है" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "निर्माण के दौरान अपवाद घटित हुआ है, दोष-मुक्तक चालू किया जा रहा " + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "कार्य खंडित " + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "रेस्ट सुसज्जा त्रुटि:" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "कूटलेखन त्रुटि:" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "यदि आप इस विषय को कूटलिपिकारों के संज्ञान में लाना चाहते है तो पिछला पूरा विवरण %s में सहेज दिया गया है" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "पुनरावर्तन त्रुटि:" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "ऐसा बहुत बड़ी अथवा गहरे स्तर तक गई स्रोत फाइलों से संभव है. आप स्वतः मानक पाइथन पुनरावर्तन सीमा 1000 को conf.py में बाधा सकते हैं. जैसे कि:" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "अपवाद घटित:" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "यदि यह प्रयोक्ता की गलती थी तो कृपया इसको भी रिपोर्ट करें ताकि अगली बार गलती होने पर अधिक अर्थपूर्ण सन्देश दिया जा सके." + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "त्रुटि की सूचना <https://github.com/sphinx-doc/sphinx/issues> पर उपस्थित पंजिका में दर्ज की जा सकती है. धन्यवाद!" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "कार्य संख्या एक धनात्मक संख्या होनी चाहिए" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "अधिक जानकारी के लिए <http://sphinx-doc.org/> देखें." + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "\nस्रोत फाइलों से अभिलेख बनाएं.\n\nस्फिंक्स-बिल्ड #sphinx-build# सोर्स डायरेक्टरी #SOURCEDIR# की फाइलों से अभिलेख बनाता है और आउटपुट डायरेक्टरी #OUTPUTDIR# में सहेजता है. यह सोर्स डायरेक्टरी #SOURCEDIR# में कोन्फ.पाई से विन्यास मानों को उठाता है. स्फिंक्स-क्विक-स्टार्ट उपकरण का उपयोग कोन्फ.पाई सहित नमूना फाइलों को बनाने में किया जा सकता है.\n\nस्फिंक्स-बिल्ड भिन्न प्रारूपों में अभिलेख तैयार कर सकता है. प्रारूप का चुनाव आदेश देते समय निर्माता का नाम देकर किया जाता है - एच.टी.एम्.एल. इसका मानक प्रारूप है. ये निर्माता अभिलेखों के बनाने की प्रक्रिया में अन्य कार्य भी सम्पादित कर सकते हैं.\n\nमानक पद्धति के अनुसार सभी कालातीत अवयवों का नवनिर्माण होता है. चुनी हुई फाइलों नाम देकर केवल उन्ही फाइलों का नवनिर्माण किया जा सकता है.\n" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "अभिलेख की स्रोत फाइलों का पथ" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "परिणाम निर्देशिका का पथ" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "पुनर्निर्माण के लिए निश्चित फाइलों की सूची. यदि -a निर्दिष्ट है तो उपेक्षा कर दी जाएगी" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "सामान्य विकल्प" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "प्रयोग के लिए निर्माता (मानक: एच.टी.एम्.एल. #html#)" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "सभी फाइलें लिखें (मानक: केवल नई और परिवर्तित फाइलें लिखें)" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "सहेजी गयी परिस्थिति का प्रयोग न करें, सदैव सभी फाइलों को पढ़ें" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "संचित परिस्थिति और डॉक-ट्री फाइलों का पथ (मानक: OUTPUTDIR/.doctrees)" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "यदि संभव हो तो समानांतर N प्रक्रियाओं में निर्माण करें (ऑटो #auto# विशेष मान द्वारा cpu-count को N पर लगा दिया जाएगा)" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "पथ जहाँ पर विन्यास फाइल (conf.py) स्थित है (मानक: SOURCEDIR के समरूप)" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "किसी भी विन्यास फाइल का उपयोग ही न करें, मात्र -D विकल्प" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "विन्यास फाइल के एक मान का उल्लंघन करें " + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "एच.टी.एम्.एल. के नमूने में राशि प्रेषित करें" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "नाम-पत्र परिभाषित करें: केवल नाम-पत्र वाले खण्डों का समावेश करें" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "गहन जांच का पालन करें, सभी अनुपस्थित संदर्भों के बारे में सचेत करें" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "प्रदर्शित परिणामों के विकल्प" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "शब्द-प्रयोग बढ़ाएं (पुनरावृत्ति की जा सकती है) " + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "एस.टी.डी आउट #stdout# पर कोई परिणाम नहीं, एस.टी.डी एरर #stderr# पर चेतावनियाँ " + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "कुछ भी निर्गमित नहीं, यहाँ तक कि चेतावनी भी नहीं" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "रंगीन परिणाम ही दिखाएँ (मानक: स्वतः अनुमानित)" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "रंगीन परिणाम नहीं दिखाएँ (मानक: स्वतः अनुमानित)" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "चेतावनियाँ (और त्रुटियाँ) दी गई फाइल में लिखें" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "चेतावनियों को अशुद्धि मानें" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "अपवाद होने पर पूरा विलोम-अनुगमन देखें" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "अपवाद होने पर पी.डी.बी. चलाएं" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "%r फाइलों को नहीं ढूँढा जा सका" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "-a विकल्प और फाइल के नामों को सम्मिलित नहीं किया जा सकता" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "चेतावनी फाइल %r नहीं खोली जा सकी: %s" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "-D विकल्प का मान नाम = मान के रूप में होना आवश्यक है" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "-A विकल्प का मान नाम = मान के रूप में होना आवश्यक है" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "प्रभागों में से डॉक्-स्ट्रिंग स्वतःसम्मिलित करें" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "डॉक्-टेस्ट अंशों के निर्देश भाग की स्वतः जाँच करें" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "भिन्न परियोजनाओं के स्फिंक्स प्रलेखों का पारस्परिक सम्बन्ध करने दें" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "वह \"शेष\" प्रविष्टियाँ लिख लें, जिन्हें निर्माण के समय दिखाया या छिपाया जा सकता है" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "प्रलेखों की व्याप्ति की जाँच करें" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "गणित को सम्मिलित करें, पी.एन.जी. अथवा एस.वी.जी. में चित्रित" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "गणित को सम्मिलित करें, दिग्दर्शक में मैथजाक्स #MathJax# द्वारा प्रदर्शित" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "विन्यास मान के आधार पर सामिग्री का सशर्त समावेश" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "पाइथन विषयवस्तुओं के प्रलेखों के स्रोत निर्देश की कड़ी जोड़ें" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "गिटहब GitHub पर लेखपत्र प्रकाशित करने के लिए .nojekyll फाइल बनाएं" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "कृपया एक मान्य पथ का नाम दें" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "कृपया कुछ वाक्यांश लिखें" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "%s में से एक चुनें" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "कृपया हाँ के लिए 'y' अथवा नहीं के लिए 'n' मात्र दें. " + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "कृपया एक फाइल प्रत्यय दें, जैसे कि '.rst' अथवा '.txt'." + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "* टिपण्णी: नॉन-असकी #non-ASCII# अक्षर और सीमावर्ती कूटलेख अज्ञात हैं -- यू.टी.एफ.-8 अथवा लैटिन-1 माने गए." + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "स्फिंक्स %s त्वरित-आरंभ #sphinx-quickstart# उपकरण के लिए अभिनन्दन" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "कृपया निम्न विन्यासों के लिए मान प्रदान करें (मानक मान, यदि कोष्ठक में हो तो, स्वीकार करने के लिए एन्टर दबाएँ)" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "चुना हुआ बुनियादी तथा मूल स्थान: %s" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "आलेख का बुनियादी स्थान बताएं." + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "आलेख का बुनियादी पथ" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "त्रुटि: एक मौजूदा conf.py फाइल दिए गए मूल पथ में प्राप्त हुई है." + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "स्फिंक्स-त्वरित-आरम्भ #sphinx-quickstart# मौजूदा स्फिंक्स परियोजनाओं पर पुनर्लेखन नहीं करेगा." + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "कृपया एक नया मूल पथ दें (अथवा निकलने हेतु सिर्फ एन्टर #Enter# कर दें)" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "आपके पास Sphinx द्वारा बनाई गई फाइलों को सहेजने के लिए दो विकल्प हैं.\nया तो आप मूल स्थान में ही \"_build\" निर्देशिका प्रयोग करें, अथवा\nमूल पथ में भिन्न \"स्रोत\" और \"build\" निर्देशिका प्रयोग करें." + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "विभिन्न स्रोत और निर्माण डायरेक्टरी (y/n)" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "मूल निर्देशिका के अन्दर, दो और निर्देशिका बनाई जाएँगी;\nपरिवर्धित एच.टी.एम्.एल. नमूनों के लिए \"_templates\" और परिवर्धित रुपपत्रों और अन्य स्थैतिक फाइलों के लिए \"_static\"\nआप अधोरेखा के स्थान पर अन्य पूर्व-प्रत्यय (जैसे कि \".\") का प्रयोग कर सकते हैं." + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "नमूने और स्थैतिक डायरेक्टरी के लिए पूर्व-प्रत्यय" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "परियोजना का नाम बनाये गए प्रपत्रों में बहुत से स्थानों पर प्रयुक्त होगा." + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "परियोजना का नाम" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "लेखक(कों) का नाम" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "स्फिंक्स सॉफ्टवेयर के लिए संस्करण और आवृत्ति को मान्यता देता है.\nहर संस्करण की कई आवृत्तियाँ हो सकती हैं. उदाहरण के लिए,\nपाइथन संस्करण 2.5 अथवा 3.0 आदि हैं, और आवृत्ति\n2.5.1 अथवा 3.0a1 आदि हैं. यदि आपको इसे दो स्तर पर रखना नहीं चाहिए\nतो दोनों मान एक ही रख दें." + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "परियोजना संस्करण" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "परियोजना आवृत्ति" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "यदि प्रलेखों को अंग्रेजी के अलावा अन्य किसी भाषा में लिखा जाना है,\nतो यहाँ पर आप भाषा का कूटशब्द दे सकते हैं. स्फिंक्स तदपुरांत,\nजो वाक्यांश बनाता है उसे उस भाषा में अनुवादित करेगा.\n\nमान्य भाषा कूटशब्द सूची यहाँ पर देखें\nhttps://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "परियोजना की भाषा" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "स्रोत फाइल का प्रत्यय" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "आपने मुख्य लेखपत्र का नाम दें (प्रत्यय रहित)" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "त्रुटि: मुख्य फाइल %s चुने हुए मूल पथ में पहले से उपलब्ध है." + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "स्फिंक्स-त्वरित-आरम्भ मौजूदा फाइलों पर पुनर्लेखन नहीं करेगा." + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "कृपया एक नया फाइल नाम दें, अथवा मौजूदा फाइल का पुनर्नामकरण करें और एन्टर दबाएँ" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "इनमें से कौन सा स्फिंक्स आयाम प्रयोग करना है, इंगित करें:" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "टिप्पणी: imgmath और mathjax एक साथ समर्थ नहीं हो सकते. imgmath को अचिन्हित कर दिया गया है." + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "मेकफाइल बनाएं? (हाँ के लिए y/ ना के लिए n)" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "विंडोज़ कमांड फाइल बनाएं? (हाँ के लिए y/ ना के लिए n)" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "फाइल बनाई जा रही है ...%s" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "फाइल %s पहले से उपस्थित है, छोड़ दी गई." + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "समाप्त: एक प्रारंभिक निर्देशिका का ढांचा बना दिया गया है." + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "\nस्फिंक्स परियोजना के लिए आवश्यक फाइल बनाएं.\n\nस्फिंक्स-त्वरित-आरम्भ एक संवादपूर्ण उपकरण है जो आपकी परियोजना के \nबारे में कुछ प्रश्न पूछकर पूरी प्रलेखों की निर्देशिका और नमूना मेकफाइल \nबना देता है जिसे स्फिंक्स-बिल्ड में प्रयोग किया जा सकता है.\n" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "शांत ढंग " + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "ढांचे के विकल्प" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "यदि निर्दिष्ट हो तो विभिन्न स्रोत और निर्माण पथ" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "_templates आदि में बिंदु का बदलाव" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "परोयोजना के मूलभूत विकल्प" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "परियोजना का नाम" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "लेखकों के नाम" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "परियोजना का संस्करण" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "परियोजना की आवृत्ति" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "लेखपत्र की भाषा" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "स्रोत फाइल का प्रत्यय" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "मुख्य लेखपत्र का नाम" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "ई-पब प्रयोग करें" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "आयाम के विकल्प" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "आयाम %s सक्षम करें" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "स्वेच्छित आयाम सक्षम करें" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "मेकफाइल और बैचफाइल का सर्जन" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "मेकफाइल बनाएं" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "मेकफाइल नहीं बनाएं" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "बैचफाइल बनाएं" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "बैचफाइल नहीं बनाएं" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "Makefile/make.bat के लिए make-mode का प्रयोग करें" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "Makefile/make.bat के लिए make-mode का प्रयोग नहीं करें" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "परियोजना नमूनावृत्ति" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "नमूना फाइलों के लिए नमूना निर्देशिका" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "नमूना चर-पद का निरूपण करें" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "\"शांत\" निर्दिष्ट है, परन्तु कोई भी \"परियोजना\" अथवा \"लेखक\" निर्दिष्ट नहीं है." + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "त्रुटि: दिया गया पथ निर्देशिका नहीं है, अथवा स्फिंक्स फाइलें पहले से उपस्थित हैं." + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "स्फिंक्स-त्वरित-आरम्भ केवल एक खाली निर्देशिका में कार्यशील हो सकती है. कृपया एक नया मूल पथ निर्दिष्ट करें." + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "अमान्य नमूना चर-पद: %s" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "अधिक बाहरी-हाशिया पाया गया" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "अमान्य शीर्षक: %s" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "पंक्ति संख्या का ब्यौरा सीमा से बाहर है (1-%d): %r" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "दोनों \"%s\" और \"%s\" विकल्पों का प्रयोग नहीं किया जा सकता" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "समावेशित फाइल %r नहीं मिली अथवा पढने में असफलता मिली" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "कूटलेखन %r जो कि सम्मिलित फाइल %r में प्रयुक्त है, अशुद्ध प्रतीत हो रही है, एक :encoding: विकल्प देकर प्रयत्न करें" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "%r नामक विषयवस्तु सम्मिलित फाइल %r में नहीं मिली" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "\"lineno-match\" का प्रयोग बिना जुडी \"lines\" के युग्म के साथ नहीं हो सकता" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "लाइन ब्यौरा %r: सम्मिलित फाइल %r से कोई लाइन नहीं ली जा सकीं" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "भाग के लेखक:" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "प्रभाग लेखक:" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "निर्देश लेखक:" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "लेखक:" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "मापदण्ड" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "प्रदत्त " + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "प्रदत्त प्रकार " + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C फंक्शन)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C सदस्य)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C मैक्रो)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C प्रकार)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C चरपद)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "फंक्शन" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "सदस्य" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "मैक्रो" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "प्रकार" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "चर पद" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "संस्करण %s से नया " + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "संस्करण %s से अलग " + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "संस्करण %s से प्रतिबंधित " + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "प्रतिरूप उद्धरण %s, दूसरी प्रतिकृति %s में है " + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "उद्धरण [%s] सन्दर्भ कहीं नहीं है" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "घोषणा की पुनरावृत्ति, '%s' में भी घोषित.\n'%s' घोषित है. " + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "नमूना मानदण्ड " + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "देता है " + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "%s (C++ %s)" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "वर्ग" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "युग्म" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "अवधारणा " + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "गणक" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "प्रगणक " + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "घोषणा की पुनरावृत्ति, '%s' में भी घोषित.\nघोषणा का नाम '%s' है. " + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (अंतर्निर्मित फंक्शन)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s विधि)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (वर्ग)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (वैश्विक चरपद अथवा अचर) " + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s लक्षण)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "चर " + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (प्रभाग)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "पद्धति" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "आंकड़े " + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "लक्षण" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "प्रभाग" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "समीकरण का प्रतिरूप शीर्षक %s, दूसरी प्रतिकृति %s में है " + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "अमान्य math_eqref_format: %r" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "मुख्य-शब्द " + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "चालक" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "वस्तु" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "अपवाद " + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "वक्तव्य " + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "अंतर्निर्मित कर्म" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "चर पद " + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "उभारता है " + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (%s प्रभाग में )" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (अंतर्निर्मित चर पद)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (%s प्रभाग में )" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (अंतर्निर्मित वर्ग)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (%s वर्ग में)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s विधि)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s स्थैतिक विधि)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s स्थैतिक विधि)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (%s.%s वर्ग विधि)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (%s वर्ग विधि) " + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s लक्षण)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "पाइथन प्रभाग सूची" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "प्रभाग" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "अवमानित " + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "वर्ग विधि" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "स्थैतिक पद्धति" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "पारस्परिक-सन्दर्भों के लिए एक से अधिक लक्ष्य मिले %r: %s" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "(अवमानित)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (निर्देश)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (भूमिका)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "निर्देश" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "भूमिका" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "परिस्थिति चर पद; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "अशुद्ध रूप विकल्प विवरण %r, अपेक्षित प्रारूप \"opt\", \"-opt args\", \"--opt args\", \"/opt args\" अथवा \"+opt args\"" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "पारिभाषिक पद" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "व्याकरण संकेत " + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "सन्दर्भ शीर्षक" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "परिस्थिति चर पद " + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "प्रोग्राम विकल्प " + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "लेखपत्र" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "प्रभाग सूची" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "खोज पृष्ठ" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "प्रतिरूप शीर्षक %s, दूसरी प्रतिकृति %s में है " + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "numfig असमर्थ है. :numref: उपेक्षित है." + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "%s के लिए कोई संख्या नहीं दी गई है: %s" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "कड़ी का कोई शीर्षक नहीं है: %s" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "अमान्य numfig_format: %s (%r)" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "अमान्य numfig_format: %s" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "नव विन्यास" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "विन्यास परिवर्तित" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "आयाम परिवर्तित" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "निर्मित परिस्थिति वर्तमान संस्करण नहीं है " + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "स्रोत निर्देशिका परिवर्तित हो चुकी है " + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "यह परिस्थिति चुने गए निर्माता से मेल नहीं खाती, कृपया दूसरी डॉक-ट्री निर्देशिका चुनें. " + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "लेखपत्रों के पर्यवेक्षण में असफलता %s: %r" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "अधिकारक्षेत्र %r पंजीकृत नहीं है" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "स्वयं-संदर्भित विषय-सूची-संरचना मिली है. उपेक्षा की गई." + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "लेखपत्र किसी भी विषय-सूची-संरचना में सम्मिलित नहीं है" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "%s देखिए" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "%s भी देखिए" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "अनुक्रमणिका की प्रविष्टि का प्रकार अज्ञात %r" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "संकेत " + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "पारस्परिक संदर्भित विषय-सूची-संरचना सन्दर्भ पाए गए, उपेक्षा की जा रही है: %s <- %s" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "विषय-सूची-संरचना में लेखपत्र %r, जिसका कोई शीर्षक नहीं है, का सन्दर्भ है: कोई सम्बन्ध नहीं बनाया जा सकेगा" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "विषय-सूची-संरचना में छोड़े गए लेखपत्र %r का सन्दर्भ है" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "विषय-सूची-संरचना में अविद्यमान लेखपत्र %r का सन्दर्भ है" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "चित्र फाइल पठनीय नहीं है: %s" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "चित्र फाइल %s पठनीय नहीं है: %s" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "उतारी गई फाइल पठनीय नहीं है: %s" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "%s में पहले से भाग संख्या नियत है (एक के अन्दर दूसरा अंकित विषय-सूची-संरचना)" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "%s फाइल बन जाएगी." + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "\n<MODULE_PATH> में पाइथन प्रभाग और पैकेज की पुनरावर्तित खोज करें और\nस्वतःप्रभाग निर्देश द्वारा <OUTPUT_PATH> में प्रति पैकेज एक रेस्ट #reST# फाइल बनाएं.\n\n<EXCLUDE_PATTERN> फाइल और/ अथवा निर्देशिका स्वरुप हो सकते हैं\nजो निर्माण प्रकिया में छोड़ दिए जाएंगे.\n\nनोट: सामान्यतया यह स्क्रिप्ट किसी पहले से बनाई गई फाइल पर पुनर्लेखन नहीं करती." + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "प्रभाग से लेखपत्र का पथ" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "fnmatch-style फाइल और/ अथवा निर्देशिका स्वरुप जो निर्माण प्रक्रिया से छोड़ने हैं" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "सभी परिणामों को सहेजने के लिए निर्देशिका" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "विषय-सूची में दिखाए जाने वाले उपप्रभागों की अधिकतम गहराई (मानक: 4)" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "मौजूदा फाइलों पर पुनर्लेखन करें" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "सांकेतिक कड़ियों का अनुसरण करें. कलेक्टिव.रेसिपी.ऑमलेट के साथ प्रभावशाली. " + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "फाइलों को बनाए बिना स्क्रिप्ट चलाएं " + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "प्रत्येक प्रभाग के आलेख उसके अपने पृष्ठ में रखें" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "\"_private\" प्रभाग को सम्मिलित करें " + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "विषय-सूची की फाइल का नाम (मानक: प्रभाग) " + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "विषय-सूची की फाइल न बनाएं " + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "प्रभाग/पैकेज पैकेजों का शीर्षक न बनाएं (उदाहरणार्थ, जब डॉकस्ट्रिंग्स में यह पहले से हों) " + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr " मुख्य प्रभाग के आलेख को उपप्रभाग के आलेख से पहले रखें" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "प्रभाग पथ की व्याख्या 'पी.ई.पी.-0420 निहित नामराशि विवरण' के आधार पर करें " + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "फाइल प्रत्यय (मानक: rst)" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "स्फिंक्स-त्वरित-आरम्भ के साथ पूर्ण परियोजना उत्पन्न करें " + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "मोड्यूल_पाथ #module_path# को सिस.पाथ #sys.path# में जोड़ें, जब --full दिया जाता है तब इसका प्रयोग होता है " + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "परियोजना का नाम (मानक: मूल प्रभाग का नाम) " + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "परियोजना लेखक(गण), जब --full दिया जाता है तब इसका प्रयोग होता है " + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "परियोजना संस्करण, जब --full दिया जाता है तब इसका प्रयोग होता है " + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "परियोजना आवृत्ति, जब --full दिया जाता है तब इसका प्रयोग होता है " + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "आयाम विकल्प " + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "%s एक निर्देशिका नहीं है. " + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "अमान्य रेगएक्स #regex# %r, %s में " + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "स्रोतों की व्यापकता की जांच पूरी, परिणाम %(outdir)spython.txt में देखें. " + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "अमान्य रेगएक्स #regex# %r, coverage_c_regexes में " + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "प्रभाग %s का आयत नहीं किया जा सका: %s" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "'%s' विकल्प में अनुपस्थित '+' या '-'." + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "'%s' एक मान्य विकल्प नहीं है." + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "'%s' एक मान्य पाईवर्शन #pyversion# विकल्प नहीं है. " + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "अमान्य टेस्टकोड का प्रकार " + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "स्रोतों में डॉकटेस्ट्स की जांच पूरी, परिणाम %(outdir)s/output.txt में देखें. " + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "%s भाग में %s पर कोई निर्देश / परिणाम नहीं: %s" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "अमान्य डॉकटेस्ट निर्देश की उपेक्षा की जा रही है: %r" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "ग्राफविज़ निर्देश में दोनों मापदंड, विषय-वस्तु और फाइल का नाम, नहीं हो सकते" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "बाहरी ग्राफविज़ फाइल %r नहीं मिली अथवा पढने में असफलता मिली" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "विषय-वस्तु के बिना ग्राफविज़ निर्देश की उपेक्षा की जा रही है. " + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "डॉट ने किसी परिणाम फाइल का नहीं बनाया:\n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "डॉट निर्देश %r नहीं चलाया जा सकता (ग्राफविज़ परिणाम के लिए आवश्यक), ग्राफविज़_डॉट मान की जांच करें" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "डॉट त्रुटि के साथ बहार आ गया:\n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "ग्राफविज़_आउटपुट_फॉर्मेट का 'पी.एन.जी', 'एस.वी.जी.', होना आवश्यक है, पर यह %r है" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "डॉट निर्देश %r: %s" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[graph: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[graph]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "परिवर्तक त्रुटि के साथ बहार आ गया:\n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "लाटेक्स आदेश %r नहीं चलाया जा सकता (गणित दिखाने के लिए आवश्यक). आई.एम्.जी.मैथ_लाटेक्स मान की जाँच करें" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "%s आदेश %r नहीं चलाया जा सकता (गणित दिखाने के लिए आवश्यक). imgmath_%s मान की जाँच करें" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "लाटेक्स दिखाएँ %r: %s" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "पंक्तिबद्ध लाटेक्स %r: %s" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "इस समीकरण की स्थायी कड़ी" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "इन्टरस्फिंक्स सामान स्थानांतरित हो चुका है: %s -> %s" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "इन्टरस्फिंक्स सामान को %s से चढ़ाया जा रहा है ..." + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "कुछ चीजों के साथ कुछ समस्या है, लेकिन काम के दूसरे विकल्प उपलब्ध हैं: " + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "कुछ चीजों पहुँचने में असफलता मिली और यह समस्याएँ मिलीं: " + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(%s v%s में)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "(%s में)" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "इन्टरस्फिंक्स निर्धारक %r अक्षरमाला नहीं है. उपेक्षित" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[स्रोत]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "अपूर्ण " + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "अपूर्ण प्रविष्टि मिली: %s " + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<मूल प्रविष्टि>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(<<मूल प्रविष्टि>> %s, पंक्ति %d में उपस्थित है.)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "मौलिक प्रविष्टि" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "प्रभाग निर्देश विशिष्ट रूप से दर्शाया जा रहा है..." + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[docs]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "प्रभाग निर्देश" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>%s का स्रोत निर्देश </h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "सिंहावलोकन: प्रभाग निर्देश" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>सभी प्रभाग जिनके लिए निर्देश उपलब्ध है</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "स्वतः %s (%r) के लिए अमान्य हस्ताक्षर" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "%s के पदों का प्रारूप बनाने में व्यवधान: %s" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "%s गुण %s वस्तु में अनुपस्थित" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "पता नहीं है कि कौन सा प्रभाग स्वतःप्रलेखन %r के लिए आयात करना है (लेखपत्र में \"प्रभाग\" या \"वर्तमान-प्रभाग\" निर्देश रख कर देखें; अथवा स्पष्ट प्रभाग नाम देकर देखें)" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "स्वतः प्रभाग नाम में \"::\" विवेकहीन है" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "स्वतः-प्रभाग %s के लिए हस्ताक्षर पद अथवा प्रत्युत्तरित टिप्पणी प्रदान की गई" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "__all__ अंतिम अक्षरमाला होनी चाहिए, न कि %r (%s प्रभाग में) -- __all__ की उपेक्षा की जाएगी" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "अनुपस्थित गुण का :members: में उल्लेख है अथवा __all__: प्रभाग %s, गुण %s" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "आधार: %s" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr ":class:`%s` का उपनाम" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "आयात में असफलता: %s" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "पद-विच्छेदन में असफलता: %s" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "विषय-वस्तु के आयात में असफलता: %s" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "ऑटोसमरी आतंरिक रूप से आर.एस.टी. फाइलें बनाता है. आपके सोर्स_सफिक्स में आर.एस.टी. सम्मिलित नहीं है. छोड़ा गया." + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "[ऑटोसमरी] अब इसका स्वतःसारांश बना रहा है: %s" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "[ऑटोसमरी] %s पर लिख रहा है" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "\nस्वतः सारांश #autosummary# निर्देश का प्रयोग करते हुए पुर्नसरंचितपाठ बनाता है.\n\nस्फिंक्स-ऑटोजेन स्फिंक्स.एक्स्ट.ऑटोसमरी.जेनेरेट का मुखड़ा है.\nयह प्रदत्त फाइलों में सम्मिलित ऑटो समरी निर्देशों के अनुसार पुर्नसरंचितपाठ बनाता है\n\nस्वतः सारांश #autosummary# निर्देश का प्रारूप स्फिंक्स.एक्स्ट.ऑटोसमरी \nपाइथन प्रभाग में निबंधित है और इसे आप निम्नलिखित माध्यम से पढ़ सकते हैं:\n\n pydoc sphinx.ext.autosummary\n" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "आर.एस.टी. फाइलें बनाने के लिए स्रोत फाइलें" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "सभी परिणाम रखने के लिए निर्देशिका" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "फाइलों के लिए मानक प्रत्यय (मानक: %(default)s)" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "पारंपरिक प्रारूप निर्देशिका (मानक: %(default)s)" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "लेखपत्र आयातित सदस्य (मानक: %(default)s)" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "मुख्य शब्दों के चर-पद" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "उदाहरण" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "कुछ उदाहरण" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "टिप्पणियाँ" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "अन्य मापदण्ड" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "सन्दर्भ" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "चेतावनी देता है" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "मिलता है" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "सावधानी" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "चेतावनी" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "खतरा" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "गलती" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "संकेत" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "महत्त्वपूर्ण" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "टिप्पणी " + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "यह भी देखिए" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "सलाह" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "चेतावनी" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "पिछले पृष्ठ से जारी" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "अगले पृष्ठ पर जारी" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "अकारादि-क्रमहीन " + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "संख्याएं " + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "पृष्ठ" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "विषय-सूची" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "खोज" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "चलिए" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "स्रोत दिखाएँ" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "सिंहावलोकन" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "नमस्ते! यह है" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "आलेख विषय" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "अंतिम परिवर्धन" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "सूचियाँ और सारणियाँ:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "विस्तृत विषय-सूची" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "सभी अनुभागों एवं उप-अनुभागों की सूची" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "इस आलेख में खोजें" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "सार्वभौमिक प्रभाग सूची" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "सभी प्रभाग तक तुरंत पहुँच" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "सभी कार्ययुक्तियां, वर्ग, शब्द" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "अनुक्रमणिका – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "एक पृष्ठ पर पूरी अनुक्रमणिका" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "अक्षर द्वारा अनुक्रमित पृष्ठ" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "बृहदाकार हो सकता है" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "संचालन" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "%(docstitle)s में खोजें" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "इन लेखपत्रों के बारे में" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "सर्वाधिकार" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">सर्वाधिकार</a> %(copyright)s." + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© सर्वाधिकार %(copyright)s." + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "अंतिम बार सम्पादित %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s से निर्मित." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr " %(docstitle)s में खोजें" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "पिछला प्रकरण" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "पिछला अध्याय" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "अगला प्रकरण" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "अगला अध्याय" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "खोज कार्य के लिए जावा स्क्रिप्ट का होना आवश्यक है. कृपया जावा स्क्रिप्ट को शुरू करें." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "खोज" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "खोज परीणाम " + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "आपके खोज परिणामों में कोई प्रलेख नहीं मिला. कृपया सुनिश्चित करें कि सभी शब्दों की वर्तनी शुद्ध है और आपने यथेष्ट श्रेणियां चुनी हैं." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "त्वरित खोज" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "यह पृष्ठ " + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "परिवर्तित संस्करण %(version)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "संस्करण %(version)s में स्वतः रचित परिवर्तनों की सूची" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "पुस्तकालय में परिवर्तन" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "सी ऐ.पी.आई. परिवर्तन" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "अन्य परिवर्तन" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "इस शीर्ष-पंक्ति की स्थायी कड़ी" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "इस परिभाषा की स्थायी कड़ी" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "खोजे गए जोड़े छिपाएं" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "खोज जारी" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "खोज की तैयारी" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "खोज पूर्ण, खोज विषय के अनुकूल %s पृष्ठ मिला (मिले)." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", में " + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "किनारे का स्थान बढ़ाएं" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "किनारे का स्थान घटाएं" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "विषय सामिग्री" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "4 पंक्तिबद्ध सूचियाँ मिलीं. यह आपके द्वारा उपयोग किए गए आयाम की त्रुटि हो सकती है: %r" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "पाद-टिप्पणी [%s] का कोई सन्दर्भ नहीं है." + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "पाद-टिप्पणी [#] सन्दर्भ कहीं नहीं है" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "अनुवादित संदेश में असंगत पाद-टिप्पणी के प्रसंग. मूल: {0}, अनुवादित: {1}" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "अनुवादित संदेश में असंगत प्रसंग. मूल: {0}, अनुवादित: {1}" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "अनुवादित संदेश में असंगत उद्धरण के प्रसंग. मूल: {0}, अनुवादित: {1}" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "अनुवादित संदेश में असंगत शब्द के प्रसंग. मूल: {0}, अनुवादित: {1}" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "किसी भी पारस्परिक-सन्दर्भ के लिए एक से अधिक लक्ष्य मिले %r: %s संभव" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "%s:%s संदर्भित लक्ष्य नहीं मिले: %%(target)s" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "%r संदर्भित लक्ष्य नहीं मिले: %%(target)s" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "दूरस्थ चित्र नहीं लाया जा सका: %s [%d]" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "दूरस्थ चित्र नहीं लाया जा सका: %s [%s]" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "अज्ञात चित्र प्रारूप: %s..." + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "असाधनीय स्रोत अक्षर, \"?\" द्वारा बदले जा रहे हैं: %r" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "छोड़ा " + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "असफल" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "अशुद्धि पाठन: %s, %s" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "अशुद्धि लेखन: %s, %s" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "अमान्य तिथि प्रारूप. यदि आप सीधे परिणाम में दर्शाना चाहते हैं तो अक्षरमाला को एकाकी उद्धरण चिन्ह द्वारा चिन्हित करें: %s" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "विषय-सूची-संरचना में अविद्यमान फाइल %r का सन्दर्भ है" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "केवल निर्देशक भाव का मूल्यांकन करते समय अपवाद: %s" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "पाइथन 2 निर्देश-विन्यास के मूल्यांकन में सहायता भविष्य में सुसंगत नहीं रहेगी और स्फिंक्स 4.0 में हटा दी जाएगी. कृपया %s को पाइथन 3 निर्देश-विन्यास में परिवर्तित कर लें." + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "मानक भूमिका '%s' नहीं मिली" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "%s के लिए नमफिग_फॉर्मेट नहीं बताया गया है" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "%s बिंदु के लिए कोई पहचान-चिन्ह नहीं दिया गया" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "इस सारणी की स्थायी कड़ी" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "इस निर्देश की स्थायी कड़ी" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "इस चित्र की स्थायी कड़ी" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "इस विषय-सूची-संरचना की स्थायी कड़ी" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "चित्र का आकार नहीं मिल सका. :scale: विकल्प की उपेक्षा की जा रही है." + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "अज्ञात %r उच्चतमस्तर_विभाजन #toplevel_sectioning# %r वर्ग के लिए" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "अत्याधिक अधिकतम गहराई # :maxdepth: #, उपेक्षित किया गया." + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "लेखपत्र का शीर्षक एकल पाठ बिंदु नहीं है" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "पाया गया शीर्ष बिंदु किसी भाग, प्रसंग, तालिका, विषय-प्रबोध अथवा पार्श्व-स्थान में नहीं है" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "पाद टिप्पणियां" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "दोनों तालिका-स्तंभ और :चौड़ाई: विकल्प दिए गए हैं. :चौड़ाई: मान की उपेक्षा की जाएगी." + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "परिमाण मात्रक %s अमान्य है. उपेक्षा की जाएगी." + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "अनुक्रमणिका की प्रविष्टि का प्रकार %s मिला" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[चित्र: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[चित्र]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "शीर्षक रेखाचित्र के भीतर नहीं है" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "अकार्यान्वित बिंदु प्रकार: %r" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "अज्ञात बिंदु प्रकार: %r" diff --git a/sphinx/sphinx/locale/hi_IN/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/hi_IN/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..bb8d336 --- /dev/null +++ b/sphinx/sphinx/locale/hi_IN/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "hi_IN", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "", "Table of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/hi_IN/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/hi_IN/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..11a9517 --- /dev/null +++ b/sphinx/sphinx/locale/hi_IN/LC_MESSAGES/sphinx.po @@ -0,0 +1,3465 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Hindi (India) (http://www.transifex.com/sphinx-doc/sphinx-1/language/hi_IN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: hi_IN\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/hr/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/hr/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..05aaa3c --- /dev/null +++ b/sphinx/sphinx/locale/hr/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "hr", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Sva prava zadr\u017eana</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Sva prava zadr\u017eana %(copyright)s.", ", in ": ", u ", "About these documents": "O ovim dokumentima", "Automatically generated list of changes in version %(version)s": "Automatski generirani popis promjena u verziji %(version)s", "C API changes": "C API promjene", "Changes in Version %(version)s — %(docstitle)s": "Promjene u verziji %(version)s — %(docstitle)s", "Collapse sidebar": "Sakrij pomo\u0107nu traku", "Complete Table of Contents": "Detaljni sadr\u017eaj", "Contents": "Sadr\u017eaj", "Copyright": "Sva prava zadr\u017eana", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Izra\u0111eno sa <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Poka\u017ei pomo\u0107nu traku", "Full index on one page": "Potpun indeks na jednoj stranici", "General Index": "Opceniti abecedni indeks", "Global Module Index": "Op\u0107eniti popis modula", "Go": "Tra\u017ei", "Hide Search Matches": "Sakrij rezultate pretrage", "Index": "Abecedni popis", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Indeksiraj stranice po slovu", "Indices and tables:": "Kazala i tablice:", "Last updated on %(last_updated)s.": "Zadnji put a\u017eurirano %(last_updated)s.", "Library changes": "Promjene lib-ova", "Navigation": "Navigacija", "Next topic": "Sljede\u0107a tema", "Other changes": "Ostale promjene", "Overview": "Pregled", "Permalink to this definition": "Link na tu definiciju", "Permalink to this headline": "Link na taj naslov", "Please activate JavaScript to enable the search\n functionality.": "Molimo omogu\u0107ite JavaScript\n za djelovanje tra\u017eilice.", "Preparing search...": "Priprema pretrage...", "Previous topic": "Prija\u0161nja tema", "Quick search": "Brzo pretra\u017eivanje", "Search": "Tra\u017ei", "Search Page": "Tra\u017eilica", "Search Results": "Rezultati pretrage", "Search finished, found %s page(s) matching the search query.": "Pretraga zavr\u0161ena, prona\u0111eno %s stranica.", "Search within %(docstitle)s": "Tra\u017ei izme\u0111u %(docstitle)s", "Searching": "Pretra\u017eivanje", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Prika\u017ei izvorni kod", "Table of Contents": "", "This Page": "Trenutna stranica", "Welcome! This is": "Dobro do\u0161li! Ovo je", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Zadanim uvjetima nije prona\u0111en dokument. Molim provjerite to\u010dnost upisanih rije\u010di i odabir ozna\u010denih kategija.", "all functions, classes, terms": "sve funkcije, razredi, izrazi", "can be huge": "mo\u017ee biti ogromno", "last updated": "posljednja promjena", "lists all sections and subsections": "prika\u017ei sve sekcije i podsekcije", "next chapter": "sljede\u0107e poglavlje", "previous chapter": "Prija\u0161nje poglavlje", "quick access to all modules": "brz dostup do svih modula", "search": "tra\u017ei", "search this documentation": "tra\u017ei po dokumentaciji", "the documentation for": "dokumentacija za"}, "plural_expr": "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/hr/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/hr/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..81e7e9b --- /dev/null +++ b/sphinx/sphinx/locale/hr/LC_MESSAGES/sphinx.po @@ -0,0 +1,3466 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Mario Šarić, 2015-2020 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Croatian (http://www.transifex.com/sphinx-doc/sphinx-1/language/hr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: hr\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "u konfiguracijskom direktoriju ne postoji datoteka conf.py (%s)" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "Nema izvornog direktorija (%s)" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "Izvorni i odredišni direktorij ne smiju biti jednaki" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "Izrada pomoću Sphinx v%s" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "Ovaj projekt se ne može izgraditi s instaliranom verzijom, potrebno je instalirati Sphinx v%s ili višu verziju." + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "izrada izlazne mape" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "'setup' koji je postavljen u conf.py nije moguće pozvati. Molimo izmijenite definiciju 'setup' funkcije kako bi ju mogli izvršiti iz Pythona. Ovo je potrebno kako bi conf.py imao karakter Sphinx proširenja. " + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "učitavanje prijevoda [%s]... " + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "napravljeno" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "neuspješno: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "Nije odabran format, koristi se zadani: html" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "uspješno" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "završeno uz probleme" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "build %s, %s upozorenje." + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "build %s." + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "%s proširenje nema deklaraciju paralelnog čitanja, uz pretpostavku da nije - zamolite autora za provjeru i postavljanje deklaracije" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "%s proširenje nema deklaraciju paralelnog čitanja, uz pretpostavku da nije - zamolite autora za provjeru i postavljanje deklaracije" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "ne može se nadjačati osnovna konf. postavka %r, zanemarena je (koristite %r za postavljanje pojedinačnih elemenata)" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "nepravilan broj %r za konf. vrijednost %r, zanemaruje se" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "ne može se nadjačati konf. vrijednost %r zbog nepodržanog tipa, zanemareno" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "nepoznata konfiguracijska vrijednost %r, zanemaruje se" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "Ne postoji konfiguracijska vrijednost: %s" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "Konfiguracijska vrijednost %r već postoji" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "Postoji sintaksna greška u konfiguracijskoj datoteci: %s\n" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "Poglavlje %s" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "Slika %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Tablica %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "Ispis %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "primary_domain %r nije pronađen, zanemareno je." + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "Događaj %r već postoji" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "Nepoznato ime događaja: %s" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "Ovaj projekt treba proširenje %s najmanje u verziji %si stoga se ne može izraditi s postojećom verzijom (%s)." + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "Klasa %s nema \"name\" svojstvo" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "Builder %r već postoji (u modulu %s)" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "Builder imena %s nije registriran ili dostupan pomoću poziva" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "Builder %s nije registriran" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "domena %s je već registrirana" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "domena %s nije još registrirana" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "source_parser za %r je već registriran" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "proširenje %r se već nalazi u Sphinxu od verzije %s; ovo proširenje se zanemaruje." + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "Izvorna iznimka:\n" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "Proširenje %s ne može biti uvezena" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "proširenje %r nema funkciju setup(); radi li se o ispravnom Sphinx modulu proširenja?" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "%s proširenje traži Sphinx verzije v%s; stoga projekt ne može biti izgrađen s ovom verzijom." + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "proširenje %r vratio je nepodržan objekt iz setup() funkcije; rezultat treba biti None ili riječnik metapodataka" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "tema %r nema postavku \"theme\"" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "tema %r nema postavku \"inherit\"" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "tema %r nije pronađena, nasljeđuje ju %r" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "postavka %s.%s ne pojavljuje se u pretraženim konfiguracijama tema" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "datoteka %r iz teme nije ispravna (zip) arhiva ili ne sadrži temu" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "sphinx_rtd_theme više nije čvrsta zavisnost od verzija 1.4.0. Molimo instalirajte ručno. (pip install sphinx_rtd_theme)" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "nema teme %r (nedostaje theme.conf?)" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Ugrađeni dijelovi" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Nivo modula" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (u " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Opceniti abecedni indeks" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "abecedni indeks" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "naprijed" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "nazad" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s dokumentacija" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Abecedni popis" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Distribucija" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "Detektirano je prekobrojno izvlačenje koda" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "Neispravan navod: %s" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "Ne mogu se istovremeno koristiti *%s* i *%s* opcije" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "Include datoteka %r nije pronađena ili se ne može pročitati" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "Encoding %r za čitanje import datoteke %r nije ispravan, pokušajte dodati :encoding: opciju" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "Objekt %r nije pronađen u include datoteci %r" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "Ne može se koristiti \"lineno-match\" sa nespojivom grupom \"lines\"" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "Specifikacija retka %r: nema redaka preuzetih iz include datoteke %r" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Autor sekcije: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Autor modula: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Autor koda:" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Autor:" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parametri" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Vraća" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Vraća tip" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C funkcija)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C član)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C makro)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C tip)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C varijabla)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "funkcija" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "član" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "makro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "tip" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "varijabla" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Novo u verziji %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Promijenjeno u verziji %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Zastarijelo od verzije %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "Parametri predloška" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Baca (iznimke)" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "razred" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "koncept" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "enum" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "enumerator" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (ugrađene funkcije)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s metoda)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (razred)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (globalna varijabla ili konstanta)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s atribut)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Argumenti" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (modul)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "metoda" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "podaci" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "atribut" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "modul" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "dvostruka oznaka jednakosti %s, drugo pojavljivanje u %s" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "ključna riječ" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operator" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "objekt" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "izuzetak" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "izjava" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "ugrađen funkcije" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Varijable" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Podiže" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (u modulu %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (ugrađene variable)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (u modulu %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (ugrađen razred)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (razred u %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s metoda)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s statična metoda)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s statična metoda)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (%s.%s metoda klase)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (%s metoda klase)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s atribut)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Python indeks modula" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "Moduli" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Zastarjelo" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "metoda klase" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "statična metoda" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (zastarjelo)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (directive)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (role)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "Direktive" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "uloga" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "varijabla okruženja; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "termin rječnika" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "token gramatike" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "referentna oznaka" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "varijabla okruženja" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "programske mogućnosti" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "dokument" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Popis modula" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Tražilica" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "pogledajte %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "Dodatne informacije: %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Simboli" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "nedostaje '+' ili '-' u '%s' opciji." + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "'%s' nije valjana opcija." + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "'%s' nije valjana pyversion opcija" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "Graphviz direktiva ne može imati i sadržaj i ime datoteke za argumente" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "Vanjska Graphviz datoteka %r ne postoji ili se ne može čitati" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "Ignoriranje \"graphviz\" direktive bez sadržaja." + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "dot naredba %r ne može se pokrenuti (potrebna za graphviz izlaz), provjerite postavku graphviz_dot" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "graphviz_output_format mora biti 'png' ili 'svg', ali je %r" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[graph: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[graph]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "Link na tu definiciju" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(u %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[source]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Todo" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<original entry>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(<<original entry>> se nalazi u %s, redak %d.)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "izvorna stavka" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[docs]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Kod modula" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Izvorni kod za %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Pregled: kod modula" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Svi moduli za koje je dostupan kod</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "Osnovice: %s" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "nadimak za :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "Argumenti" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "Primjeri" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Pozor" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Pažnja" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Opasnost" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Greška" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Savjet" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Važno" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Napomena" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Više informacija" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Savjet" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Upozorenje" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "nastavak sa prethodne stranice" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "stranica" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Traži" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Traži" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Prikaži izvorni kod" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Pregled" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Dobro došli! Ovo je" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "dokumentacija za" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "posljednja promjena" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Kazala i tablice:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Detaljni sadržaj" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "prikaži sve sekcije i podsekcije" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "traži po dokumentaciji" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Općeniti popis modula" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "brz dostup do svih modula" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "sve funkcije, razredi, izrazi" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Index – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Potpun indeks na jednoj stranici" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Indeksiraj stranice po slovu" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "može biti ogromno" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navigacija" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Traži između %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "O ovim dokumentima" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Sva prava zadržana" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Sva prava zadržana</a> %(copyright)s." + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© Sva prava zadržana %(copyright)s." + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Zadnji put ažurirano %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Izrađeno sa <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Traži %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Prijašnja tema" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "Prijašnje poglavlje" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Sljedeća tema" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "sljedeće poglavlje" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Molimo omogućite JavaScript\n za djelovanje tražilice." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "traži" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Rezultati pretrage" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "Zadanim uvjetima nije pronađen dokument. Molim provjerite točnost upisanih riječi i odabir označenih kategija." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Brzo pretraživanje" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Trenutna stranica" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Promjene u verziji %(version)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Automatski generirani popis promjena u verziji %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Promjene lib-ova" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "C API promjene" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Ostale promjene" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Link na taj naslov" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Link na tu definiciju" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Sakrij rezultate pretrage" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "Pretraživanje" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Priprema pretrage..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "Pretraga završena, pronađeno %s stranica." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", u " + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Pokaži pomoćnu traku" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Sakrij pomoćnu traku" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Sadržaj" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "više od jednog targeta za 'any' referencu %r: može biti %s" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "%s:%s reference target nije pronađen: %%(target)s" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "%r referenca target nije pronađena: %% (target)" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Permalink na ovu tablicu" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Permalink na ovaj kod" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Permalink na ovu sliku" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "Permalink na ovaj sadržaj" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Fusnote" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[slika: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[slika]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/hu/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/hu/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..31b266b --- /dev/null +++ b/sphinx/sphinx/locale/hu/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "hu", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", ", "About these documents": "N\u00e9vjegy ezekr\u0151l a dokumentumokr\u00f3l", "Automatically generated list of changes in version %(version)s": "Automatikusan gener\u00e1lt v\u00e1ltoz\u00e1slista a(z) %(version)s v\u00e1ltozathoz", "C API changes": "C API v\u00e1ltoz\u00e1sok", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Oldals\u00e1v \u00f6sszez\u00e1r\u00e1sa", "Complete Table of Contents": "Teljes tartalomjegyz\u00e9k", "Contents": "Tartalom", "Copyright": "Minden jog fenntartva", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s haszn\u00e1lat\u00e1val k\u00e9sz\u00fclt.", "Expand sidebar": "Oldals\u00e1v kinyit\u00e1sa", "Full index on one page": "Teljes t\u00e1rgymutat\u00f3 egy oldalon", "General Index": "\u00c1ltal\u00e1nos t\u00e1rgymutat\u00f3", "Global Module Index": "Teljes modul t\u00e1rgymutat\u00f3", "Go": "Ok", "Hide Search Matches": "Keres\u00e9si Tal\u00e1latok Elrejt\u00e9se", "Index": "T\u00e1rgymutat\u00f3", "Index – %(key)s": "T\u00e1rgymutat\u00f3 – %(key)s", "Index pages by letter": "Oldalak ABC sorrendben", "Indices and tables:": "T\u00e1rgymutat\u00f3 \u00e9s t\u00e1bl\u00e1zatok", "Last updated on %(last_updated)s.": "Utols\u00f3 friss\u00edt\u00e9s %(last_updated)s.", "Library changes": "K\u00f6nyvt\u00e1r v\u00e1ltoz\u00e1sok", "Navigation": "Navig\u00e1ci\u00f3", "Next topic": "K\u00f6vetkez\u0151 t\u00e9mak\u00f6r", "Other changes": "Egy\u00e9b v\u00e1ltoz\u00e1sok", "Overview": "\u00c1ttekint\u00e9s", "Permalink to this definition": "Hivatkoz\u00e1s erre a defin\u00edci\u00f3ra", "Permalink to this headline": "Hivatkoz\u00e1s erre a fejezetc\u00edmre", "Please activate JavaScript to enable the search\n functionality.": "K\u00e9rem enged\u00e9lyezze a JavaScriptet a keres\u0151 funkci\u00f3\n haszn\u00e1lat\u00e1hoz.", "Preparing search...": "Felk\u00e9sz\u00fcl\u00e9s a keres\u00e9sre...", "Previous topic": "El\u0151z\u0151 t\u00e9mak\u00f6r", "Quick search": "Gyorskeres\u00e9s", "Search": "Keres\u00e9s", "Search Page": "Keres\u00e9s", "Search Results": "Keres\u00e9si Eredm\u00e9nyek", "Search finished, found %s page(s) matching the search query.": "A keres\u00e9s befejez\u0151d\u00f6tt, %s oldal egyezik a keres\u00e9si fel\u00e9teleknek.", "Search within %(docstitle)s": "Keres\u00e9s k\u00f6zt\u00fck: %(docstitle)s", "Searching": "Keres\u00e9s folyamatban", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Forr\u00e1s megtekint\u00e9se", "Table of Contents": "", "This Page": "Ez az Oldal", "Welcome! This is": "\u00dcdv\u00f6z\u00f6lj\u00fck! Ez a", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "A keres\u00e9se nem hozott eredm\u00e9nyt. Ellen\u0151rizze, a megadott kulcsszavakat \u00e9s azt, hogy megfelel\u0151 sz\u00e1m\u00fa kateg\u00f3ria van-e kiv\u00e1lasztva.", "all functions, classes, terms": "\u00f6sszes funkci\u00f3, oszt\u00e1ly \u00e9s kifejez\u00e9s", "can be huge": "nagy lehet", "last updated": "utolj\u00e1ra friss\u00edtve", "lists all sections and subsections": "kilist\u00e1zza az \u00f6sszes fejezetet \u00e9s alfejezetet", "next chapter": "k\u00f6vetkez\u0151 fejezet", "previous chapter": "el\u0151z\u0151 fejezet", "quick access to all modules": "gyors hozz\u00e1f\u00e9r\u00e9s az \u00f6sszes modulhoz", "search": "keres\u00e9s", "search this documentation": "keres\u00e9s ebben a dokument\u00e1ci\u00f3ban", "the documentation for": "dokument\u00e1ci\u00f3"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/hu/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/hu/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..e9e7a52 --- /dev/null +++ b/sphinx/sphinx/locale/hu/LC_MESSAGES/sphinx.po @@ -0,0 +1,3470 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# FIRST AUTHOR <EMAIL@ADDRESS>, 2011 +# Molnár Dénes <denes.molnar2@stud.uni-corvinus.hu>, 2017 +# Peter Schön <slapec@gmail.com>, 2018 +# Tibor Toth <szunyog@gmail.com>, 2013,2015 +# Tibor Toth <szunyog@gmail.com>, 2019 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Hungarian (http://www.transifex.com/sphinx-doc/sphinx-1/language/hu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: hu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "a konfigurációs mappa nem tartalmazza a conf.py állományt (%s)" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "A forrás mappa nem található (%s)" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "A forrás és cél mappa nem lehet azonos" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "Sphinx %s verzió futtatása" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "fordítások betöltése [%s]..." + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "kész" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "sikertelen: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "sikerült" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "problémákkal befejeződött" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "%s. bekezdés" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "%s. ábra" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "%s. táblázat" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "%s. felsorlás" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Fejlesztési Javaslatok; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Beépített" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Modul szint" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Általános tárgymutató" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "nyitóoldal" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "következő" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "előző" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s dokumentáció" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Tárgymutató" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Kiadás" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "A megadott útvonal nem egy mappa vagy a sphinx állományok már léteznek." + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Fejezet szerző: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Modul szerző: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Kód szerző: " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Szerző: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Paraméterek" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Visszatérési érték" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Visszatérés típusa" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C függvény)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C tagváltozó)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C makró)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C típus)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C változó)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "függvény" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "tag" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "makró" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "típus" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "változó" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Új a(z) %s verzióban" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "A %s verzióban változott" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Elavult a(z) %s verzió óta" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "Sablonparaméterek" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Dob" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "osztály" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "enumeráció" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "enumerátor" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (beépített függvény)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s metódus)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (osztály)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (globális változó vagy konstans)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s attribútum)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Argumentum" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (modul)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "metódus" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "adat" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "attribútum" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "modul" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "kulcsszó" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operátor" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "objektum" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "kivétel" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "utasítás" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "beépített függvény" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Változók" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Kivétel" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (%s modulban)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (beépített változó)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (%s modulban)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (beépített osztály)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (osztály %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s metódus)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s statikus metódus)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s statikus metódus)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (%s.%s osztály metódus)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (%s osztály metódus)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s attribútum)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Python Modul Mutató" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "modulok" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Elavult" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "osztály szintű metódus" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "statikus metódus" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (elavult)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (direktíva)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (szerepkör)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "direktíva" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "szerepkör" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "környezeti változó; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "szójegyzék" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "nyelvtani jel" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "referencia cimke" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "környezeti változó" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "program opció" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Modulok" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Keresés" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "forrás mappa megváltozott" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "lásd %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "lásd még %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Szimbólumok" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "%s nem mappa" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[graph: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[graph]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(%s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[source]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Tennivaló" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "eredeti bejegyzés" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[docs]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Modul forráskód" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>%s forráskódja</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Áttekintés: modul forráskód" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Az összes modul, melynek forrása elérhető</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "álneve :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Figyelem" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Figyelem" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Veszély" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Hiba" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Tipp" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Fontos" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Megjegyzés" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Lásd még" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Javaslat" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Figyelem" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "folytatás az előző oldalról" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "oldal" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Keresés" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Ok" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Forrás megtekintése" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Áttekintés" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Üdvözöljük! Ez a" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "dokumentáció" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "utoljára frissítve" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Tárgymutató és táblázatok" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Teljes tartalomjegyzék" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "kilistázza az összes fejezetet és alfejezetet" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "keresés ebben a dokumentációban" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Teljes modul tárgymutató" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "gyors hozzáférés az összes modulhoz" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "összes funkció, osztály és kifejezés" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Tárgymutató – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Teljes tárgymutató egy oldalon" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Oldalak ABC sorrendben" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "nagy lehet" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navigáció" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Keresés köztük: %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Névjegy ezekről a dokumentumokról" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Minden jog fenntartva" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Utolsó frissítés %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s használatával készült." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Keresés %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Előző témakör" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "előző fejezet" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Következő témakör" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "következő fejezet" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Kérem engedélyezze a JavaScriptet a kereső funkció\n használatához." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "keresés" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Keresési Eredmények" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "A keresése nem hozott eredményt. Ellenőrizze, a megadott kulcsszavakat és azt, hogy megfelelő számú kategória van-e kiválasztva." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Gyorskeresés" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Ez az Oldal" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Automatikusan generált változáslista a(z) %(version)s változathoz" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Könyvtár változások" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "C API változások" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Egyéb változások" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Hivatkozás erre a fejezetcímre" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Hivatkozás erre a definícióra" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Keresési Találatok Elrejtése" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "Keresés folyamatban" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Felkészülés a keresésre..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "A keresés befejeződött, %s oldal egyezik a keresési felételeknek." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", " + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Oldalsáv kinyitása" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Oldalsáv összezárása" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Tartalom" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Permalink erre a táblázatra" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Permalink erre a kódrészletre" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Permalink erre a képre" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Lábjegyzetek" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[image: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[image]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/id/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/id/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..ccb7a8b --- /dev/null +++ b/sphinx/sphinx/locale/id/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "id", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Hak cipta</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Hak cipta %(copyright)s.", ", in ": ", di", "About these documents": "Tentang dokumen ini", "Automatically generated list of changes in version %(version)s": "Daftar perubahan dibuat otomatis untuk versi %(version)s", "C API changes": "Perubahan API C", "Changes in Version %(version)s — %(docstitle)s": "Perubahan pada Versi %(version)s — %(docstitle)s", "Collapse sidebar": "Tutup sidebar", "Complete Table of Contents": "Daftar Isi Lengkap", "Contents": "Konten", "Copyright": "Hak Cipta", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Dibuat menggunakan <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Buka sidebar", "Full index on one page": "Index penuh dalam satu halaman", "General Index": "Indeks Umum", "Global Module Index": "Index Modul Global", "Go": "Go", "Hide Search Matches": "Sembunyikan Hasil Pencarian", "Index": "Indeks", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Index halaman berdasarkan huruf", "Indices and tables:": "Indeks dan tabel:", "Last updated on %(last_updated)s.": "Terakhir diperbarui pada %(last_updated)s.", "Library changes": "Perubahan library", "Navigation": "Navigasi", "Next topic": "Topik berikutnya", "Other changes": "Perubahan lain", "Overview": "Tinjauan", "Permalink to this definition": "Link permanen untuk definisi ini", "Permalink to this headline": "Link permanen untuk headline ini", "Please activate JavaScript to enable the search\n functionality.": "Tolong aktifkan JavaScript untuk melakukan pencarian.\n ", "Preparing search...": "Penyiapkan pencarian...", "Previous topic": "Topik sebelumnya", "Quick search": "Pencarian cepat", "Search": "Pencarian", "Search Page": "Pencarian Halaman", "Search Results": "Hasil Pencarian", "Search finished, found %s page(s) matching the search query.": "Pencarian selesai, menemukan %s halaman yang cocok dengan kueri pencarian.", "Search within %(docstitle)s": "Pencarian dalam %(docstitle)s", "Searching": "Pencarian", "Searching for multiple words only shows matches that contain\n all words.": "Mencari beberapa kata hanya menunjukkan kecocokan yang mengandung\n \u00a0\u00a0 semua kata.", "Show Source": "Lihat Sumber", "Table of Contents": "Daftar Isi", "This Page": "Halaman Ini", "Welcome! This is": "Selamat Datang! Ini adalah", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Tidak ada dokumen yang cocok dengan pencarian anda. Pastikan semua kata ditulis dengan benar dan sudah memilih cukup kategori.", "all functions, classes, terms": "semua fungsi, class, term", "can be huge": "dapat menjadi besar", "last updated": "terakhir diperbarui", "lists all sections and subsections": "daftar semua seksi dan subseksi", "next chapter": "bab berikutnya", "previous chapter": "bab sebelum", "quick access to all modules": "akses cepat semua modul", "search": "pencarian", "search this documentation": "pencarian pada dokumentasi ini", "the documentation for": "dokumentasi untuk"}, "plural_expr": "0"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/id/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/id/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..ce2847c --- /dev/null +++ b/sphinx/sphinx/locale/id/LC_MESSAGES/sphinx.po @@ -0,0 +1,3470 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Arif Budiman <arifpedia@gmail.com>, 2016-2017 +# FIRST AUTHOR <EMAIL@ADDRESS>, 2009 +# oon arfiandwi <oon.arfiandwi@gmail.com>, 2019-2020 +# Sakti Dwi Cahyono <54krpl@gmail.com>, 2013,2015 +# Tumpal Gemelli, 2018 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Indonesian (http://www.transifex.com/sphinx-doc/sphinx-1/language/id/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: id\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "direktori konfigurasi tidak berisi berkas conf.py (%s)" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "Tidak dapat menemukan direktori sumber (%s)" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "Direktori sumber dan direktori tujuan tidak boleh sama" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "Menjalankan Sphinx v%s" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "Untuk alasan keamanan, mode paralel dinonaktifkan di macOS dan python3.8 dan di atasnya. Untuk detail lebih lanjut, silakan baca https://github.com/sphinx-doc/sphinx/issues/6803" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "Proyek ini memerlukan sedikitnya Sphinx v%s dan maka itu tidak bisa dibangun dengan versi ini." + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "membuat direktori keluaran" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "saat menyiapkan ekstensi %s:" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "'setup' yang saat ini didefinisikan pada conf.py bukanlah sebuah Python callable. Silakan modifikasi definisinya untuk membuatnya menjadi fungsi callable. Hal ini diperlukan guna conf.py berjalan sebagai ekstensi Sphinx." + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "memuat terjemahan [%s]... " + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "selesai" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "tidak tersedia untuk built-in messages" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "memuat lingkungan yang diawetkan" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "gagal: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "Tidak ada builder yang dipilih, menggunakan default: html" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "berhasil" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "selesai with masalah" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "bangun %s, %s peringatan (dengan peringatan dianggap sebagai kesalahan)." + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "build %s, %s peringatan." + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "build %s." + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "kelas simpul %r sudah terdaftar, pengunjungnya akan diganti" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "pengarahan %r sudah terdaftar, itu akan diganti" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "peran %r sudah terdaftar, itu akan diganti" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "ekstensi %s tidak akan dinyatakan jika itu aman untuk pembacaan paralel, dengan anggapan itu tidak aman - silakan tanya pembuat ekstensi untuk memeriksa dan membuatnya eksplisit" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "ekstensi %s tidak aman untuk pembacaan paralel" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr " \nekstensi %s tidak akan dinyatakan jika itu aman untuk penulisan paralel, dengan anggapan itu tidak aman - silakan tanya pembuat ekstensi untuk memeriksa dan membuatnya eksplisit" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "ekstensi %s tidak aman untuk penulisan paralel" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "mengerjakan serial %s" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "tidak dapat menulis ulang pengaturan direktori konfigurasi %r, mengabaikan (gunakan %r untuk mengatur elemen-elemen satuan)" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "nomor %r yang salah untuk konfigurasi nilai %r, mengabaikan" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "tidak dapat menulis ulang pengaturan konfigurasi %r dengan tipe yang tidak didukung, mengabaikan" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "nilai konfigurasi %r yang tidak dikenal pada penulisan ulang, mengabaikan" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "Tidak terdapat nilai konfigurasi demikian: %s" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "Nilai konfigurasi %r sudah ada" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "Ada kesalahan sintaksis dalam file konfigurasi Anda: %s\n" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "Berkas konfigurasi (atau salah satu dari modul terimpor) disebut sys.exit()" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "Terdapat kesalahan programmable dalam berkas konfigurasi anda:\n\n%s" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "Nilai konfigurasi `source_suffix 'mengharapkan sebuah string, daftar string, atau kamus. Tetapi `%r' diberikan." + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "Bab %s" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "Gambar. %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Tabel %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "Daftar %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "Nilai konfigurasi `{name}` harus salah satu dari {candidates}, tapi `{current}` diberikan." + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "Nilai konfigurasi `{name}' memiliki tipe `{current.__name__}'; diharapkan {permitted}." + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "Nilai konfigurasi `{name}` bertipe `{current.__name__}', default menjadi `{default.__name__}'." + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "nilai konfigurasi %r diatur sebagai string dengan karakter non-ASCII; hal ini dapat berpotensi terjadinya galat Unicode. Silakan pakai string Unicode, sebagai contoh %r." + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "primary_domain %r tidak ditemukan, diabaikan." + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "Sejak v2.0, Sphinx menggunakan \"index\" sebagai master_doc secara bawaan. Silakan tambahkan \"master_doc = 'contents'\" ke conf.py Anda" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "Event %r sudah ada" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "Nama event tidak dikenal: %s" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "Ekstensi %s diperlukan oleh pengaturan needs_extensions, tapi itu tidak dimuat." + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "Proyek ini memerlukan ekstensi %s sedikitnya pada versi %s dan maka itu tidak bisa dibangun dengan versi yang dimuat (%s)." + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "Nama Pygments lexer %r tidak diketahui" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "Tidak dapat menjalankan lex literal_block sebagai \"%s\". Menyoroti yang terlewat." + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "dokumen tidak dapat dibaca. Diabaikan." + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "Class Builder %s tidak punya atribut \"name\"" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "Builder %r sudah ada (di modul %s)" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "Nama Builder %s todal terdaftar atau tersedia melalui entry point" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "Nama Builder %s tidak terdaftar" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "domain %s telah terdaftar" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "domain %s belum didaftarkan" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "Pengarahan %r sudah terdaftar di domain %s" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "Peran %r sudah terdaftar di domain %s" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "Indeks %r sudah terdaftar ke domain %s" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "object_type %r telah didaftarkan" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "crossref_type %r telah didaftarkan" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "source_suffix %r telah didaftarkan" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "source_parser untuk %r telah didaftarkan" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "Parser sumber untuk %s tidak terdaftar" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "Penerjemah untuk %r sudah ada" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "kwargs untuk add_node() harus berupa (visit, depart) function tuple: %r=%r" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "enumerable_node %r telah terdaftar" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "math renderer %s telah terdaftar" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "ekstensi %r telah digabungkan dengan Sphinx sejak versi %s; ekstensi diabaikan." + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "Eksepsi orisinal:\n" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "Tidak dapat mengimpor ekstensi %s" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "ekstensi %r tidak memiliki fungsi setup(); apa itu benar-benar sebuah modul ekstensi Sphinx?" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "Ekstensi %s yang digunakan proyek ini memerlukan sedikitnya Sphinx v%s; maka itu tidak bisa dibangun dengan versi ini." + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "ekstensi %r mengembalikan objek yang tidak didukung dari fungsi setup() nya; seharusnya mengembalikan None atau dictionary metadata" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "tema %r tidak memiliki pengaturan \"tema\"" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "tema %r tidak memiliki pengaturan \"inherit\"" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "tema berjudul %r tidak ditemukan, inherited oleh %r" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "pengaturan %s.%s terjadi pada tak satupun konfigurasi tema yang dicari" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "opsi tema yang tidak didukung %r diberikan" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "berkas %r pada path tema merupakan berkas zip yang tidak valid atau tidak berisi tema" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "sphinx_rtd_theme bukan lagi merupakan dependensi bawaan sejak versi 1.4.0. Silakan memasangnya secara manual.(pip install sphinx_rtd_theme)" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "tema bernama %r tidak ditemukan (kehilangan theme.conf?)" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "gambar yang sesuai untuk builder %s tidak ditemukan: %s (%s)" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "gambar yang sesuai untuk builder %s tidak ditemukan: %s" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "membangun [mo]: " + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "menulis keluaran... " + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "semua dari %d berkas po" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "target untuk %d berkas po yang telah ditetapkan" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "target untuk %d berkas po telah usang" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "semua berkas sumber" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "berkas %r yang diberikan di command line tidak berada dalam direktori sumber, mengabaikan" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "berkas %r yang diberikan di command line tidak tersedia, mengabaikan" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "%d berkas sumber diberikan di command line" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "target untuk %d berkas sumber yang telah usang" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "membangun [%s]: " + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "mencari berkas yang kini-usang... " + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "%d ditemukan" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "tidak ditemukan apapun" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "lingkungan pengawetan" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "memeriksa konsistensi" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "tidak ada target yang usang." + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "memperbarui lingkungan:" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "%s ditambahkan, %s diubah, %s dihapus" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "membaca sumber... " + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "menunggu workers..." + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "docnames yang akan ditulis: %s" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "menyiapkan dokumen" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "entri ToC ganda ditemukan: %s" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "menyalin gambar... " + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "tidak dapat membaca berkas gambar %r: menyalin gambar sebagai gantinya" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "tidak dapat menyalin berkas gambar %r: %s" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "tidak dapat menulis berkas gambar %r: %s" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "Pillow tidak ditemukan - menyalin berkas gambar" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "menulis %s berkas..." + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "mimetype yang tidak dikenal untuk %s, mengabaikan" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "Berkas tinjauan berada di %(outdir)s." + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "tidak ada pengubahan dalam versi %s." + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "menulis berkas ringkasan..." + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Modul Internal" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Level Modul" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "menyalin berkas sumber..." + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "tidak dapat membaca %r untuk pembuatan changelog" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "Builder contoh tidak menghasilkan berkas apapun." + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "Berkas ePub berada di %(outdir)s." + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "nilai conf \"epub_language\" (atau \"language\") tidak seharsunya kosong untuk EPUB3" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "nilai conf \"epub_uid\" harus berupa XML NAME untuk EPUB3" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "nilai conf \"epub_title\" (atau \"html_title\") tidak seharusnya kosong untuk EPUB3" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "nilai conf \"epub_author\" tidak seharusnya kosong untuk EPUB3" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "nilai conf \"epub_contributor\" tidak seharusnya kosong untuk EPUB3" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "nilai conf \"epub_description\" tidak seharusnya kosong untuk EPUB3" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "nilai conf \"epub_publisher\" tidak seharusnya kosong untuk EPUB3" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "nilai conf \"epub_copyright\" (atau \"copyright\") tidak seharusnya kosong untuk EPUB3" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "nilai conf \"epub_identifier\" tidak seharusnya kosong untuk EPUB3" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "bilai conf \"version\" tidak seharusnya kosong untuk EPUB3" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "css_file yang salah: %r, mengabaikan" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "Katalog pesan berada di %(outdir)s." + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "target untuk %d berkas templat" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "membaca templat... " + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "menulis katalog pesan... " + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "Mencari kesalahan sembarang dalam keluaran di atas atau di %(outdir)s/output.txt" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "Anchor '%s' tidak ditemukan" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "tautan rusak: %s (%s)" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "Halaman manual berada di %(outdir)s." + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "tidak ditemukan nilai konfigurasi \"man_pages\"; halaman manual tidak akan ditulis" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "penulisan" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "\"man_pages\" nilai konfigurasi mengacu pada dokumen tidak diketahui %s" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "Halaman HTML berada di %(outdir)s." + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "merakit dokumen tunggal" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "menulis file tambahan" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "Berkas Texinfo berada di %(outdir)s." + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "\nJalankan 'make' di direktori tersebut untuk menjalankannya melalui makeinfo\n(gunakan 'make info' di sini untuk melakukannya secara otomatis)." + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "tidak ditemukan nilai konfigurasi \"texinfo_documents\"; dokumen tidak akan ditulis" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "nilai konfigurasi \"texinfo_documents\" mereferensikan dokumen yang tidak dikenal %s" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "memroses %s" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "memecahkan referensi..." + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (dalam " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "menyalin berkas pendukung Texinfo" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "kesalahan menulis berkas Makefile: %s" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "Berkas teks berada di %(outdir)s." + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "kesalahan menulis berkas %s: %s" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "Berkas XML berada di %(outdir)s." + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "Berkas pseudo-XML berada di %(outdir)s." + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "berkas info build rusak: %r" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "Halaman HTML berada di %(outdir)s." + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "Gagal membaca berkas info build: %r" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d %b, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "nilai konfigurasi html_use_opensearch harus berupa sebuah string" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Indeks Umum" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "index" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "berikut" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "sebelum" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "menghasilkan indeks" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "menulis halaman tambahan" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "menyalin berkas yang dapat diunduh... " + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "tidak dapat menyalin berkas yang dapat diunduh %r: %s" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "menyalin berkas statik... " + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "tidak dapat menyalin berkas statik %r" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "menyalin berkas tambahan" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "tidak dapat menyalin berkas ekstra %r" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "Gagal menulis berkas info build: %r" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "indeks pencarian tidak dapat dimuat, tapi tidak semua dokumen akan dibangun: indeks akan jadi tidak lengkap." + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "halaman %s sebanding dengan dua pola dalam html_sidebars: %r dan %r" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "kesalahan Unicode terjadi saat render halaman %s. Silakan pastikan semua nilai konfigurasi yang berisi konten non-ASCII adalah string Unicode." + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "Kesalahan terjadi saat render halaman %s.\nAlasan: %r" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "menyisihkan persediaan obyek" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "js_file yang salah: %r, mengabaikan" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "Banyak math_renderers teregistrasi. Namun tidak satu pun math_renderer yang dipilih." + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "math_renderer %r yang tidak diketahui diberikan." + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "entri html_extra_path %r tidak ada" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "entri html_static_path %r tidak ada" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "berkas logo %r tidak ada" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "berkas favicon %r tidak ada" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "Dokumentasi %s %s" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "Berkas LaTeX berada di %(outdir)s." + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "\nJalankan 'make' di direktori tersebut untuk menjalankannya melalui (pdf)latex\n(gunakan 'make latexpdf' di sini untuk melakukannya secara otomatis)." + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "tidak ditemukan nilai konfigurasi \"latex_documents\"; dokumen tidak akan ditulis" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "nilai konfigurasi \"latex_documents\" mereferensikan dokumen yang tidak dikenal %s" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Indeks" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Rilis" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "tidak ada opsi Babel yang dikenal untuk bahasa %r" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "menyalin berkas pendukung TeX" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "menyalin berkas pendukung TeX... " + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "menyalin berkas tambahan" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "Eksepsi terjadi saat membangun, memulai debugger:" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "Diinterupsi" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "markup reST salah:" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "Kesalahan encoding:" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "Traceback lengkap telah disimpan di %s, bila ingin melaporkan masalah ini kepada developer." + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "Kesalahan rekursi:" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "Hal ini dapat terjadi dengan berkas sumber yang besar atau sangat dalam bertingkat. Anda dapat secara hati-hati meningkatkan batas standar recursi Python dari 1000 di conf.py contohnya:" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "Terjadi eksepsi:" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "Mohon juga melaporkan hal ini jika sebuah kesalahan pengguna sehingga lain kali perintah salah yang lebih baik dapat disediakan." + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "Laporan bug dapat diisi pada tracker di <https://github.com/sphinx-doc/sphinx/issues>. Terima kasih!" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "job number seharusnya sebuah bilangan positif" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "Untuk informasi lebih banyak, kunjungi <http://sphinx-doc.org/>." + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "\nMenghasilkan dokumentasi ari berkas sumber.\n\nsphinx-build menghasilkan dokumentasi dari berkas-berkas di SOURCEDIR dan menyimpannya\ndi OUTPUTDIR. Program tersebut mencari berkas 'conf.py' di SOURCEDIR untuk pengaturan\nkonfigurasinya. Alat 'sphinx-quickstart' dapat digunakan untuk menghasilkan berkas templat,\ntermasuk 'conf.py'\n\nsphinx-build dapat membuat dokumentasi dalam beragam format. Sebuah format\ndipilih berdasarkan nama builder pada command line; standarnya\nHTML. Builders pun dapat menjalankan tugas lainnya berhubungan dengan pemrosesan\ndocumentasi.\n\nSecara umum, semua yang usang akan dibuat. Output hanya untuk berkas\npilihan dapat dibuat dengan menentukan berkas satuan.\n" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "path ke berkas sumber" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "path ke direktori output" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "daftar berkas spesifik yang dibuat ulang. Diabaikan jika -a ditentukan" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "opsi umum" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "builder yang digunakan (default: html)" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "tulis semua berkas (default: hanya tulis berkas yang baru dan diubah)" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "jangan pakai saved environment, selalu baca semua berkas" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "path untuk the cached environment dan berkas doctree (default: OUTPUTDIR/.doctrees)" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "build secara parallel dengan N processes jika memungkinkan (nilai spesial \"auto\" akan menetapkan N ke cpu-count)" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "path tempat berkas konfigurasi (conf.py) berada (default: sama seperti SOURCEDIR)" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "jalankan tanpa berkas sama sekali, hanya opsi -D" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "override sebuah aturan di berkas konfigurasi" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "masukkan sebuah nilai ke templat HTML" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "define tag: masukkan blok \"only\" dengan TAG" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "mode nit-picky, ingatkan tentang semua referensi yang hilang" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "opsi output konsol" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "tingkatkan verbosity (dapat diulang)" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "tanpa output pada stdout, hanya peringatan pada stderr" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "tanpa output sama sekali, peringatan sekalipun" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "siarkan output berwarna (default: auto-detect)" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "jangan siarkan output berwarna (default: auto-detect)" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "tulis peringatan (dan galat) pada berkas terpilih" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "ubah peringatan menjadi galat" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "tampilkan traceback penuh pada eksepsi" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "jalankan Pdb pada eksepsi" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "tidak dapat mencari berkas %r" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "tidak dapat menggabungkan opsi -a dan nama berkas" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "tidak dapat membuka berkas peringatan %r: %s" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "argumen opsi -D harus dalam bentuk name=value" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "argumen opsi -A harus dalam bentuk name=value" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "masukkan docstrings secara otomatis dari modules" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "uji snippet kode secara otomatis pada blok doctest" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "tautkan antara dokumentasi Sphinx dari berbagai proyek" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "tulis entri \"todo\" yang dapat ditampilan atau disembunyikan dalam build" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "periksa coverage dokumentasi" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "masukkan math, yang dirender sebagai gambar PNG atau SVG" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "masukkan math, yang dirender di perambah sebagai gambar PNG atau SVG" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "inklusi bersyarat untuk isi berdasarkan nilai konfig" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "masukkan tautan ke sumber kode untuk objek Python yang terdokumentasi" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "buat berkas .nojekyll untuk menerbitkannya di halaman GitHub" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "Mohon masukkan nama path yang sah." + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "Mohon masukan teks." + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "Mohon masukkan satu dari %s." + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "Mohon ketik salah satu dari 'y' atau 'n'." + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "Mohon masukkan satu suffiks berkas, contohnya '.rst' atau '.txt'." + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "* Perhatian: karakter non-ASCII yang dimasukkan dan encoding terminal tidak diketahui -- menganggap UTF-8 atau Latin-1." + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "Selamat datang ke alat quickstart Sphinx %s." + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "Silakan masukkan nilai untuk pengaturan berikut (cukup tekan Enter to\nmenerima nilai bawaan, jika diberikan dalam tanda kurung)." + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "Masukkan jalur root untuk dokumentasi." + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "Root path dokumentasi" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "Galat: berkas conf.py telah ditemukan dalam root path terpilih." + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "sphinx-quickstart tidak akan menulis ulang proyek Sphinx yang ada." + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "Silakan masukkan root path baru (atau tekan Enter untuk keluar)" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "Pisahkan direktori source dan build (y/n)" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "Nama prefiks untuk dir templat dan static" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "Nama proyek akan muncul di beberapa tempat dalam dokumentasi yang dibuat." + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "Nama proyek" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "Nama(-nama) pembuat" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "Versi proyek" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "Rilis proyek" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "Bahasa proyek" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "Akhiran berkas sumber" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "Nama dokumen master Anda (tanpa akhiran)" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "Kesalahan: file master %s telah ditemukan di jalur utama yang dipilih." + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "sphinx-quickstart tidak akan menimpa berkas yang sudah ada." + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "Silakan masukkan nama file baru, atau ganti nama file yang ada dan tekan Enter" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "Tunjukkan ekstensi Sphinx berikut mana yang harus diaktifkan:" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "Catatan: imgmath dan mathjax tidak dapat diaktifkan secara bersamaan. imgmath telah diubah tidak pilih." + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "Buat Makefile? (y/n)" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "Buat berkas perintah Windows? (y/n)" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "Membuat file %s." + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "File %s sudah ada, lewati." + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "Selesai: Struktur direktori awal telah dibuat." + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "di mana \"pembangun\" adalah salah satu pembangun yang didukung, mis. html, lateks, atau periksa tautan." + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "\nHasilkan file yang diperlukan untuk proyek Sphinx. \n\nsphinx-quickstart adalah alat interaktif yang menanyakan beberapa pertanyaan tentang proyek Anda \ndan kemudian menghasilkan direktori dokumentasi lengkap dan contoh \nMakefile untuk digunakan dengan sphinx-build.\n" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "mode diam" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "root proyek" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "Opsi struktur" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "jika ditentukan, pisahkan direktori sumber dan pembangunan" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "pengganti dot di _templates dll." + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "Opsi dasar proyek" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "nama proyek" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "nama penulis" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "versi proyek" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "rilis proyek" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "bahasa dokumen" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "akhiran berkas sumber" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "nama dokumen utama" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "gunakan epub" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "Opsi ekstensi" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "aktifkan ekstensi %s" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "aktifkan ekstensi berubah-ubah" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "Pembuatan Makefile dan Batchfile" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "buat makefile" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "jangan membuat makefile" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "buat batchfile" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "jangan membuat batchfile" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "gunakan mode-make untuk Makefile/make.bat" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "jangan gunakan make-mode untuk Makefile/make.bat" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "Membuat templat proyek" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "direktori templat untuk berkas templat" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "mendefinisikan variabel templat" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "\"quiet\" ditentukan, tetapi tidak ada \"project\" atau \"author\" yang ditentukan." + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "Kesalahan: jalur yang ditentukan bukan direktori, atau file sphinx sudah ada." + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "sphinx-quickstart hanya menghasilkan direktori kosong. Silakan tentukan jalur utama baru." + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "Variabel templat tidak valid: %s" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "Pendeteksian kelebihan telah terdeteksi" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "Keterangan tidak valid: %s" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "spesifikasi nomor baris di luar kisaran (1-%d): %r" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "Tidak dapat menggunakan kedua opsi \"%s\" dan \"%s\"" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "Berkas yang disertakan %r tidak ditemukan atau gagal membacanya" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "Pengkodean %r yang digunakan untuk membaca file yang disertakan %r tampaknya salah, mencoba berikan opsi :encoding:" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "Objek bernama %r tidak ditemukan disertakan di berkas %r" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "Tidak dapat menggunakan \"lineno-match\" dengan rangkaian \"baris\" yang terpisah" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "Spesifikasi baris %r: tidak ada baris yang ditarik dari berkas %r" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Penyusun bagian:" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Penyusun modul: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Penulis kode:" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Penyusun: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parameter" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Kembali" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Return type" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (fungsi C)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (anggota C)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (macro C)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (tipe C)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (variabel C)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "fungsi" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "anggota" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "macro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "tipe" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "variabel" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Baru pada versi %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Berubah pada versi %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Ditinggalkan sejak versi %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "kutipan rangkap %s, contoh lain dalam %s" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "Kutipan [%s] tidak dirujuk." + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "Deklarasi rangkap, juga didefinisikan dalam '%s'.\nDeklarasi adalah '%s'." + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "Parameter Templat" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Throws" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "%s (C++ %s)" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "class" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "union" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "konsep" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "enum" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "enumerator" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "Deklarasi rangkap, juga didefinisikan dalam '%s'.\nNama deklarasi adalah '%s'." + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (fungsi built-in)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (method %s)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (class)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (variabel global atau konstan)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (atribut %s)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Argumen" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (module)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "method" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "data" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "atribut" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "modul" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "duplikasi label persamaan %s, misalnya di %s" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "Math_eqref_format tidak valid: %r" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "keyword" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operator" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "object" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "eksepsi" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "statement" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "fungsi built-in" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Variabel" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Raises" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (di modul %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (variabel built-in)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (di modul %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (class built-in)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (class di %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (method %s.%s)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (method static %s.%s)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (method static %s)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (method class %s.%s)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (method class %s)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (atribut %s.%s)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Indeks Modul Python" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "modul" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Akan ditinggalkan" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "method class" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "method static" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "lebih dari satu target ditemukan untuk referensi silang %r: %s" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (obsolet)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (direktif)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (role)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "direktif" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "opsi-direktif" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "role" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "variabel environment; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "Deskripsi opsi salah bentuk %r, seharusnya terlihat seperti \"opt\", \"-opt args\", \"--opt args\", \"/opt args\" atau \"+opt args\"" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "opsi baris perintah" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "Daftar Istilah kata sulit harus didahului dengan baris kosong" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "Daftar istilah kata sulit tidak boleh dipisahkan oleh garis kosong" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "Daftar istilah kata sulit tampaknya salah format, periksa indentasi" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "daftar istilah" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "token grammar" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "label referensi" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "variabel environment" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "opsi program" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "dokumen" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Indeks Modul" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Pencarian Halaman" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "label rangkap %s, contoh lain dalam %s" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "numfig dinonaktifkan. :numref: diabaikan." + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "tidak ada nomor yang ditetapkan untuk %s:%s" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "tautan tidak memiliki teks: %s" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "numfig_format tidak valid: %s (%r)" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "numfig_format tidak valid: %s" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "konfigurasi baru" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "konfigurasi berubah" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "ekstensi berubah" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "membangun lingkungan bukan versi saat ini" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "direktori sumber telah berubah" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "Lingkungan ini tidak kompatibel dengan pembangun yang dipilih, silakan pilih direktori doctree lain." + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "Gagal memindai dokumen dalam %s: %r" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "Domain %r tidak terdaftar" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "totree referensikan sendiri ditemukan. Diabaikan" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "dokumen tidak termasuk dalam toctree" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "lihat %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "lihat juga %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "tipe entri indeks tidak dikenal %r" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Simbol" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "referensi toctree melingkar terdeteksi, mengabaikan: %s <- %s" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "toctree berisi referensi ke dokumen %r yang tidak memiliki judul: tidak ada tautan yang akan dihasilkan" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "toctree berisi referensi ke dokumen yang dikecualikan %r" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "toctree berisi referensi ke dokumen yang tidak ada %r" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "berkas gambar tidak dapat dibaca: %s" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "berkas gambar %s tidak dapat dibaca: %s" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "berkas unduhan tidak dapat dibaca: %s" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "%s sudah diberi nomor bagian (penomoran bersarang toctree?)" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "Akan membuat berkas %s." + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "\nLihat secara rekursif dalam <MODULE_PATH> untuk modul dan paket Python dan buat \nsatu berkas reST dengan arahan automodule per paket di <OUTPUT_PATH>. \n\n<EXCLUDE_PATTERN> dapat berupa pola berkas dan/atau direktori yang akan \ndikecualikan dari pembuatan. \n\nCatatan: Secara bawaan skrip ini tidak akan menimpa berkas yang sudah dibuat." + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "jalur ke modul ke dokumen" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "Berkas gaya-fnmatch dan/atau pola direktori untuk dikecualikan dari pembuatan" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "direktori untuk menempatkan semua keluaran" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "kedalaman maksimum submodul untuk ditampilkan di TOC (bawaan: 4)" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "menimpa file yang ada" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "ikuti tautan simbolik. Berdaya bila digabungkan dengan collective.recipe.omelette." + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "operasikan skrip tanpa membuat file" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "letakkan dokumentasi untuk setiap modul di halamannya sendiri" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "termasuk modul \"_private\"" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "nama file daftar isi (bawaan: modul)" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "jangan membuat berkas daftar isi" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "jangan membuat judul untuk paket modul/paket (mis. ketika docstrings sudah berisi hal tersebut)" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "letakkan dokumentasi modul sebelum dokumentasi submodul" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "menafsirkan jalur modul sesuai dengan spesifikasi namespaces implisit PEP-0420" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "akhiran berkas (bawaan: rst)" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "menghasilkan proyek penuh dengan sphinx-quickstart" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "menambahkan module_path ke sys.path, digunakan ketika --full diberikan" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "nama proyek (bawaan: nama modul utama)" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "penulis-(penulis) proyek, digunakan ketika --full diberikan" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "versi proyek, digunakan ketika --full diberikan" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "rilis proyek, digunakan ketika --full diberikan, bawaan ke --doc-version" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "opsi ekstensi" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "%s bukan direktori." + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "regex tidak valid %r dalam %s" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "Pengujian cakupan di sumber selesai, lihat hasilnya dalam %(outdir)spython.txt." + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "%r regex tidak valid di coverage_c_regexes" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "modul %s tidak dapat diimpor: %s" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "tidak ada '+' atau '-' dalam opsi '%s'." + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "'%s' bukan opsi yang valid." + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "'%s' bukan opsi pyversion yang valid" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "tipe TestCode tidak valid" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "Pengujian dokumen di sumber selesai, lihat hasil dalam %(outdir)s/output.txt." + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "tidak ada kode/keluaran dalam blok %s pada %s:%s" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "mengabaikan kode dokumen yang tidak valid: %r" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "Pengarahan Graphviz tidak dapat memiliki konten dan argumen nama berkas sekaligus" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "Berkas Graphviz eksternal %r tidak ditemukan atau gagal dibaca" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "Mengabaikan pengarahan \"graphviz\" tanpa konten." + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "dot tidak menghasilkan berkas output: \n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "perintah dot %r tidak dapat dioperasikan (diperlukan untuk keluaran graphviz), periksa pengaturan graphviz_dot" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "dot keluar dengan kesalahan: \n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "graphviz_output_format harus salah satu dari 'png', 'svg', tetapi %r" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "kode dot %r: %s" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[graph: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[graph]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "convert keluar dengan kesalahan: \n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "Perintah LaTeX %r tidak dapat dioperasikan (diperlukan untuk tampilan matematika), periksa pengaturan imgmath_latex" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "%s perintah %r tidak dapat dioperasikan (diperlukan untuk tampilan matematika), periksa pengaturan imgmath_%s" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "tampilkan latex %r: %s" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "inline latex %r: %s" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "Tautan untuk persamaan ini" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "pengimpanan intersphinx telah dipindahkan: %s -> %s" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "memuat penyimpanan intersphinx dari %s..." + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "mengalami beberapa masalah dengan beberapa inventaris, tetapi mereka memiliki alternatif berfungsi:" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "gagal mencapai salah satu inventaris dengan masalah berikut:" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(di %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "(dalam %s)" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "pengenal intersphinx %r bukan string. Diabaikan" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[sumber]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Todo" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "Entri TODO ditemukan: %s" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<original entry>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(<<original entry>> terletak di %s, baris %d.)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "entri asli" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "menyoroti kode modul..." + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[docs]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Kode modul" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Kode sumber untuk %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Tinjauan: kode modul" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Semua modul dimana kode tersedia</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "tanda tangan tidak valid untuk outo %s (%r)" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "kesalahan saat memformat argumen untuk %s: %s" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "atribut hilang %s dalam objek %s" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "tidak tahu modul mana yang akan diimpor untuk autodocumenting %r (coba letakkan pengarahan \"module\" atau \"currentmodule\" dalam dokumen, atau berikan nama modul yang eksplisit)" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "\"::\" dalam nama automodule tidak masuk akal" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "argumen tanda tangan atau anotasi kembalian diberikan untuk automodule %s" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "__all__ harus berupa daftar string, bukan %r (dalam modul %s) -- mengabaikan __all__" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "atribut yang hilang disebutkan dalam :members: atau __all__: modul %s, atribut %s" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "Basis: %s" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "alias dari :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "gagal mengimpor %s" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "gagal mengurai nama %s" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "gagal mengimpor objek %s" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "autosummary menghasilkan file .rst secara internal. Tapi source_suffix Anda tidak mengandung .rst. Dilewati." + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "[autosummary] menghasilkan autosummary untuk: %s" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "[autosummary] menulis ke %s" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "\nHasilkan ReStructuredText menggunakan pengarahan autosummary.\n\nsphinx-autogen adalah tampilan depan ke sphinx.ext.autosummary.generate. Ini menghasilkan \nfile reStructuredText dari pengarahan autosummary yang terkandung dalam \nfile input yang diberikan.\n\nFormat pengarahan autosummary didokumentasikan dalam \nmodul ``sphinx.ext.autosummary`` dan dapat dibaca menggunakan::\n\n pydoc sphinx.ext.autosummary\n" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "berkas sumber untuk menghasilkan file rST untuk" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "direktori untuk menempatkan semua keluaran dalam" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "akhiran bawaan untuk berkas (bawaan: %(default)s)" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "direktori templat ubahsuai (bawaan: %(default)s)" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "mendokumentasikan anggota yang diimpor (bawaan: %(default)s)" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "Argumen Kata Kunci" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "Contoh" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "Contoh-contoh" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "Catatan" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "Parameter lainnya" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "Referensi" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "Peringatkan" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "Hasil" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Pehatian" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Hati-hati" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Bahaya" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Kesalahan" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Petunjuk" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Penting" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Catatan" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Lihat juga" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Tip" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Peringatan" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "lanjutan dari halaman sebelumnya" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "berlanjut ke halaman berikutnya" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "Non-abjad" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "Angka" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "laman" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "Daftar Isi" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Pencarian" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Go" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Lihat Sumber" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Tinjauan" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Selamat Datang! Ini adalah" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "dokumentasi untuk" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "terakhir diperbarui" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Indeks dan tabel:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Daftar Isi Lengkap" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "daftar semua seksi dan subseksi" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "pencarian pada dokumentasi ini" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Index Modul Global" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "akses cepat semua modul" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "semua fungsi, class, term" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Index – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Index penuh dalam satu halaman" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Index halaman berdasarkan huruf" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "dapat menjadi besar" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navigasi" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Pencarian dalam %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Tentang dokumen ini" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Hak Cipta" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Hak cipta</a> %(copyright)s." + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© Hak cipta %(copyright)s." + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Terakhir diperbarui pada %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Dibuat menggunakan <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Pencarian %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Topik sebelumnya" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "bab sebelum" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Topik berikutnya" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "bab berikutnya" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Tolong aktifkan JavaScript untuk melakukan pencarian.\n " + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "Mencari beberapa kata hanya menunjukkan kecocokan yang mengandung\n    semua kata." + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "pencarian" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Hasil Pencarian" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "Tidak ada dokumen yang cocok dengan pencarian anda. Pastikan semua kata ditulis dengan benar dan sudah memilih cukup kategori." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Pencarian cepat" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Halaman Ini" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Perubahan pada Versi %(version)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Daftar perubahan dibuat otomatis untuk versi %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Perubahan library" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Perubahan API C" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Perubahan lain" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Link permanen untuk headline ini" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Link permanen untuk definisi ini" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Sembunyikan Hasil Pencarian" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "Pencarian" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Penyiapkan pencarian..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "Pencarian selesai, menemukan %s halaman yang cocok dengan kueri pencarian." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", di" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Buka sidebar" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Tutup sidebar" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Konten" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "4 kolom berdasarkan indeks ditemukan. Ini mungkin bug ekstensi yang Anda gunakan: %r" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "Catatan kaki [%s] tidak dirujuk." + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "Catatan kaki [#] tidak dirujuk." + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "referensi catatan kaki yang tidak konsisten dalam pesan yang diterjemahkan. asli: {0}, diterjemahkan: {1}" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "referensi yang tidak konsisten dalam pesan yang diterjemahkan. asli: {0}, diterjemahkan: {1}" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "referensi kutipan tidak konsisten dalam pesan yang diterjemahkan. asli: {0}, diterjemahkan: {1}" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "referensi istilah yang tidak konsisten dalam pesan yang diterjemahkan. asli: {0}, diterjemahkan: {1}" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "lebih dari satu target ditemukan untuk referensi silang 'any' %r: bisa %s" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "%s:%s target referensi tidak ditemukan: %%(target)s" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "%r target referensi tidak ditemukan: %%(target)s" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "Tidak dapat mengambil gambar jarak jauh: %s [%d]" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "Tidak dapat mengambil gambar jarak jauh: %s [%s]" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "Format gambar tidak dikenal: %s..." + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "karakter sumber undecodable, menggantinya dengan \"?\": %r" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "dilewati" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "gagal" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "kesalahan membaca: %s, %s" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "kesalahan menulis: %s, %s" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "Format tanggal tidak valid. Kutip string dengan kutipan tunggal jika Anda ingin menampilkannya secara langsung: %s" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "toctree berisi ref ke berkas yang tidak ada %r" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "pengecualian saat mengevaluasi hanya ekspresi pengarahan: %s" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "Dukungan untuk mengevaluasi sintaks Python 2 sudah usang dan akan dihapus di Sphinx 4.0. Konversi %s ke sintaksis Python 3." + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "peran bawaan %s tidak ditemukan" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "numfig_format tidak didefinisikan untuk %s" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "Tidak ada ID apa pun yang ditugaskan untuk simpul %s" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Link permanen untuk table ini" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Link permanen untuk kode ini" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Link permanen untuk gambar ini" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "Tautan ke daftar isi ini" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "Tidak dapat memperoleh ukuran gambar. :scale: option diabaikan." + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "%r toplevel_sectioning tidak diketahui untuk kelas %r" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr ":maxdepth: terlalu besar, diabaikan." + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "judul dokumen bukan simpul Text tunggal" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "simpul judul tidak ditemui dalam bagian, topik, tabel, peringatan atau sisi bilah" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Catatan kaki" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "opsi tabularcolumns dan :widths: opsi diberikan bersamaan. :widths: diabaikan." + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "unit dimensi %s tidak valid. Diabaikan" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "entri indeks tidak diketahui ditemukan tipe %s" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[gambar: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[gambar]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "keterangan tidak di dalam gambar." + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "tipe simpul tidak diterapkan: %r" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "tipe simpul tidak dikenal: %r" diff --git a/sphinx/sphinx/locale/it/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/it/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..3a75265 --- /dev/null +++ b/sphinx/sphinx/locale/it/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "it", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", in ", "About these documents": "A proposito di questi documenti", "Automatically generated list of changes in version %(version)s": "Lista delle modifiche generata automaticamente nella versione %(version)s", "C API changes": "Modifiche nelle API C", "Changes in Version %(version)s — %(docstitle)s": "Cambiamenti nella Versione %(version)s — %(docstitle)s", "Collapse sidebar": "Comprimi la barra laterale", "Complete Table of Contents": "Tabella dei contenuti completa", "Contents": "Contenuti", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Creato con <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Espandi la barra laterale", "Full index on one page": "Indice completo in una pagina", "General Index": "Indice generale", "Global Module Index": "Indice dei moduli", "Go": "Vai", "Hide Search Matches": "Nascondi i risultati della ricerca", "Index": "Indice", "Index – %(key)s": "Indice – %(key)s", "Index pages by letter": "Indice delle pagine per lettera", "Indices and tables:": "Indici e tabelle:", "Last updated on %(last_updated)s.": "Ultimo aggiornamento %(last_updated)s.", "Library changes": "Modifiche nella libreria", "Navigation": "Navigazione", "Next topic": "Argomento successivo", "Other changes": "Altre modifiche", "Overview": "Sintesi", "Permalink to this definition": "Link a questa definizione", "Permalink to this headline": "Link a questa intestazione", "Please activate JavaScript to enable the search\n functionality.": "Attiva JavaScript per abilitare la funzione\u23ce\ndi ricerca.", "Preparing search...": "Preparo la ricerca...", "Previous topic": "Argomento precedente", "Quick search": "Ricerca veloce", "Search": "Cerca", "Search Page": "Cerca", "Search Results": "Risultati della ricerca", "Search finished, found %s page(s) matching the search query.": "Ricerca completata, trovata/e %s pagina/e corrispondenti.", "Search within %(docstitle)s": "Cerca in %(docstitle)s", "Searching": "Cerca", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Mostra sorgente", "Table of Contents": "", "This Page": "Questa pagina", "Welcome! This is": "Benvenuto! Questa \u00e8", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "La tua ricerca non corrisponde a nessun documento. Verifica che tutte le parole siano scritte correttamente e di aver scelto un numero sufficiente di categorie.", "all functions, classes, terms": "tutte le funzioni, classi e moduli", "can be huge": "pu\u00f2 essere enorme", "last updated": "ultimo aggiornamento", "lists all sections and subsections": "elenca l'insieme delle sezioni e sottosezioni", "next chapter": "capitolo successivo", "previous chapter": "capitolo precedente", "quick access to all modules": "accesso veloce ai moduli", "search": "cerca", "search this documentation": "cerca in questa documentazione", "the documentation for": "la documentazione per"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/it/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/it/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..bf9e5c3 --- /dev/null +++ b/sphinx/sphinx/locale/it/LC_MESSAGES/sphinx.po @@ -0,0 +1,3470 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Denis Cappellin <denis@cappell.in>, 2018 +# Paolo Cavallini <cavallini@faunalia.it>, 2013-2017 +# Roland Puntaier <roland.puntaier@chello.at>, 2013 +# Sandro Dentella <sandro@e-den.it>, 2008 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Italian (http://www.transifex.com/sphinx-doc/sphinx-1/language/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "fatto" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "terminato con problemi" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "Sezione %s" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "Fig. %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Tabella %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "Listato %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "il primary_domain %r non è stato trovato, tralasciato." + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Builtins" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Al livello del modulo" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (in " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d %b %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Indice generale" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "indice" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "successivo" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "precedente" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s documentazione" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Indice" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Release" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "Didascalia non valida: %s" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "Impossibile usare contemporaneamente le opzioni \"%s\" e \"%s\"" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Autore della sezione: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Autore del modulo: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Autore del codice: " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Autore: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parametri" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Ritorna" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Tipo di ritorno" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (funzione C)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (membro C )" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (macro C)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (tipo C)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (variabile C)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "funzione" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "membro" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "macro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "tipo" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "variabile" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Nuovo nella versione %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Cambiato nella versione %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Deprecato dalla versione %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "Parametri del modello" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Solleva" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "classe" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "concetto" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "enum" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "enumeratore" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (funzione built-in)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s metodo)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (classe)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (variabile globale o costante)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s attributo)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Parametri" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (modulo)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "metodo" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "dati" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "attributo" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "modulo" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "etichetta dell'equazione %s duplicata, altra istanza in %s" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "keyword" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operatore" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "oggetto" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "eccezione" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "statement" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "funzione built-in" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Variabili" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Solleva" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (nel modulo %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (variabile built-in)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (nel modulo %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (classe built-in)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (classe in %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s metodo)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s metodo statico)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s metodo statico)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (%s.%s metodo della classe)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (%s metodo della classe)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s attributo)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Indice del modulo Python" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "moduli" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Deprecato" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "metodo della classe" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "metodo statico" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (deprecato)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (direttiva)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (ruolo)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "direttiva" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "ruolo" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "variabile d'ambiente, %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "voce del glossario" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "elemento grammaticale" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "etichetta di riferimento" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "variabile d'ambiente" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "opzione del programma" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "documento" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Indice dei moduli" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Cerca" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "vedi %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "vedi anche %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Simboli" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "manca '+' or'-' nell'opzione '%s'." + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "'%s' non è un'opzione valida." + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[grafico: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[grafico]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "Permalink a questa equazione" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(in %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[sorgente]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Da fare" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<elemento originale>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(L'<<elemento originale>> si trova in %s, linea %d.)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "riga originale" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[documenti]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Codice del modulo" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Codice sorgente per %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Vista generale: codice del modulo" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Tutti i moduli di cui è disponibile il codice</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr " Basi: %s" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "alias per :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "Argomenti parole chiave" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "Esempi" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Attenzione" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Attenzione" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Pericolo" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Errore" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Suggerimento" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Importante" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Nota" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Vedi anche" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Suggerimento" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Avvertimento" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "continua dalla pagina precedente" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "pagina" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Cerca" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Vai" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Mostra sorgente" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Sintesi" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Benvenuto! Questa è" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "la documentazione per" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "ultimo aggiornamento" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Indici e tabelle:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Tabella dei contenuti completa" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "elenca l'insieme delle sezioni e sottosezioni" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "cerca in questa documentazione" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Indice dei moduli" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "accesso veloce ai moduli" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "tutte le funzioni, classi e moduli" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Indice – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Indice completo in una pagina" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Indice delle pagine per lettera" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "può essere enorme" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navigazione" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Cerca in %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "A proposito di questi documenti" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Copyright" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© Copyright %(copyright)s." + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Ultimo aggiornamento %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Creato con <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Cerca %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Argomento precedente" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "capitolo precedente" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Argomento successivo" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "capitolo successivo" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Attiva JavaScript per abilitare la funzione⏎\ndi ricerca." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "cerca" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Risultati della ricerca" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "La tua ricerca non corrisponde a nessun documento. Verifica che tutte le parole siano scritte correttamente e di aver scelto un numero sufficiente di categorie." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Ricerca veloce" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Questa pagina" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Cambiamenti nella Versione %(version)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Lista delle modifiche generata automaticamente nella versione %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Modifiche nella libreria" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Modifiche nelle API C" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Altre modifiche" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Link a questa intestazione" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Link a questa definizione" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Nascondi i risultati della ricerca" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "Cerca" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Preparo la ricerca..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "Ricerca completata, trovata/e %s pagina/e corrispondenti." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", in " + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Espandi la barra laterale" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Comprimi la barra laterale" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Contenuti" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Link a questa tabella" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Link a questo codice" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Link a questa immagine" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "Link a questo indice" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Note a piè di pagina" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[immagine: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[immagine]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/ja/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/ja/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..0b9dc3f --- /dev/null +++ b/sphinx/sphinx/locale/ja/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "ja", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", in ", "About these documents": "\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u3064\u3044\u3066", "Automatically generated list of changes in version %(version)s": "\u30d0\u30fc\u30b8\u30e7\u30f3 %(version)s \u306e\u5909\u66f4\u70b9\uff08\u3053\u306e\u30ea\u30b9\u30c8\u306f\u81ea\u52d5\u751f\u6210\u3055\u308c\u3066\u3044\u307e\u3059\uff09", "C API changes": "C API \u306b\u95a2\u3059\u308b\u5909\u66f4", "Changes in Version %(version)s — %(docstitle)s": "\u30d0\u30fc\u30b8\u30e7\u30f3 %(version)s \u306e\u5909\u66f4\u70b9 — %(docstitle)s", "Collapse sidebar": "\u30b5\u30a4\u30c9\u30d0\u30fc\u3092\u305f\u305f\u3080", "Complete Table of Contents": "\u7dcf\u5408\u76ee\u6b21", "Contents": "\u30b3\u30f3\u30c6\u30f3\u30c4", "Copyright": "\u8457\u4f5c\u6a29", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s \u3067\u751f\u6210\u3057\u307e\u3057\u305f\u3002", "Expand sidebar": "\u30b5\u30a4\u30c9\u30d0\u30fc\u3092\u5c55\u958b", "Full index on one page": "\u7dcf\u7d22\u5f15", "General Index": "\u7dcf\u5408\u7d22\u5f15", "Global Module Index": "\u30e2\u30b8\u30e5\u30fc\u30eb\u7dcf\u7d22\u5f15", "Go": "\u691c\u7d22", "Hide Search Matches": "\u691c\u7d22\u7d50\u679c\u3092\u96a0\u3059", "Index": "\u7d22\u5f15", "Index – %(key)s": "\u7d22\u5f15 – %(key)s", "Index pages by letter": "\u982d\u6587\u5b57\u5225\u7d22\u5f15", "Indices and tables:": "\u7d22\u5f15\u3068\u8868\u4e00\u89a7:", "Last updated on %(last_updated)s.": "\u6700\u7d42\u66f4\u65b0: %(last_updated)s", "Library changes": "\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u95a2\u3059\u308b\u5909\u66f4", "Navigation": "\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3", "Next topic": "\u6b21\u306e\u30c8\u30d4\u30c3\u30af\u3078", "Other changes": "\u305d\u306e\u4ed6\u306e\u5909\u66f4", "Overview": "\u6982\u8981", "Permalink to this definition": "\u3053\u306e\u5b9a\u7fa9\u3078\u306e\u30d1\u30fc\u30de\u30ea\u30f3\u30af", "Permalink to this headline": "\u3053\u306e\u30d8\u30c3\u30c9\u30e9\u30a4\u30f3\u3078\u306e\u30d1\u30fc\u30de\u30ea\u30f3\u30af", "Please activate JavaScript to enable the search\n functionality.": "\u691c\u7d22\u6a5f\u80fd\u3092\u4f7f\u3046\u306b\u306f JavaScript \u3092\u6709\u52b9\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002", "Preparing search...": "\u691c\u7d22\u3092\u6e96\u5099\u3057\u3066\u3044\u307e\u3059...", "Previous topic": "\u524d\u306e\u30c8\u30d4\u30c3\u30af\u3078", "Quick search": "\u30af\u30a4\u30c3\u30af\u691c\u7d22", "Search": "\u691c\u7d22", "Search Page": "\u691c\u7d22\u30da\u30fc\u30b8", "Search Results": "\u691c\u7d22\u7d50\u679c", "Search finished, found %s page(s) matching the search query.": "\u691c\u7d22\u304c\u5b8c\u4e86\u3057\u3001 %s \u30da\u30fc\u30b8\u898b\u3064\u3051\u307e\u3057\u305f\u3002", "Search within %(docstitle)s": "%(docstitle)s \u5185\u3092\u691c\u7d22", "Searching": "\u691c\u7d22\u4e2d", "Searching for multiple words only shows matches that contain\n all words.": "\u8907\u6570\u306e\u5358\u8a9e\u3092\u691c\u7d22\u3059\u308b\u3068\u3001\u6b21\u3092\u542b\u3080\u4e00\u81f4\u306e\u307f\u304c\u8868\u793a\u3055\u308c\u307e\u3059\n \u00a0\u00a0\u00a0 \u3059\u3079\u3066\u306e\u7528\u8a9e\u3002", "Show Source": "\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u8868\u793a", "Table of Contents": "\u76ee\u6b21", "This Page": "\u3053\u306e\u30da\u30fc\u30b8", "Welcome! This is": "Welcome! This is", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u691c\u7d22\u3057\u305f\u6587\u5b57\u5217\u306f\u3069\u306e\u6587\u66f8\u306b\u3082\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u3059\u3079\u3066\u306e\u5358\u8a9e\u304c\u6b63\u78ba\u306b\u8a18\u8ff0\u3055\u308c\u3066\u3044\u308b\u304b\u3001\u3042\u308b\u3044\u306f\u3001\u5341\u5206\u306a\u30ab\u30c6\u30b4\u30ea\u30fc\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002", "all functions, classes, terms": "\u95a2\u6570\u3001\u30af\u30e9\u30b9\u304a\u3088\u3073\u7528\u8a9e\u7dcf\u89a7", "can be huge": "\u5927\u304d\u3044\u5834\u5408\u304c\u3042\u308b\u306e\u3067\u6ce8\u610f", "last updated": "\u6700\u7d42\u66f4\u65b0", "lists all sections and subsections": "\u7ae0\uff0f\u7bc0\u4e00\u89a7", "next chapter": "\u6b21\u306e\u7ae0\u3078", "previous chapter": "\u524d\u306e\u7ae0\u3078", "quick access to all modules": "\u5168\u30e2\u30b8\u30e5\u30fc\u30eb\u65e9\u898b\u8868", "search": "\u691c\u7d22", "search this documentation": "\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u691c\u7d22", "the documentation for": "the documentation for"}, "plural_expr": "0"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/ja/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/ja/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..bec0732 --- /dev/null +++ b/sphinx/sphinx/locale/ja/LC_MESSAGES/sphinx.po @@ -0,0 +1,3480 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# shirou - しろう <shirou.faw@gmail.com>, 2013 +# Akitoshi Ohta <fire.kuma8@gmail.com>, 2011 +# tomo, 2018 +# Hisahiro Ohmura, 2017 +# Kouhei Sutou <kou@clear-code.com>, 2011 +# sutefu7, 2019-2020 +# shirou - しろう <shirou.faw@gmail.com>, 2017 +# Taizo Ito <taizo.ito@hennge.com>, 2019 +# Takayuki SHIMIZUKAWA <shimizukawa@gmail.com>, 2013-2016 +# Takayuki SHIMIZUKAWA <shimizukawa@gmail.com>, 2016-2017,2019 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016-2017,2019 +# Tetsuo Koyama <tkoyama010@gmail.com>, 2020 +# tomo, 2019 +# shirou - しろう <shirou.faw@gmail.com>, 2014 +# Yasushi Masuda <whosaysni@gmail.com>, 2008 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-23 04:15+0000\n" +"Last-Translator: sutefu7\n" +"Language-Team: Japanese (http://www.transifex.com/sphinx-doc/sphinx-1/language/ja/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: ja\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "conf.py が設定ディレクトリに存在しません (%s)" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "ソースディレクトリが存在しません (%s)" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "出力先ディレクトリにはソースディレクトリと異なるディレクトリを指定してください" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "Sphinx v%s を実行中" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "セキュリティ上の理由から、macOSおよびpython3.8以降では並列モードが無効になっています。 詳細については https://github.com/sphinx-doc/sphinx/issues/6803 をご覧ください。" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "このプロジェクトはSphinx v%s以降のバージョンでなければビルドできません。" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "出力先ディレクトリを作成しています" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "拡張機能のセットアップ中 %s:" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "conf.pyにある'setup'はPythonのcallableではありません。定義を修正してcallableである関数にしてください。これはconf.pyがSphinx拡張として動作するのに必要です。" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "翻訳カタログをロードしています [%s]... " + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "完了" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "翻訳が用意されていません" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "保存された環境データを読み込み中" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "失敗: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "ビルダーが選択されていないので、デフォルトの html を使用します" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "成功" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "完了(問題あり)" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "警告%s、%sをビルドします(警告はエラーとして扱われます)。" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "警告%s、%sをビルドします(警告はエラーとして扱われます)。" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "ビルド %s, %s warning." + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "ビルド %s, %s 警告." + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "ビルド %s." + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "nodeクラス %r は既に登録されています。visitor関数は上書きされます" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "ディレクティブ %r は既に登録されています。ディレクティブは上書きされます" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "ロール %r は既に登録されています。ロールは上書きされます" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "拡張 %s は並列読み込みが可能かどうかを宣言していないため、おそらく並列読み込みに対応していないでしょう。拡張の実装者に連絡して、明示してもらってください。" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "%s拡張は並列読み込みに対して安全ではありません" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "拡張 %s は並列書き込みが可能かどうかを宣言していないため、おそらく並列書き込みに対応していないでしょう。拡張の実装者に連絡して、明示してもらってください。" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "%s拡張は並列書き込みに対して安全ではありません" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "直列で %sします" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "設定値の辞書 %r は上書きないため無視されました (%r を使って個別に設定してください)" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "%r は設定値 %r の正しい値ではないため無視されました" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "%r は正しい型ではないため無視されました" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "不明な設定値 %r による上書きは無視されました" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "%s という設定値はありません" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "設定値 %r は既に登録済みです" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "設定ファイルに文法エラーが見つかりました: %s\n" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "設定ファイル(あるいはインポートしたどれかのモジュール)がsys.exit()を呼びました" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "設定ファイルにプログラム上のエラーがあります:\n\n%s" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "設定値 `source_suffix' に `%r' が指定されましたが、文字列、文字列のリスト、辞書、のいずれかを指定してください。" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "%s 章" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "図 %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "表 %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "リスト %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr " 設定値 `{name}` に `{current}` が指定されましたが、 {candidates} のいずれかを指定してください。" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "設定値 `{name}' に `{current.__name__}' 型が指定されていますが、 {permitted} 型を指定してください。" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "設定値 `{name}' に `{current.__name__}' 型が指定されています。デフォルト値は `{default.__name__}' です。" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "設定値 %r にstr型で非アスキー文字列が設定されました。これはUnicodeエラーを引き起こす可能性があります。 %r のようにUnicode型を使って下さい。" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "primary_domain %r が見つかりません。無視します。" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "Sphinx-2.0から、 master_doc のデフォルト値として \"index\" を使用します。 \"master_doc = 'contents'\" をconf.pyに設定してください。" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "イベント %r はすでに登録されています" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "不明なイベント名: %s" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "needs_extensions設定で %s 拡張が要求されていますが、その拡張がありません。" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "このプロジェクトは拡張 %s の %s 以降のバージョンが必要なため、現在のバージョン(%s)ではビルドできません。" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "Pygments に %r というlexerがありません" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "リテラルブロックを \"%s\" として解釈できませんでした。ハイライト処理をスキップします。" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "ドキュメントを読めません。無視します。" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "ビルダークラス %s には\"name\"属性がありません" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "ビルダー %r (モジュール %s) がすでに登録されています" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "ビルダー名 %s は登録されておらず、entry pointにもありません" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "ビルダー名 %s は登録されていません" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "ドメイン %s はすでに登録されています" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "ドメイン %s はまだ登録されていません" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "ディレクティブ %r は既に%sドメインに登録されています" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "ロール %r は既にドメイン%sに登録されています" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "インデックス %r はすでに%sドメインに登録されています" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "object_type %r はすでに登録されています" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "classref_type %r はすでに登録されています" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "source_suffix %r はすでに登録されています" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "%r のsource_parserはすでに登録されています" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "%s のsource_parserは登録されていません" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "%r のTranslatorはすでに登録されています" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "add_node() のキーワード引数は (visit, depart) の形式で関数をタプルで指定してください: %r=%r" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "enumerable_node %r はすでに登録されています" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "数式レンダラー %s はすでに登録されています" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "拡張 %r はSphinxのバージョン%sでSphinxに統合されています。この拡張は無視されます。" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "元の例外:\n" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "拡張 %s をimportできません" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "拡張 %r には setup() 関数がありません。これは本当にSphinx拡張ですか?" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "このプロジェクトで使われている拡張 %s はSphinx v%s 以降が必要なため、現在のバージョンではビルドできません。" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "拡張 %r のsetup()関数が、対応していないオブジェクトを返しました。Noneまたはメタデータ辞書を返してください" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "テーマ %r に \"theme\" 設定がありません" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "テーマ %r に \"inherit\" 設定がありません" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "テーマ %r が %r から継承されていますが、見つかりませんでした" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "設定 %s.%s がテーマ設定にありません" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "サポートされていないテーマオプション %r が指定されました" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "テーマパス上のファイル %r は正しいzipファイルではないか、テーマを含んでいません" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "sphinx_rtd_theme への依存はバージョン1.4.0で解除されました。手動でインストールを行ってください(pip install sphinx_rtd_theme)" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "テーマ %r がありません(theme.confが見つからない?)" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "%sビルダー向けの画像形式が見つかりません: %s (%s)" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "%sビルダー向けの画像形式が見つかりません: %s" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "ビルド中 [mo]: " + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "出力中..." + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "全%d件のpoファイル" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "指定された %d 件のpoファイル" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "更新された %d 件のpoファイル" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "全てのソースファイル" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "コマンドラインに指定されたファイル %r はソースディレクトリ以下にないため無視されます" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "コマンドラインに指定されたファイル %r がないため無視されます" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "コマンドラインで指定された%d件のソースファイル" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "更新された %d 件のソースファイル" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "ビルド中 [%s]: " + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "更新されたファイルを探しています... " + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "%d 件見つかりました" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "見つかりませんでした" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "環境データを保存中" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "整合性をチェック中" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "更新が必要な対象はありませんでした" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "環境データを更新中" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "%s 件追加, %s 件更新, %s 件削除" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "ソースを読み込み中..." + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "ワーカーの終了を待っています..." + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "書き込むdocname: %s" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "preparing documents" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "Tocエントリーが重複しています: %s" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "画像をコピー中... " + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "画像ファイル %r をPILで読み込めないため、そのままコピーします" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "画像ファイル %r をコピーできません: %s" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "画像ファイル %r を書き込めません: %s" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "Pillowがインストールされていません。代わりに画像をコピーします" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "ファイル %s を書き込み中..." + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "不明なmimetype %sのため無視します" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "ファイルは%(outdir)sにあります" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "バージョン %s での変更はありません" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "概要ファイルを書き出し中..." + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "組み込み" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "モジュールレベル" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "ソースファイルをコピー中..." + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "Changelog作成中に %r を読み込めませんでした" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "dummyビルダーはファイルを出力しません" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "ePubファイルは%(outdir)sにあります。" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "EPUB3出力では設定値 \"epub_language\" (あるいは \"language\") の指定が必要です" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "EPUB3では設定値 \"epub_uid\" はXML NAMEにするべきです" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "EPUB3出力では設定値 \"epub_title\" (あるいは \"html_title\") の指定が必要です" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "EPUB3出力では設定値 \"epub_author\" の指定が必要です" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "EPUB3出力では設定値 \"epub_contributor\" が必要です" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "EPUB3出力では設定値 \"epub_description\" が必要です" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "EPUB3出力では設定値 \"epub_publisher\" の指定が必要です" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "EPUB3出力では設定値 \"epub_copyright\" (あるいは \"copyright\") の指定が必要です" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "EPUB3出力では設定値 \"epub_identifier\" の指定が必要です" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "EPUB3出力では設定値 \"version\" が必要です" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "無効な css_file %r は無視されました" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "メッセージカタログは%(outdir)sにあります。" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "指定された %d 件のテンプレートファイル" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "テンプレートの読み込み中..." + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "メッセージカタログを出力中... " + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "上記の出力結果、または %(outdir)s /output.txt を見てエラーを確認してください" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "アンカー '%s' が見つかりません" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "リンクが切れています: %s (%s)" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "マニュアルページは %(outdir)s にあります。" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "設定値 \"man_pages\" が見つかりません。マニュアルページは書かれません" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "書き込み中" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "設定値 \"man_pages\" が不明なドキュメント %s を参照しています" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "HTML ページは%(outdir)sにあります。" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "ドキュメントを1ページにまとめています" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "追加のファイルを出力" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "Texinfoファイルは%(outdir)sにあります。" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "\nmakeinfo コマンドで処理するため、そのディレクトリで 'make' を実行してください。\n(これを自動的に行うには、ここで 'make info' を使用してください)。" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "設定値 \"texinfo_documents\" が見つかりません。ドキュメントは書き込まれません" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "設定値 \"texinfo_documents\" は、不明なドキュメント %s を参照しています" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "処理中 %s" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "参照を解決しています..." + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (in " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "Texinfo 関連ファイルをコピーしています" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "Makefile の書き込みエラー: %s" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "テキストファイルは%(outdir)sにあります。" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "ファイル書き込みエラー %s: %s" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "XMLファイルは%(outdir)sにあります。" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "pseudo-XMLファイルは%(outdir)sにあります。" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "build info ファイルが壊れています: %r" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "HTMLページは%(outdir)sにあります。" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "build info ファイルの読み込みに失敗しました: %r" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%Y年%m月%d日" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "html_use_opensearch 設定値は文字列で指定してください" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "総合索引" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "索引" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "次へ" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "前へ" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "索引を生成中" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "追加のページを出力中" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "ダウンロードファイルをコピー中..." + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "ダウンロードファイル %r をコピーできません: %s" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "静的ファイルをコピー中... " + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "静的ファイル %r をコピーできません" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "extraファイルをコピー中" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "extraファイル %r をコピーできませんでした" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "build info ファイル %r の出力に失敗しました" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "検索インデックスを読み込めず、ドキュメントビルドの一部が不完全です。" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "ページ %s がhtml_sidebarsの複数のパターンに一致しました: %r と %r" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "ページ%sの読み込み中にUnicodeエラーが発生しました。非アスキー文字を含む設定値は全てUnicode文字列にしてください。" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "%sページのレンダリング中にエラーが発生しました。\n理由: %r " + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "オブジェクト インベントリを出力" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "%s の検索インデックスを出力" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "無効な js_file %r は無視されました" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "複数の math_renderer が登録されています。しかし math_renderer は選択されていません。" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "不明な math_renderer %r が指定されました。" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "html_extra_path %r が見つかりません" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "html_extra_path %r がoutdir内に配置されます" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "html_static_path %r が見つかりません" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "html_static_path %r がoutdir内に配置されます" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "ロゴファイル %r がありません" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "favicon ファイル %r がありません" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s ドキュメント" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "LaTeXファイルは%(outdir)sにあります。" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "\n(pdf)latex コマンドで処理するために、そのディレクトリで 'make' を実行してください。\n(これを自動的に行うには、ここで 'make latexpdf' を使用してください)。" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "設定値 \"latex_documents\" が見つかりません。ドキュメントは書き込まれません" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "設定値 \"latex_documents\" は、不明なドキュメント %s を参照しています" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "索引" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "リリース" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "%r 言語向けの 既知の Babel オプションはありません" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "TeX 関連ファイルをコピーしています" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "TeX 関連ファイルをコピー中..." + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "追加のファイルをコピーしています" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "不明な設定値 latex_elements[%r] は無視されました。" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "%r に \"theme\" 設定がありません" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "%r に \"%s\" 設定がありません" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "ビルド中に例外が発生しました。デバッガを起動します:" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "割り込まれました!" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "reST マークアップエラー:" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "エンコードエラー:" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "完全なトレースバックを%sに保存しました。問題を開発者に報告するときに添付してください。" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "再起呼び出しエラー:" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "この例外エラーは、非常に大きな、または深くネストされたソースファイルで発生する可能性があります。再帰処理の呼び出しの上限値 1000 は conf.py で変更できますが、慎重に行ってください。" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "例外が発生しました" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "次期バージョンでのエラーメッセージ改善のために、ユーザーエラーの場合にも報告してください。" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "バグ報告はこちらにお願いします <https://github.com/sphinx-doc/sphinx/issues> 。ご協力ありがとうございます!" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "ジョブ番号は正数でなければなりません" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "詳細は <http://sphinx-doc.org/> をご覧ください。" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "\nソースファイルからドキュメントを生成します。\n\nsphinx-build は、SOURCEDIR 内のファイルをもとにドキュメントを生成し、\nOUTPUTDIR 内に配置します。またコンフィグ\n設定用に SOURCEDIR 内から\n 'conf.py' を探します。'sphinx-quickstart' ツールを使うと\n 'conf.py' を含むテンプレートファイルを生成することができます。\n\nsphinx-build は、さまざまな形式のドキュメントを作成することができます。フォーマットは、\nコマンドラインでビルダー名を指定して選択します。デフォルトは\nHTML です。ビルダーはドキュメント化処理に関連した他のタスクも実行できます。\n\nデフォルトでは、古いものはすべてビルドされています。個別にファイル名を指定することで、\n選択したファイルのみ出力することもできます。\n" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "ドキュメントソースファイルへのパス" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "出力先ディレクトリへのパス" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "再構築するための設定ファイルのリスト。 -a が指定されている場合は無視されます" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "一般的なオプション" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "使用するビルダー(デフォルト:html)" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "すべてのファイルに書き込む(デフォルト: 新規ファイルまたは変更されたファイルのみ)" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "保存された環境は使わず、常に全てのファイルを読み込む" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "キャッシュされた環境とDoctreeファイルへのパス(デフォルト:OUTPUTDIR/.doctrees)" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "可能な場合、ビルドを N 個のプロセスで並列実行する(特別な値 \"auto\" は N を cpu-count に設定する)" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "設定ファイル(conf.py)がある場所のパス(デフォルト:SOURCEDIRと同じ場所)" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "設定ファイルを使用せず、-Dオプションのみを使用" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "設定ファイルの設定を上書きする" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "HTMLテンプレートに値を渡す" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "定義タグ: TAG ブロック\"のみ\"含む" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "nit-picky モード。不足しているすべての参照について警告する" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "コンソール出力オプション" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "精度の増加(繰り返し可能)" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "標準出力には出力せず、標準エラー出力に警告を出すのみ" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "何も出力せず、警告もしない" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "色分けで出力する(デフォルト:自動検出)" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "色分けの出力をしない(デフォルト:自動検出)" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "指定ファイルに警告(およびエラー)を書き込む" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "警告をエラーとして扱う" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "-Wを指定すると、警告が表示されたときは実行を続ける" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "例外時にフルトレースバックを表示する" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "例外が発生したときにPdbを実行する" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "ファイル %r が見つかりません" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "-aオプションとファイル名を組み合わせることはできません" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "警告ファイル %r を開けません: %s" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "-Dオプション引数は name = value の形式でなければなりません" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "-Aオプション引数は name = value の形式でなければなりません" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "モジュールから自動的に docstring を挿入する" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "doctest ブロック内のコードスニペットを自動的にテストする" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "異なるプロジェクトのSphinxドキュメント間のリンク" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "ビルド時に表示または非表示にできる \"todo\" エントリを書く" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "ドキュメントの適用範囲を確認する" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "PNG または SVG 画像としてレンダリングされた数学を含む" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "MathJax によってブラウザにレンダリングされた数学を含む" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "設定値に基づくコンテンツの条件付き包含" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "文書化された Python オブジェクトのソースコードへのリンクを含める" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "GitHub ページにドキュメントを公開するための .nojekyll ファイルを作成する" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "有効なパス名を入力してください。" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "何か入力してください。" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "%sのいずれかを入力してください。 " + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "'y' または 'n' を入力してください。" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "ファイルの拡張子を入力してください。例: '.rst' または '.txt'。" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "*注:ASCII 以外の文字が入力され、端末のエンコードが不明です -- UTF-8またはLatin-1 を想定しています。" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "Sphinx %s クイックスタートユーティリティへようこそ。" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "以下の設定値を入力してください(Enter キーのみ押した場合、\nかっこで囲まれた値をデフォルト値として受け入れます)。" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "選択されたルートパス: %s" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "ドキュメントのルートパスを入力してください。" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "ドキュメントのルートパス" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "エラー:選択されたルートパスに既存の conf.py が見つかりました。" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "sphinx-quickstart は、既存の Sphinx プロジェクトを上書きしません。" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "新しいルートパスを入力してください(または Enter を押すことで終了します)。" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "Sphinx 出力用のビルドディレクトリを配置する方法は2つあります。\nルートパス内にある \"_build\" ディレクトリを使うか、\nルートパス内に \"source\" と \"build\" ディレクトリを分ける方法です。" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "ソースディレクトリとビルドディレクトリを分ける(y / n)" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "プロジェクトのルートディレクトリに 2つ以上のディレクトリが作成されます。\nカスタマイズしたHTMLテンプレート用の\"_templates\"ディレクトリと、カスタマイズしたスタイルシート等を置く\"_static\"ディレクトリがあります。\nこれらのディレクトリは \"_\" で始まっていますが、別の文字(\".\"など)で始まるように指定できます。" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "テンプレートと静的ディレクトリの名前プレフィックス" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "プロジェクト名は、ビルドされたドキュメントのいくつかの場所にあります。" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "プロジェクト名" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "著者名(複数可)" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "Sphinx には、ソフトウェアに対して \"バージョン\" と \"リリース\" という概念が\nあります。各バージョンは複数のリリースを持つことができます。\n例えば、Python だとバージョンが 2.5 や 3.0 のように分かれているように、\nリリースも 2.5.1 や 3.0a1 のように分けて持つことができます。もしこのような多重構成が必要ない場合は、\n両方を同じ値に設定するだけです。" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "プロジェクトのバージョン" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "プロジェクトのリリース" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "ドキュメントを英語以外の言語で書く場合は、\n 言語コードで言語を選択できます。Sphinx は生成したテキストをその言語に翻訳します。\n\nサポートされているコードのリストについては、\nhttps://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language を参照してください。" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "プロジェクトの言語" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "拡張子の名前はソースファイルに使います。\n通常は \".txt\" または \".rst\" です。これらの拡張子を持つファイルのみがドキュメントと見なされます。" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "ソース・ファイルサフィックス" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "1つのドキュメントは、\"コンテンツツリー\"の最上位ノードと\n見なされるという点で特別です。つまり、それはドキュメントにおける階層構造のルートである\nということです。通常、これは \"index\" ですが、\n\"index\" ドキュメントがカスタムテンプレートの場合、これを別のファイル名に設定することもできます。" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "マスター文書の名前(拡張子を除く)" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "エラー:マスタファイル %s は、選択されたルートパス上で既に存在します。" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "sphinx-quickstart は既存のファイルを上書きしません。" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "新しいファイル名を入力するか、既存のファイルの名前を変更してEnterキーを押してください。" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "次の Sphinx 拡張機能のうちどれを有効にするかを指定します。" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "注:imgmath と mathjax を同時に有効にすることはできません。 imgmath は未選択になります。" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "Makefile と Windows コマンドファイルは生成することができるので、\n後は実行するだけです。例えば、直接 sphinx-build を実行する代わりに `make html` を\n実行します。" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "Makefile を作成しますか? (y/n)" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "Windows コマンドファイルを作成しますか?(y/n)" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "ファイル %s を作成しています。" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "ファイル %s は既に存在しますのでスキップします。" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "終了:初期ディレクトリ構造が作成されました。" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "マスターファイル %s を作成して\n他のドキュメントソースファイルを作成します。" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "次のように Makefile を使ってドキュメントを作成します。\n make builder" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "次のように、ドキュメントを構築するには sphinx-build コマンドを使用してください。\n sphinx-build -b builder %s %s" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "\"builder\" はサポートされているビルダーの 1 つです。 例: html, latex, または linkcheck。" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "\nSphinx プロジェクトに必要なファイルを生成します。\n\nsphinx-quickstart は、いくつかの質問であなたの\nプロジェクトを生成するためのディレクトリと、sphinx-build と一緒に使える\nサンプルのMakefileを作成してくれるインタラクティブなツールです。\n" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "Quiet モード" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "project root" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "構成オプション" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "記述した場合、ソースとビルドのディレクトリを分割します。" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "_templates などのドットの置き換え" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "プロジェクトの基本オプション" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "プロジェクト名" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "著者名" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "プロジェクトのバージョン" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "プロジェクトのリリース" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "ドキュメント言語" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "ソース・ファイルサフィックス" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "マスタードキュメント名" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "epubを利用する" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "拡張オプション" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "%s 拡張を有効にする" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "任意の拡張を有効にする" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "Makefileとbatファイルの生成オプション" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "makefileを作成する" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "makefileを作成しない" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "batファイルを作成する" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "batファイルを作成しない" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "Makefile / make.bat 向けに make-mode を使う" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "Makefile / make.bat 向けに make-mode を使わないでください。" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "プロジェクトテンプレート" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "テンプレートファイルのテンプレートディレクトリ" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "テンプレート変数の定義" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "\"quiet\" が指定されていますが、 \"project\" または \"author\" のいずれも指定されていません。" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "エラー:指定されたパスはディレクトリではないか、または sphinx ファイルが既に存在します。" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "sphinx-quickstart は空のディレクトリにのみ生成します。新しいルートパスを指定してください。" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "無効なテンプレート変数: %s" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "過度なインデント解除が検出されました" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "不正な caption です: %s" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "行番号の指定が範囲外です (1-%d): %r" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "\"%s\" と \"%s\" のオプションは同時に使用できません" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "インクルードファイル %r が見つからないか読み込めません" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "エンコーディング %r はインクルードファイル %r の読み込みに適さないようです。:encoding: オプションを追加してみてください" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "%r という名前のオブジェクトがインクルードファイル %r 内に見つかりません" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr " \"lineno-match\" は不連続な \"lines\" に対して使用できません" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "指定された %r に一致する行がインクルードファイル %r にありませんでした" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "この節の作者: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "モジュールの作者: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "コードの作者: " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "作者: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "パラメータ" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "戻り値" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "戻り値の型" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C の関数)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C のメンバ変数)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C のマクロ)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C のデータ型)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C の変数)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "の関数" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "のメンバ変数" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "のマクロ" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "のデータ型" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "変数" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "%s のCオブジェクト記述、 %s の他の​​インスタンスを複製し、そのうちの1つに :noindex: を使用します" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "バージョン %s で追加" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "バージョン %s で変更" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "バージョン %s で非推奨" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "引用 %s はすでに %s で使われています" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "引用 [%s] は参照されていません。" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "'%s' 内で定義されている宣言が重複しています。\n宣言場所は '%s' です。" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "テンプレートパラメータ" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "例外" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "%s (C++ %s)" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "クラス" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "union" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "コンセプト" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "列挙型" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "enumerator" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "'%s' 内で定義されている宣言が重複しています。\n宣言名は '%s' です。" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (組み込み関数)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s のメソッド)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (クラス)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (グローバル変数または定数)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s の属性)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "引数" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (モジュール)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "メソッド" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "データ" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "の属性" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "モジュール" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "%s の記述 %s はすでに %s で %s が使われています" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "数式 %s のラベルはすでに %s で使われています" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "無効な math_eqref_format: %r" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "キーワード" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "演算子" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "オブジェクト" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "例外" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "文" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "組み込み関数" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "変数" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "例外" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (%s モジュール)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (組み込み変数)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (%s モジュール)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (組み込みクラス)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (%s のクラス)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s のメソッド)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s の静的メソッド)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s の静的メソッド)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (%s.%s のクラスメソッド)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (%s のクラスメソッド)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s の属性)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "%s() (%s のプロパティ)" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Pythonモジュール索引" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "モジュール" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "非推奨" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "クラスメソッド" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "の静的メソッド" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "%s のオブジェクト記述、 %s の他の​​インスタンスを複製し、そのうちの1つに :noindex: を使用します" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "相互参照 %r に複数のターゲットが見つかりました: %s" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (非推奨)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (ディレクティブ)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr ":%s: (ディレクティブオプション)" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (ロール)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "ディレクティブ" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "ディレクティブオプション" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "ロール" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "%s の記述 %s はすでに %s で使われています" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "環境変数; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "不正なオプションの説明 %r は、\"opt\"、\"-opt args\"、\"--opt args\"、\"/opt args\" または \"+opt args\" のようになります。" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "%s コマンドラインオプション" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "コマンドラインオプション" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "用語集の前に空行が必要です" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "用語集の用語は空行で区切ってはいけません" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "用語集のフォーマットが間違っているようです。インデントを確認してください" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "用語集の項目" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "文法トークン" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "参照ラベル" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "環境変数" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "プログラムオプション" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "document" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "モジュール索引" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "検索ページ" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "ラベル %s はすでに %s で使われています" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "%s の記述 %s はすでに %s で使われています" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "numfig は無効です。:numref: は無視されます。" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "%s に番号が割り当てられていません: %s" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "リンクにキャプションがありません: %s" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "無効な numfig_format: %s (%r)" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "無効な numfig_format: %s" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "新しい設定" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "変更された設定" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "変更された拡張" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "ビルド環境のバージョンが最新ではありません" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "ソースディレクトリが変更されました" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "この環境は選択したビルダーと互換性がありません。別の doctree ディレクトリーを選択してください。" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "%s のドキュメントをスキャンできませんでした: %r " + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "ドメイン %r はまだ登録されていません" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "自己参照している toctree が見つかりました。無視します。" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "ドキュメントはどの toctree にも含まれていません" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "%sを参照" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "%sも参照" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "不明なインデックスエントリタイプ %r" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "記号" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "循環参照している toctree が検出されましたので無視します: %s <- %s" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "toctree にはタイトルのないドキュメント %r への参照が含まれています: リンクは生成されません" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "toctree に除外したドキュメントへの参照が含まれています %r" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "toctree に存在しないドキュメントへの参照が含まれています %r" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "画像ファイルが読み込めません: %s" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "画像ファイル %s が読み込めません: %s" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "ダウンロードファイルが読み込めません: %s" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "%s はすでにセクション番号が割り当てられています (入れ子になった番号の toctree ?)" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "ファイル %s を作成したものとします。" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "\n<MODULE_PATH> 内を再帰的に調べてPython のモジュールとパッケージ、\n後は1つのreST ファイルを <OUTPUT_PATH> 内にあるパッケージ毎の automodule ディレクティブに作成します。\n\n<EXCLUDE_PATTERN> は、ファイル、またはディレクトリ、または両方のパターンを\n生成処理から除外することができます。\n\n注:デフォルトでは、このスクリプトはすでに作成されているファイルを上書きしません。" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "ドキュメントへのモジュールパス" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "生成処理から除外するための、ファイル、ディレクトリ、または両方のパターンを記した fnmatch-style 形式" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "すべての生成データを配置するディレクトリ" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "目次に表示するサブモジュールの最大深度 (デフォルト: 4)" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "存在するファイルは上書きする" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "シンボリックリンクをたどります。collective.recipe.omeletteと組み合わせると強力です。" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "ファイルを作成せずにスクリプトを実行する" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "各モジュールのドキュメントをそれぞれのページに配置する" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "\"_private\" モジュールを含めます。" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "目次のファイル名 (デフォルト: モジュール)" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "目次ファイルを生成しない" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "module/package パッケージの見出しを生成しない (例: docstring にすでにそれらが含まれている場合など)" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "サブモジュールのドキュメントの前に、モジュールのドキュメントを置く" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "PEP-0420 暗黙の名前空間の指定に従って、モジュールパスを解釈する" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "ファイルの拡張子 (デフォルト: rst)" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "sphinx-quickstart を使って完全なプロジェクトを生成する" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "module_pathを sys.path に追加します。--full が与えられたときに使用されます。" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "プロジェクト名 (デフォルト: ルートモジュール名)" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "プロジェクト著者名(複数可)。--full が与えられたときに使用されます。" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "プロジェクトバージョン。--full が与えられたときに使用されます。" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "プロジェクトのリリースバージョン。--full が与えられたときに使用されます。デフォルトは --doc-version" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "拡張オプション" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "%s はディレクトリではありません。" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "無効な正規表現 %r が %s 内に見つかりました" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "ソース内のカバレッジのテストが終了したら、%(outdir)spython.txt の結果を確認してください。" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "coverage_c_regexes 内に無効な正規表現 %r があります" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "モジュール %s をインポートできませんでした: %s" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "'%s' オプション内に '+' または '-' が不足しています" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "'%s' は正しいオプションではありません" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "'%s' は正しい pyversion オプションではありません" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "無効な TestCode タイプ" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "ソース内の doctests のテストが終了したら、%(outdir)s/output.txt の結果を確認してください。" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "%sブロックにあるコード/出力 が %s にありません: %s" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "無効な doctest コードは無視されます: %r" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "====================== 最も遅い読み取り時間 =======================" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "Graphviz ディレクティブはコンテンツとファイル名の両方の引数を持つことは出来ません" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "外部の Graphviz ファイル %r が見つからないか読み込めません" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "コンテンツのない \"graphviz\" ディレクティブを無視します" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "dotは出力ファイルを生成しませんでした:\n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "dot コマンド %r は実行できません (graphviz 出力のために必要です)。graphviz_dot の設定を確認してください" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "dot はエラー終了しました:\n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "graphviz_output_format は %r ではなく 'png' か 'svg' でなければなりません" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "dot コード %r: %s" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[グラフ: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[グラフ]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "convert コマンド %r は実行できません。image_converter の設定を確認してください" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "変換処理はエラー終了しました:\n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "LaTeX コマンド %r を実行できません (数式表示のために必要です)。imgmath_latex の設定を確認してください" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "%s コマンド %r を実行できません (数式表示のために必要です)。imgmath_%s の設定を確認してください" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "latex の表示 %r: %s" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "latex のインライン表示 %r: %s" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "この数式へのパーマリンク" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "intersphinx インベントリは移動しました: %s -> %s" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "%s から intersphinx インベントリをロード中..." + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "いくつかのインベントリでいくつかの問題に遭遇しましたが、代替手段を持っていました:" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "以下の問題があるため、いくつかのインベントリは到達できませんでした:" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(in %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "(in %s)" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "intersphinx 識別子 %r は文字列ではありません。無視します" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "intersphinx_mapping [%s] の読み取りに失敗しました。無視します: %r" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[ソース]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "課題" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "TODO エントリーが見つかりました: %s" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<original entry>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(<<original entry>> は、 %s の %d 行目です)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "元のエントリ" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "モジュールコードをハイライトしています..." + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[ドキュメント]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "モジュールコード" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>%s のソースコード</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "概要: モジュールコード" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>全モジュールのうち、コードを読めるもの</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "auto%s (%r) の署名が無効です" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "%sの引数のフォーマット中にエラーが発生しました: %s " + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "オブジェクト %s に属性 %s がありません" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "autodoc: ドキュメント化する %r の決定に失敗しました。次の例外が発生しました:\n%s" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "ドキュメントの自動生成 %r のためにどのモジュールをインポートするのか分かりません (ドキュメントに \"module\"または \"currentmodule\"ディレクティブを配置するか、明示的なモジュール名を指定してください)" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "automodule 名の \"::\" は意味がありません" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "automodule に与えられた署名引数、または戻り値となるアノテーション %s" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "__all__ は文字列のリストでなければなりません。%r (%s モジュールの中) ではないです -- ignoring __all__" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr ":members: または __all__ に記載されている属性がありません: モジュール %s、属性 %s" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "ベースクラス: %s" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr ":class:`%s` のエイリアス" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "%rのtype_commentを解析できませんでした: %s" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "autosummary は除外したドキュメント %r を参照しています。無視されます。" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "autosummary: stubファイルが見つかりません%r。autosummary_generate設定を確認してください。" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "%s のインポートに失敗しました" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "%sの名前を解析できませんでした " + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "%sオブジェクトをインポートできませんでした " + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "autosummary_generate: ファイルが見つかりません: %s" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "autosummary は内部的に rst ファイルを生成します。しかしあなたの source_suffix は rst ファイルに含まれていませんでした。スキップします。" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "autosummary: ドキュメント化する %r の決定に失敗しました。次の例外が発生しました:\n%s" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "[autosummary] %s の autosummary を生成中" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "[autosummary] %s に書き込み中" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "[autosummary] %rのインポートに失敗しました: %s" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "\nautosummary ディレクティブを使って ReStructuredText を生成します。\n\nsphinx-autogen は sphinx.ext.autosummary.generate のフロントエンドです。\n入力されたファイルを含む autosummary ディレクティブから reStructuredText ファイルを\n生成します。\n\nautosummary ディレクティブのフォーマットは\n``sphinx.ext.autosummary`` に記載されています。Pythonモジュールと :: を使って読むことができます。\n\npydoc sphinx.ext.autosummary\n" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "rST ファイルを生成するためのソースファイル" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "すべての生成データを配置するディレクトリ" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "ファイルのデフォルト拡張子 (デフォルト: %(default)s)" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "カスタムテンプレートディレクトリ (デフォルト: %(default)s)" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "インポートしたメンバーのドキュメント (デフォルト: %(default)s)" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "キーワード引数" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "サンプル" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "サンプル" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "メモ" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "その他のパラメータ" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "参照" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "警告" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "列挙" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "注意" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "注意" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "危険" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "エラー" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "ヒント" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "重要" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "注釈" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "参考" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "ちなみに" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "警告" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "前のページからの続き" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "次のページに続く" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "アルファベット以外" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "番号" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "ページ" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "目次" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "検索" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "検索" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "ソースコードを表示" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "概要" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Welcome! This is" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "the documentation for" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "最終更新" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "索引と表一覧:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "総合目次" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "章/節一覧" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "ドキュメントを検索" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "モジュール総索引" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "全モジュール早見表" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "関数、クラスおよび用語総覧" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "索引 – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "総索引" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "頭文字別索引" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "大きい場合があるので注意" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "ナビゲーション" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "%(docstitle)s 内を検索" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "このドキュメントについて" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "著作権" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© Copyright %(copyright)s." + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "最終更新: %(last_updated)s" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "このドキュメントは <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s で生成しました。" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "%(docstitle)s 内を検索" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "前のトピックへ" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "前の章へ" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "次のトピックへ" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "次の章へ" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "検索機能を使うには JavaScript を有効にしてください。" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "複数の単語を検索すると、次を含む一致のみが表示されます\n     すべての用語。" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "検索" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "検索結果" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "検索した文字列はどの文書にも見つかりませんでした。すべての単語が正確に記述されているか、あるいは、十分なカテゴリーが選択されているか確認してください。" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "クイック検索" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "このページ" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "バージョン %(version)s の変更点 — %(docstitle)s" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "バージョン %(version)s の変更点(このリストは自動生成されています)" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "ライブラリに関する変更" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "C API に関する変更" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "その他の変更" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "このヘッドラインへのパーマリンク" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "この定義へのパーマリンク" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "検索結果を隠す" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "検索中" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "検索を準備しています..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "検索が完了し、 %s ページ見つけました。" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", in " + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "サイドバーを展開" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "サイドバーをたたむ" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "コンテンツ" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "4列ベースのインデックスが見つかりました。あなたが使っている拡張子のバグかもしれません: %r" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "Footnote [%s] は参照されていません。" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "Footnote [#] は参照されていません。" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "翻訳されたメッセージの footnote 参照が矛盾しています。原文: {0}、翻訳: {1}" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "翻訳されたメッセージの参照が矛盾しています。原文: {0}、翻訳: {1}" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "翻訳されたメッセージの引用参照が矛盾しています。原文: {0}、翻訳: {1}" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "翻訳されたメッセージの用語参照が矛盾しています。原文: {0}、翻訳: {1}" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "'any' クロスリファレンス %r のターゲットが1つ以上みつかりました。 %s に参照を設定します。" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "%s:%s の参照ターゲットが見つかりません: %%(target)s" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "%r の参照ターゲットが見つかりません: %%(target)s" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "リモート画像を取得できませんでした: %s [%d]" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "リモート画像を取得できませんでした: %s [%s]" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "不明な画像フォーマット: %s..." + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "デコードできないソース文字です。\"?\" に置き換えます: %r" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "スキップしました" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "失敗しました" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "読み取りエラー: %s, %s" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "書き込みエラー: %s, %s" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "日付形式が無効です。直接出力したい場合は、文字列を一重引用符で囲みます: %s" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "toctree に存在しないファイルへの参照が含まれています %r" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "only ディレクティブの条件式の評価中に例外が発生しました: %s" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "Python2 構文の評価のサポートは廃止予定であり、Sphinx 4.0 では削除される予定です。%s を Python3 の構文に変換します。" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "デフォルトのロール %s が見つかりません" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "%s に numfig_format は定義されていません" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "いくつかの ID が %s ノードに割り当てられていません" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "このテーブルへのパーマリンク" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "このコードへのパーマリンク" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "この画像へのパーマリンク" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "この目次へのパーマリンク" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "画像サイズを取得できませんでした。:scale: オプションは無視されます。" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "不明なクラス %r の toplevel_sectioning %r" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr ":maxdepth: が大きすぎるので無視されます。" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "ドキュメントのタイトルは、単一の Text ノードではありません" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "セクション、トピック、表、訓戒またはサイドバーにないタイトルノードが見つかりました。" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "注記" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "tabularcolumns と :widths: オプションの両方が設定されています。:widths: は無視されます。" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "ディメンション単位 %s が無効です。無視されます。" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "不明なインデックスエントリタイプ %s が見つかりました" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[画像: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[画像]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "キャプションは図の中にはありません。" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "未実装のノードタイプ: %r" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "不明なノードタイプ: %r" diff --git a/sphinx/sphinx/locale/ko/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/ko/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..e0ce4a7 --- /dev/null +++ b/sphinx/sphinx/locale/ko/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "ko", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", \ubb38\uc11c - ", "About these documents": "\uc774 \ubb38\uc11c \uc815\ubcf4", "Automatically generated list of changes in version %(version)s": "\ubc84\uc804 %(version)s\uc758 \ubcc0\uacbd \uc0ac\ud56d (\uc774 \ubaa9\ub85d\uc740 \uc790\ub3d9\uc73c\ub85c \uc0dd\uc131\ud569\ub2c8\ub2e4)", "C API changes": "C API\uc5d0 \ub300\ud55c \ubcc0\uacbd", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "\uc0ac\uc774\ub4dc\ubc14 \ub2eb\uae30", "Complete Table of Contents": "\uc885\ud569 \ubaa9\ucc28", "Contents": "\ub0b4\uc6a9", "Copyright": "\uc800\uc791\uad8c", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s \ubc84\uc804\uc73c\ub85c \uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.", "Expand sidebar": "\uc0ac\uc774\ub4dc\ubc14 \uc5f4\uae30", "Full index on one page": "\ud55c \ud398\uc774\uc9c0\uc5d0 \uc804\uccb4 \uc0c9\uc778 \ubcf4\uae30", "General Index": "\uc804\uccb4 \uc0c9\uc778", "Global Module Index": "\ubaa8\ub4c8 \ucd1d \uc0c9\uc778", "Go": "\uc774\ub3d9", "Hide Search Matches": "\uac80\uc0c9 \uacb0\uacfc \uc228\uae30\uae30", "Index": "\uc0c9\uc778", "Index – %(key)s": "", "Index pages by letter": "\uc54c\ud30c\ubcb3\ubcc4 \uc0c9\uc778", "Indices and tables:": "\uc0c9\uc778 \ubc0f \ud45c \ubaa9\ub85d:", "Last updated on %(last_updated)s.": "\ucd5c\uc885 \uc5c5\ub370\uc774\ud2b8: %(last_updated)s", "Library changes": "\ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0 \ub300\ud55c \ubcc0\uacbd", "Navigation": "\ud0d0\uc0c9", "Next topic": "\ub2e4\uc74c \ud56d\ubaa9", "Other changes": "\ub2e4\ub978 \ubcc0\uacbd \uc0ac\ud56d", "Overview": "\uac1c\uc694", "Permalink to this definition": "\uc815\uc758 \uc8fc\uc18c", "Permalink to this headline": "\uc81c\ubaa9 \uc8fc\uc18c", "Please activate JavaScript to enable the search\n functionality.": "\uac80\uc0c9 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\ub824\uba74 JavaScript\ub97c \ud65c\uc131\ud654\ud558\uc2ed\uc2dc\uc624.", "Preparing search...": "\uac80\uc0c9 \uc900\ube44 \uc911\u2026", "Previous topic": "\uc774\uc804 \ud56d\ubaa9", "Quick search": "\ube60\ub978 \uac80\uc0c9", "Search": "\uac80\uc0c9", "Search Page": "\uac80\uc0c9 \ud398\uc774\uc9c0", "Search Results": "\uac80\uc0c9 \uacb0\uacfc", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "%(docstitle)s\uc5d0\uc11c \ucc3e\uae30", "Searching": "\uac80\uc0c9 \uc911", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "\uc18c\uc2a4 \ubcf4\uae30", "Table of Contents": "\ubaa9\ucc28", "This Page": "\ud604\uc7ac \ubb38\uc11c", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "\ud568\uc218, \ud074\ub798\uc2a4 \ubc0f \uc6a9\uc5b4 \uac1c\uad00", "can be huge": "\ud070 \uacbd\uc6b0\uac00 \uc788\uc73c\ubbc0\ub85c \uc8fc\uc758", "last updated": "\ucd5c\uc885 \uc5c5\ub370\uc774\ud2b8", "lists all sections and subsections": "\uc601\uc5ed\ubcc4 \ubaa9\ucc28", "next chapter": "\ub2e4\uc74c \uc7a5", "previous chapter": "\uc774\uc804 \uc7a5", "quick access to all modules": "\ubaa8\ub4e0 \ubaa8\ub4c8 \uc870\uacac\ud45c", "search": "\uac80\uc0c9", "search this documentation": "\ubb38\uc11c \uac80\uc0c9", "the documentation for": ""}, "plural_expr": "0"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/ko/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/ko/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..93c285e --- /dev/null +++ b/sphinx/sphinx/locale/ko/LC_MESSAGES/sphinx.po @@ -0,0 +1,3467 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Minho Ryang <minhoryang@gmail.com>, 2019 +# YT H <dev@theYT.net>, 2019 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Korean (http://www.transifex.com/sphinx-doc/sphinx-1/language/ko/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: ko\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "설정 디렉토리에 conf.py 파일이 없습니다 (%s)" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "소스 디렉토리를 찾을 수 없습니다 (%s)" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "소스 디렉토리와 대상 디렉토리는 같을 수 없습니다" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "Sphinx 버전 %s 실행 중" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "이 프로젝트는 최소 Sphinx 버전 %s이(가) 필요하므로 현재 버전으로 빌드할 수 없습니다." + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "현재 conf.py 파일에 정의된 'setup'은 호출 가능한 Python 객체가 아닙니다. 호출 가능한 함수가 되도록 정의를 수정하십시오.\n이것은 conf.py가 Sphinx 확장 기능으로 동작하는 데 필요합니다." + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "번역을 불러오는 중 [%s]… " + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "완료" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "기본 제공 메시지를 사용할 수 없습니다" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "실패: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "선택한 빌더가 없으므로, 기본값인 html을 사용합니다" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "성공" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "완료했으나 문제점 발견" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "빌드 %s, 경고가 %s 개 발생했습니다." + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "빌드 %s." + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "병렬 %s 처리" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "Dictionary 구성 설정 %r을(를) 재정의할 수 없으며, 무시합니다 (개별 요소를 설정하기 위해 %r 사용)" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "설정 값 %r에 대해 숫자 %r이(가) 유효하지 않으며, 무시합니다" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "지원되지 않는 유형에 대한 구성 설정 %r을(를) 재정의 할 수 없으며, 무시합니다" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "재정의 중 알 수 없는 구성 값 %r, 무시합니다" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "해당 설정값이 없습니다: %s" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "설정값 %r이(가) 이미 존재합니다" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "구성 파일(또는 가져온 모듈 중 하나)에서 sys.exit()을 호출했습니다" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "구성 파일에 프로그램 오류가 있습니다:\n\n%s" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "제 %s 절" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "그림 %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "표 %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "예시 %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "설정 값 `{name}`은(는) {candidates} 중 하나여야 하지만, `{current}`이(가) 주어졌습니다." + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "설정 값 `{name}'은(는) `{current.__name__}' 유형이며, 기본값은 `{default.__name__}'입니다." + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "구성 값 %r이(가) 비 ASCII 문자가 있는 문자열로 설정되었으며, 이로 인해 유니코드 오류가 발생할 수 있습니다. %r와(과) 같은 유니코드 문자열을 사용하십시오." + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "primary_domain %r(이)가 없으므로, 무시합니다." + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "이벤트 %r이(가) 이미 존재합니다" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "알 수 없는 이벤트 이름: %s" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "literal_block을 \"%s\"(으)로 어휘 분석할 수 없습니다. 구문 강조를 건너뜁니다." + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "빌더 클래스 %s에 \"name\" 속성이 없습니다" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "%r에 대한 source_parser가 이미 등록되었습니다" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "%s에 대한 소스 해석기가 등록되지 않았습니다" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "add_node()에 대한 kwargs는 반드시 (visit, depart)의 함수 튜플이어야 합니다: %r=%r" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "enumerable_node %r이(가) 이미 등록되었습니다" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "수식 렌더러 %s이(가) 이미 등록되었습니다" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "확장 %r은(는) 이미 Sphinx에 버전 %s 이후로 병합되었습니다. 이 확장은 무시됩니다." + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "원본 예외:\n" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "파이썬 향상 제안; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "테마 %r에 \"theme\" 설정이 없습니다" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "테마 %r에 \"inherit\" 설정이 없습니다" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "지원하지 않는 테마 옵션 %r을(를) 설정했습니다" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "빌드 중 [mo]: " + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "출력을 쓰는 중… " + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "모든 소스 파일" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "빌드 중 [%s]: " + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "오래 된 파일을 찾는 중… " + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "%d 개 찾음" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "찾은 것이 없습니다" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "기본" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "모듈 수준" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "소스 파일을 복사하는 중…" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "템플릿을 읽는 중… " + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "위의 출력 또는 %(outdir)s/output.txt 파일에서 오류를 확인하십시오." + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%Y년 %m월 %d일" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "이제 html_use_opensearch 설정값은 문자열이어야 합니다" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "전체 색인" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "색인" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "다음" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "이전" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s 문서" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "색인" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "출시 버전" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "인코딩 오류:" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "자세한 내용은 <http://sphinx-doc.org/>를 참조하십시오." + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "\n소스 파일로부터 문서를 생성합니다.\n\nsphinx-build는 SOURCEDIR에 있는 파일로부터 문서를 생성하여 OUTPUTDIR에 저장합니다.\n구성 설정을 위해 SOURCEDIR에서 'conf.py' 파일을 찾습니다.\n'sphinx-quickstart' 도구는 'conf.py'를 포함하여 템플릿 파일을 생성하는 데 사용할 수 있습니다.\n\nsphinx-build는 다양한 형식으로 문서를 생성할 수 있습니다.\n형식은 명령줄에서 빌더 이름을 지정하여 선택하며, 기본값은 HTML입니다.\n빌더는 문서 처리와 관련한 다른 태스크를 수행할 수도 있습니다.\n\n기본적으로 오래된 모든 항목을 빌드합니다.\n개별 파일명을 지정하여 선택한 파일에 대한 출력만 빌드할 수 있습니다.\n" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "문서 소스 파일의 경로" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "출력 디렉토리 경로" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "다시 빌드 할 특정 파일의 목록. -a가 지정되면 무시합니다" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "일반 옵션" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "사용할 빌더 (기본값: html)" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "모든 파일 쓰기 (기본값: 새 파일과 변경된 파일만 쓰기)" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "저장된 환경을 사용하지 않고, 항상 모든 파일 읽기" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "캐시된 환경 및 doctree 파일 경로 (기본값: OUTPUTDIR/.doctrees)" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "가능한 경우 N 개의 프로세스를 사용하여 병렬로 빌드 (특수 값 \"auto\"는 N을 CPU 개수로 설정합니다)" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "구성 파일(conf.py)이 있는 경로 (기본값: SOURCEDIR과 동일)" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "설정 파일을 전혀 사용하지 않고, -D 옵션들만 사용" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "구성 파일의 설정 무시" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "HTML 템플릿에 값 전달" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "태그를 정의: 태그가 있는 블록\"만\" 포함됨" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "까다로움 모드, 모든 누락된 참조에 대해 경고 발생" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "콘솔 출력 옵션" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "상세도 높임 (반복 가능)" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "stdout에 출력하지 않고, stderr에 경고만 표시" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "경고를 포함하여 아무 출력도 하지 않음" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "컬러 출력 허용 (기본값: 자동 감지)" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "컬러 출력을 허용하지 않음 (기본값: 자동 감지)" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "주어진 파일에 경고(및 오류)를 기록" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "경고를 오류로 바꿈" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "예외 발생 시 전체 추적 표시" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "예외 발생 시 Pdb 실행" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "프로젝트 이름" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "작성자 이름" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "프로젝트 버전" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "프로젝트 출시 버전" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "프로젝트 언어" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "\nSphinx 프로젝트에 필요한 파일을 생성합니다.\n\nsphinx-quickstart는 대화형 도구로서, 프로젝트에 대한 몇 가지 질문을 한 다음\n완전한 문서 디렉토리와 (sphinx-build와 함께 사용할 수 있는) 견본 Makefile을 생성합니다.\n" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "조용한 모드" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "구조 옵션" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "지정된 경우, 소스와 빌드 디렉토리를 구분함" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "프로젝트 기본 옵션" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "프로젝트 이름" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "작성자 이름" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "프로젝트의 버전" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "프로젝트의 출시 버전" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "문서 언어" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "마스터 문서 이름" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "확장 기능 옵션" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "%s 확장 기능 사용" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "임의의 확장 기능 사용" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "Makefile과 배치 파일 생성" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "makefile 생성" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "makefile을 생성하지 않음" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "배치 파일 생성" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "배치 파일을 생성하지 않음" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "프로젝트 템플릿" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "모듈 작성자: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "코드 작성자: " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "작성자: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "매개변수" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "반환값" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "반환 형식" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C 함수)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C 멤버 변수)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C 매크로)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C 데이터 형식)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C 변수)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "함수" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "멤버 변수" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "매크로" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "데이터 형식" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "변수" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "버전 %s에 추가" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "버전 %s에서 변경" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "버전 %s부터 폐지" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "템플릿 매개변수" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "예외" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "클래스" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (내장 함수)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s 메서드)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (클래스)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (전역 변수 또는 상수)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s의 속성)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "인수" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (모듈)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "메서드" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "데이터" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "속성" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "모듈" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "키워드" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "연산자" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "객체" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "예외" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "글" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "내장 함수" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "변수" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "예외" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (%s 모듈)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (내장 변수)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (%s 모듈)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (내장 클래스)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (%s 클래스)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s의 메서드)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s의 정적 메서드)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s의 정적 메서드)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (%s.%s의 클래스 메서드)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (%s의 클래스 메서드)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s의 속성)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Python 모듈 목록" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "모듈" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "폐지" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "클래스 메서드" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "정적 메서드" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (지시문)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (역할)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "지시자" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "역할" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "환경 변수; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "용어 항목" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "문법 토큰" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "참조 레이블" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "환경 변수" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "프로그램 옵션" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "모듈 목록" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "검색 페이지" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "새로운 설정" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "설정이 변경됨" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "확장 기능이 변경됨" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "%s 문서" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "%s 참조" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "기호" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "이 수식에 대한 퍼머링크" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[소스]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "할 일" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "TODO 항목을 찾았습니다: %s" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<원래 항목>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(<<원래 항목>>은 %s 파일, %d 행에 있습니다.)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "원래 항목" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[문서]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "모듈 코드" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>%s의 소스 코드</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "개요: 모듈 코드" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "기반 클래스: %s" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "키워드 인수" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "예제" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "예제" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "참고" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "기타 매개변수" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "참조" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "주의" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "조심" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "위험" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "오류" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "힌트" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "중요" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "참고" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "더 보기" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "팁" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "경고" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "이전 페이지에서 계속" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "다음 페이지에 계속" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "숫자" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "페이지" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "목차" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "검색" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "이동" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "소스 보기" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "개요" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "최종 업데이트" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "색인 및 표 목록:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "종합 목차" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "영역별 목차" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "문서 검색" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "모듈 총 색인" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "모든 모듈 조견표" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "함수, 클래스 및 용어 개관" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "한 페이지에 전체 색인 보기" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "알파벳별 색인" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "큰 경우가 있으므로 주의" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "탐색" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "%(docstitle)s에서 찾기" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "이 문서 정보" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "저작권" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "최종 업데이트: %(last_updated)s" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s 버전으로 생성되었습니다." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "%(docstitle)s에서 찾기" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "이전 항목" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "이전 장" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "다음 항목" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "다음 장" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "검색 기능을 사용하려면 JavaScript를 활성화하십시오." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "검색" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "검색 결과" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "빠른 검색" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "현재 문서" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "버전 %(version)s의 변경 사항 (이 목록은 자동으로 생성합니다)" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "라이브러리에 대한 변경" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "C API에 대한 변경" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "다른 변경 사항" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "제목 주소" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "정의 주소" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "검색 결과 숨기기" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "검색 중" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "검색 준비 중…" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", 문서 - " + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "사이드바 열기" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "사이드바 닫기" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "내용" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "디코드 할 수 없는 원본 문자이며, \"?\"로 대체합니다: %r" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "읽기 오류: %s, %s" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "쓰기 오류: %s, %s" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "이 표에 대한 퍼머링크" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "이 코드에 대한 퍼머링크" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "이 이미지에 대한 퍼머링크" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "이 목차에 대한 퍼머링크" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "각주" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[그림: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[그림]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/lt/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/lt/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..4823a5f --- /dev/null +++ b/sphinx/sphinx/locale/lt/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "lt", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "Apie \u0161iuos dokumentus", "Automatically generated list of changes in version %(version)s": "Automati\u0161kai sugeneruotas pakeitim\u0173 %(version)s versijoje s\u0105ra\u0161as", "C API changes": "C API pakeitimai", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Pasl\u0117pti \u0161onin\u0119 juost\u0105", "Complete Table of Contents": "Pilnas Turinys", "Contents": "Turinys", "Copyright": "Autoriaus teis\u0117s", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Sukurta naudojant <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "I\u0161pl\u0117sti \u0161onin\u0119 juost\u0105", "Full index on one page": "Pilnas indeksas viename puslapyje", "General Index": "Bendras indeksas", "Global Module Index": "Globalus Modulio Indeksas", "Go": "Pirmyn", "Hide Search Matches": "Pasl\u0117pti paie\u0161kos rezultatus", "Index": "Indeksas", "Index – %(key)s": "Indeksas – %(key)s", "Index pages by letter": "Indekso puslapiai pagal raid\u0119", "Indices and tables:": "Indeksai ir lentel\u0117s:", "Last updated on %(last_updated)s.": "Paskutinis atnaujinimas %(last_updated)s.", "Library changes": "Bibliotekos pakeitimai", "Navigation": "Navigacija", "Next topic": "Kita tema", "Other changes": "Kiti pakeitimai", "Overview": "Ap\u017evalga", "Permalink to this definition": "Nuoroda \u012f \u0161\u012f apibr\u0117\u017eim\u0105", "Permalink to this headline": "Nuoroda \u012f \u0161i\u0105 antra\u0161t\u0119", "Please activate JavaScript to enable the search\n functionality.": "Pra\u0161ome aktyvuoti JavaScript, kad veikt\u0173 paie\u0161kos\n funkcionalumas.", "Preparing search...": "", "Previous topic": "Praeita tema", "Quick search": "Greitoji paie\u0161ka", "Search": "Paie\u0161ka", "Search Page": "Paie\u0161kos puslapis", "Search Results": "Paie\u0161kos rezultatai", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "Ie\u0161koti tarp %(docstitle)s", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Rodyti pirmin\u012f kod\u0105", "Table of Contents": "", "This Page": "\u0160is puslapis", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "visos funkcijos, klas\u0117s ir terminai", "can be huge": "gali b\u016bti didelis", "last updated": "", "lists all sections and subsections": "sura\u0161yti visus skyrius ir poskyrius", "next chapter": "kita dalis", "previous chapter": "praeita dalis", "quick access to all modules": "greitas vis\u0173 moduli\u0173 pasiekimas", "search": "ie\u0161koti", "search this documentation": "ie\u0161koti \u0161iame dokumente", "the documentation for": ""}, "plural_expr": "(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)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/lt/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/lt/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..75f4f34 --- /dev/null +++ b/sphinx/sphinx/locale/lt/LC_MESSAGES/sphinx.po @@ -0,0 +1,3466 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# DALIUS DOBRAVOLSKAS <DALIUS@SANDBOX.LT>, 2010 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Lithuanian (http://www.transifex.com/sphinx-doc/sphinx-1/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.8.0\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" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Įtaisytieji" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Modulio lygis" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (kuris yra " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%Y-%m-%d" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Bendras indeksas" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "indeksas" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "kitas" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "praeitas" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Indeksas" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Leidimas" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Skyriaus autorius: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Modulio autorius: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Kodo autorius: " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Autorius: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parametrai" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Grąžinamos reikšmės" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Grąžinamos reikšmės tipas" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C funkcija)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C narys)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C makrokomanda)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C tipas)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C kintamasis)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "funkcija" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "narys" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "makrokomanda" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "tipas" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "kintamasis" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Nauja %s versijoje" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Pakeista %s versijoje" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Nebepalaikoma nuo %s versijos" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Išmeta" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "klasė" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (itaisytoji funkcija)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s metodas)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (klasė)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (globalus kintamasis arba konstanta)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s atributas)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Argumentais" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (modulis)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "metodas" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "duomenys" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "atribudas" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "modulis" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "bazinis žodis" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operatorius" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "objektas" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "išimtis" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "sakinis" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "įtaisytoji funkcija" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Kintamieji" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Sukelia" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (modulyje %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (įtaisytasis kintamasis)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (modulje %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (įtaisytoji klasė)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (klasė iš %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s metodas)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s statinis metodas)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s statinis metodas)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (%s.%s klasės metodas)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (%s klasės metodas)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s atributas)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "moduliai" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Atmestas" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "klasės metodas" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "statinis metodas" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (atmestas)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (direktyva)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (rolė)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "direktyva" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "rolė" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "aplinkos kintamasis; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "aiškinamasis terminas" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "gramatinė leksema" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "nuorodos požymis" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "aplinkos kintamasis" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "programos parinktis" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Modulio indeksas" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Paieškos puslapis" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[šaltinis]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Padaryti" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "originalus įrašas" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[dokumentai]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Modulio kodas" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Kodas %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Apžvalga: modulio kodas" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Visi moduliai turintys kodą</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr ":class:`%s` alternatyvus vardas" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Dėmesio" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Atsargiai" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Pavojinga" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Klaida" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Patarimas" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Svarbu" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Pastaba" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Taip pat žiūrėkite" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Patarimas" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Įspėjimas" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "tęsinys iš praeito puslapio" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Paieška" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Pirmyn" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Rodyti pirminį kodą" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Apžvalga" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Indeksai ir lentelės:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Pilnas Turinys" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "surašyti visus skyrius ir poskyrius" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "ieškoti šiame dokumente" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Globalus Modulio Indeksas" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "greitas visų modulių pasiekimas" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "visos funkcijos, klasės ir terminai" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Indeksas – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Pilnas indeksas viename puslapyje" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Indekso puslapiai pagal raidę" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "gali būti didelis" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navigacija" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Ieškoti tarp %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Apie šiuos dokumentus" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Autoriaus teisės" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Paskutinis atnaujinimas %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Sukurta naudojant <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Ieškoti %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Praeita tema" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "praeita dalis" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Kita tema" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "kita dalis" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Prašome aktyvuoti JavaScript, kad veiktų paieškos\n funkcionalumas." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "ieškoti" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Paieškos rezultatai" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Greitoji paieška" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Šis puslapis" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Automatiškai sugeneruotas pakeitimų %(version)s versijoje sąrašas" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Bibliotekos pakeitimai" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "C API pakeitimai" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Kiti pakeitimai" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Nuoroda į šią antraštę" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Nuoroda į šį apibrėžimą" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Paslėpti paieškos rezultatus" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Išplėsti šoninę juostą" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Paslėpti šoninę juostą" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Turinys" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Išnašos" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[paveiksliukas]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/lv/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/lv/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..b609e2a --- /dev/null +++ b/sphinx/sphinx/locale/lv/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "lv", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "Par \u0161iem dokumentiem", "Automatically generated list of changes in version %(version)s": "Autom\u0101tiski sagatavots izmai\u0146u saraksts versijai %(version)s", "C API changes": "Izmai\u0146as iek\u0161 C API", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Sav\u0113rst s\u0101njoslu", "Complete Table of Contents": "Pilns saturs", "Contents": "Saturs", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Sagatavots izmantojot <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Izplest s\u0101njoslu", "Full index on one page": "Pilns indekss vien\u0101 lappus\u0113", "General Index": "Visp\u0101r\u0113js indekss", "Global Module Index": "Visp\u0101r\u0113js modu\u013cu indekss", "Go": "Izpild\u012bt", "Hide Search Matches": "Pasl\u0113pt atlases v\u0101rdus", "Index": "Indekss", "Index – %(key)s": "Indekss – %(key)s", "Index pages by letter": "Lappu\u0161u indekss p\u0113c burtiem", "Indices and tables:": "Indeksi un tabulas:", "Last updated on %(last_updated)s.": "P\u0113d\u0113jas izmai\u0146as %(last_updated)s.", "Library changes": "Bibliot\u0113kas izmai\u0146as", "Navigation": "Navig\u0101cija", "Next topic": "n\u0101ko\u0161a t\u0113ma", "Other changes": "Citas izmai\u0146as", "Overview": "Apskats", "Permalink to this definition": "Past\u0101v\u012bga nor\u0101de uz \u0161o defin\u012bciju", "Permalink to this headline": "Past\u0101v\u012bga nor\u0101de \u0161o virsrakstu", "Please activate JavaScript to enable the search\n functionality.": "Lai iesp\u0113jotu mekl\u0113\u0161anu, l\u016bdzu aktiviz\u0113t JavaScript.", "Preparing search...": "", "Previous topic": "iepriek\u0161\u0113ja t\u0113ma", "Quick search": "\u0100tra mekl\u0113\u0161ana", "Search": "Mekl\u0113t", "Search Page": "Atlases lapa", "Search Results": "Atlases rezult\u0101ti", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "Mekl\u0113t iek\u0161 %(docstitle)s", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "R\u0101d\u012bt izejas tekstu", "Table of Contents": "", "This Page": "\u0160\u012b lappuse", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "visas funkcijas, klases un termini", "can be huge": "var b\u016bt milz\u012bgs", "last updated": "", "lists all sections and subsections": "r\u0101da visas sekcijas un apak\u0161sekcijas", "next chapter": "n\u0101ko\u0161a sada\u013ca", "previous chapter": "iepriek\u0161\u0113ja sada\u013ca", "quick access to all modules": "\u0101tra piek\u013cuve visiem moduliem", "search": "mekl\u0113t", "search this documentation": "mekl\u0113t \u0161aj\u0101 dokument\u0101cij\u0101", "the documentation for": ""}, "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/lv/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/lv/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..83edbcb --- /dev/null +++ b/sphinx/sphinx/locale/lv/LC_MESSAGES/sphinx.po @@ -0,0 +1,3465 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Latvian (http://www.transifex.com/sphinx-doc/sphinx-1/language/lv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: lv\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Iebūvētie" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Moduļu līmenis" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (iekš " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d.%m.%Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Vispārējs indekss" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "indekss" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "nākošais" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "iepriekšējs" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Indekss" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Izlaidums" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Sekcijas autors: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Moduļa autors: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Koda autors: " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Autors: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parametri" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Atgriež" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Atgriežamais tips" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C funkcija)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C loceklis)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C makross)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C tips)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C mainīgais)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "funkcija" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "loceklis" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "makross" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "tips" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "mainīgais" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Jauns versijā %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Mainīts versijā %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Neieteicams no versijas %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Izmet" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "klase" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (iebūvēta funkcija)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s metods)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (globālais mainīgais vai konstanta)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s atributs)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Argumenti" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (modulis)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "metods" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "dati" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "atributs" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "modulis" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "atslēgas vārds" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operators" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "objekts" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "izņēmums" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "priekšraksts" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "iebūvēta funkcija" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Mainīgie" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Ceļ" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (moduļī %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (iebūvētais mainīgais)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (moduļī %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (iebūvēta klase)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (klase iekš %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s metods)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s statiskais metods)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s statiskais metods)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (%s.%s klases metods)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (%s klases metods)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s atributs)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "moduļi" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Nav ieteicams" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "klases metods" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "statiskais metods" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (direktīva)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (role)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "direktīva" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "role" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "apkārtnes mainīgais; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "glosārija termins" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "gramatiskais marķieris" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "atsauces virsraksts" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "apkārtnes mainīgais" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "programmas opcija" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Moduļu indekss" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Atlases lapa" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[kods]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Jāizdara" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "sākotnējs ieraksts" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[dokumenti]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Moduļa teksts" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>%s izejas teksts</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Apskats: moduļa teksts" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Visi moduļi, kuriem ir izejas teksti</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "aizstājvārds klasei :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Uzmanību" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Uzmanies" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Bīstami" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Kļūda" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Mājiens" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Svarīgi" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Piezīme" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Skat.arī" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Padoms" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Brīdinājums" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "turpinājums no iepriekšējās lappuses" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Meklēt" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Izpildīt" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Rādīt izejas tekstu" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Apskats" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Indeksi un tabulas:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Pilns saturs" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "rāda visas sekcijas un apakšsekcijas" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "meklēt šajā dokumentācijā" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Vispārējs moduļu indekss" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "ātra piekļuve visiem moduliem" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "visas funkcijas, klases un termini" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Indekss – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Pilns indekss vienā lappusē" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Lappušu indekss pēc burtiem" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "var būt milzīgs" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navigācija" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Meklēt iekš %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Par šiem dokumentiem" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Copyright" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Pēdējas izmaiņas %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Sagatavots izmantojot <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "%(docstitle)s meklēšana" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "iepriekšēja tēma" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "iepriekšēja sadaļa" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "nākoša tēma" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "nākoša sadaļa" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Lai iespējotu meklēšanu, lūdzu aktivizēt JavaScript." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "meklēt" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Atlases rezultāti" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Ātra meklēšana" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Šī lappuse" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Automātiski sagatavots izmaiņu saraksts versijai %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Bibliotēkas izmaiņas" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Izmaiņas iekš C API" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Citas izmaiņas" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Pastāvīga norāde šo virsrakstu" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Pastāvīga norāde uz šo definīciju" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Paslēpt atlases vārdus" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Izplest sānjoslu" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Savērst sānjoslu" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Saturs" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Vēres" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[attēls: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[attēls]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/mk/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/mk/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..317165e --- /dev/null +++ b/sphinx/sphinx/locale/mk/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "mk", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "", "Full index on one page": "", "General Index": "\u0413\u043b\u0430\u0432\u043d\u0430 \u0441\u043e\u0434\u0440\u0436\u0438\u043d\u0430", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "", "Table of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n % 10 == 1 && n % 100 != 11) ? 0 : 1"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/mk/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/mk/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..7ca7371 --- /dev/null +++ b/sphinx/sphinx/locale/mk/LC_MESSAGES/sphinx.po @@ -0,0 +1,3466 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Vasil Vangelovski <vvangelovski@gmail.com>, 2013 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Macedonian (http://www.transifex.com/sphinx-doc/sphinx-1/language/mk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: mk\n" +"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Предлог за подобрување на Python; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Вградени" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Ниво на модул" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (во " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d %b, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Главна содржина" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "содржина" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "следна" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "претходна" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s документација" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Автор на секцијата:" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Автор на модул:" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Автор на код:" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Автор: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Параметри" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Враќа" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Повратен тип" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C функција)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C член)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C макро)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C тип)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C променлива)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "функција" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "член" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "макро" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "тип" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "променлива" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Фрла" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "класа" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (вградена функција)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s метод)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (класа)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "погледни %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "погледни %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Симболи" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/nb_NO/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/nb_NO/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..8e6b8f4 --- /dev/null +++ b/sphinx/sphinx/locale/nb_NO/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "nb_NO", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "Om disse dokumenter", "Automatically generated list of changes in version %(version)s": "Automatisk generert liste over endringer i versjon %(version)s", "C API changes": "Endringer i C API", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Skjul sidepanelet", "Complete Table of Contents": "Komplett Innholdsfortegnelse", "Contents": "Innhold", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Lagd med <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Utvid sidepanelet", "Full index on one page": "Hele innholdsfortegnelsen p\u00e5 en side", "General Index": "Hovedindex", "Global Module Index": "Global Modulindex", "Go": "G\u00e5", "Hide Search Matches": "Skjul s\u00f8keresultat", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Innholdsfortegnelse per bokstav", "Indices and tables:": "Index og tabeller", "Last updated on %(last_updated)s.": "Sist oppdatert %(last_updated)s.", "Library changes": "Endringer i biblioteket", "Navigation": "Navigering", "Next topic": "Neste emne", "Other changes": "Andre endringer", "Overview": "Oversikt", "Permalink to this definition": "Permalink til denne definisjonen", "Permalink to this headline": "Permalink til denne oversikten", "Please activate JavaScript to enable the search\n functionality.": "Vennligst aktiver JavaScript for \u00e5 aktivere s\u00f8k.", "Preparing search...": "", "Previous topic": "Forrige tittel", "Quick search": "Hurtigs\u00f8k", "Search": "S\u00f8k", "Search Page": "S\u00f8keside", "Search Results": "S\u00f8keresultat", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "S\u00f8k blant %(docstitle)s", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Vis kildekode", "Table of Contents": "", "This Page": "Denne siden", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "alla funksjoner, klasser, vilk\u00e5r", "can be huge": "kan bli stor", "last updated": "", "lists all sections and subsections": "liste over alle paragrafer og underparagrafer", "next chapter": "neste kapittel", "previous chapter": "Forrige kapittel", "quick access to all modules": "snarvei til alle moduler", "search": "s\u00f8k", "search this documentation": "s\u00f8k i dette dokumentet", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/nb_NO/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/nb_NO/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..d91029b --- /dev/null +++ b/sphinx/sphinx/locale/nb_NO/LC_MESSAGES/sphinx.po @@ -0,0 +1,3465 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/sphinx-doc/sphinx-1/language/nb_NO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: nb_NO\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Innebygde" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Modulnivå" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "(i " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Hovedindex" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "index" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "neste" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "forrige" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Index" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Utgivelse" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Seksjon forfatter: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Modul forfattar: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Kildekode forfatter: " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Forfatter: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parametere" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Returnere" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Retur type" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C-funktion)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C-medlem)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C-makro)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C-type)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C-variabel)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "funksjon" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "medlem" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "makro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "type" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "variabel" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Nytt i version %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Endret i version %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Foreldet siden version %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Kaster" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "klasse" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (innebygd funksjon)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s metode)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (klasse)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (global variabel eller konstant)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s attribut)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Argument" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (modul)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "metode" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "data" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "attributt" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "modul" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "nøkkelord" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operator" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "objekt" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "untak" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "uttrykk" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "innebygde funksjoner" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Variabler" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Hever" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (i modul %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (innebygd variabel)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (i modul %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (innebygd klasse)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (klasse i %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s metode)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s statisk metode)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s statisk metode)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (%s.%s klassemetode)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (%s klassemetode)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s attributt)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Python Modulindex" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "moduler" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Foreldet" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "klassemetode" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "statisk metode" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (foreldet)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (direktiv)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (rolle)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "direktiv" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "rolle" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "miljøvariabel; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "ordliste" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "grammatikk token" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "referanse-etikett" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "miljøvariabel" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "programvalg" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Modulindex" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Søkeside" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "se %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "se også %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[kilde]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Todo" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "opprinnelig oppføring" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[dokumentasjon]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Modul kildekode" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Kildekode for %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Oversikt: modulkildekode" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Alla moduler hvor kildekode finnes</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "alias for :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Obs" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Advarsel" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Fare" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Feil" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Hint" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Viktig" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Obs" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Se også" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Tips" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Advarsel" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "fortsettelse fra forrige side" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Søk" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Gå" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Vis kildekode" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Oversikt" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Index og tabeller" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Komplett Innholdsfortegnelse" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "liste over alle paragrafer og underparagrafer" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "søk i dette dokumentet" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Global Modulindex" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "snarvei til alle moduler" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "alla funksjoner, klasser, vilkår" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Index – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Hele innholdsfortegnelsen på en side" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Innholdsfortegnelse per bokstav" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "kan bli stor" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navigering" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Søk blant %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Om disse dokumenter" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Copyright" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Sist oppdatert %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Lagd med <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Søk %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Forrige tittel" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "Forrige kapittel" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Neste emne" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "neste kapittel" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Vennligst aktiver JavaScript for å aktivere søk." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "søk" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Søkeresultat" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Hurtigsøk" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Denne siden" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Automatisk generert liste over endringer i versjon %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Endringer i biblioteket" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Endringer i C API" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Andre endringer" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Permalink til denne oversikten" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Permalink til denne definisjonen" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Skjul søkeresultat" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Utvid sidepanelet" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Skjul sidepanelet" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Innhold" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Fotnoter" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[bilde]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/ne/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/ne/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..01f0dd0 --- /dev/null +++ b/sphinx/sphinx/locale/ne/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "ne", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "\u092f\u0940 \u0921\u0915\u0941\u092e\u0947\u0928\u094d\u091f\u0939\u0930\u0941\u0915\u094b \u092c\u093e\u0930\u0947\u092e\u093e", "Automatically generated list of changes in version %(version)s": "\u092d\u0930\u094d\u0938\u0928 %(version)s \u092e\u093e \u092d\u090f\u0915\u093e \u092b\u0930\u0915 \u0939\u0930\u0941 \u0906\u092b\u0948 \u091c\u0947\u0928\u0947\u0930\u0947\u091f \u092d\u090f ", "C API changes": "C API \u0915\u093e \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928\u0939\u0930\u0941 ", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "\u0938\u093e\u0907\u0921\u092c\u0930 \u0938\u093e\u0928\u094b \u092c\u0928\u093e\u0909\u0928\u0941\u0939\u094b\u0938\u094d", "Complete Table of Contents": "\u092a\u0941\u0930\u093e \u0935\u093f\u0937\u092f\u0938\u0942\u091a\u0940", "Contents": "\u0935\u093f\u0937\u092f\u0938\u0942\u091a\u0940", "Copyright": "\u0915\u092a\u093f\u0930\u093e\u0907\u091f ", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "\u0938\u093e\u0907\u0921\u092c\u0930 \u0920\u0941\u0932\u094b \u092c\u0928\u093e\u0909\u0928\u0941\u0939\u094b\u0938\u094d", "Full index on one page": "\u092a\u0941\u0930\u093e \u0905\u0928\u0941\u0938\u0941\u091a\u0940 \u090f\u0915\u0948 \u092a\u093e\u0928\u093e\u092e\u093e", "General Index": "\u0938\u093e\u092e\u093e\u0928\u094d\u092f \u0905\u0928\u0941\u0938\u0941\u091a\u0940", "Global Module Index": "\u0917\u094d\u0932\u094b\u092c\u0932 \u092e\u0921\u0941\u0932 \u0905\u0928\u0941\u0938\u0941\u091a\u0940", "Go": "\u091c\u093e\u0928\u0941\u0939\u094b\u0938\u094d", "Hide Search Matches": "\u0916\u094b\u091c\u0947\u0915\u094b \u0928\u0924\u093f\u091c\u093e\u0939\u0930\u0941 \u0932\u0941\u0915\u093e\u0909\u0928\u0941\u0939\u094b\u0938\u094d", "Index": "\u0905\u0928\u0941\u0938\u0941\u091a\u0940", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "\u0905\u0915\u094d\u0937\u0930 \u0905\u0928\u0941\u0938\u093e\u0930 \u0905\u0928\u0941\u0938\u0941\u091a\u0940\u0915\u093e \u092a\u093e\u0928\u093e", "Indices and tables:": "\u0907\u0928\u094d\u0921\u0940\u0938\u0940\u0938\u094d\u0938 \u0930 \u0924\u0932\u093f\u0915\u093e", "Last updated on %(last_updated)s.": "\u092f\u094b \u092d\u0928\u094d\u0926\u093e \u0905\u0917\u093e\u0921\u0940 %(last_updated)s \u092e\u093e \u0905\u092a\u0921\u0947\u091f \u092d\u090f\u0915\u094b", "Library changes": "\u0932\u093e\u0908\u092c\u094d\u0930\u0947\u0930\u0940\u0915\u093e \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928\u0939\u0930\u0941", "Navigation": "\u0928\u0947\u092d\u093f\u0917\u0947\u0938\u0928 ", "Next topic": "\u092a\u091b\u093f\u0932\u094d\u0932\u094b \u0935\u093f\u0937\u092f", "Other changes": "\u0905\u0930\u0941 \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928\u0939\u0930\u0941 ", "Overview": "\u092a\u0941\u0928\u0930\u093e\u0935\u0932\u094b\u0915\u0928 ", "Permalink to this definition": "\u092f\u094b \u0905\u0930\u094d\u0925\u0915\u094b \u0932\u093e\u0917\u093f \u092a\u0930\u094d\u092e\u093e\u0932\u093f\u0928\u094d\u0915", "Permalink to this headline": "\u092f\u094b \u0936\u093f\u0930\u094d\u0937\u0915\u0915\u094b \u0932\u093e\u0917\u093f \u092a\u0930\u094d\u092e\u093e\u0932\u093f\u0928\u094d\u0915 \u0964 ", "Please activate JavaScript to enable the search\n functionality.": "\u0916\u094b\u091c\u094d\u0928\u0947 \u0915\u093e\u0930\u094d\u092f \u0906\u0917\u093e\u0921\u0940 \u092c\u0922\u093e\u0909\u0928\u0915\u094b \u0932\u093e\u0917\u093f \u091c\u093e\u092d\u093e\u0938\u094d\u0915\u0943\u092a\u094d\u091f \u091a\u0932\u093e\u0908\u0926\u093f\u0928\u0941\u0939\u094b\u0938 ", "Preparing search...": "", "Previous topic": "\u0905\u0918\u093f\u0932\u094d\u0932\u094b \u0935\u093f\u0937\u092f ", "Quick search": "\u091b\u093f\u091f\u094d\u091f\u094b \u0916\u094b\u091c\u094d\u0928\u0941\u0939\u094b\u0938\u094d", "Search": "\u0916\u094b\u091c\u094d\u0928\u0941\u0939\u094b\u0938\u094d ", "Search Page": "\u092a\u093e\u0928\u093e\u092e\u093e \u0916\u094b\u091c\u094d\u0928\u0941\u0939\u094b\u0938\u094d", "Search Results": "\u0916\u094b\u091c\u0947\u0915\u094b \u0928\u0924\u093f\u091c\u093e", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "\u0938\u094d\u0930\u094b\u0924 \u0926\u0947\u0916\u093e\u0909\u0928\u0941\u0939\u094b\u0938\u094d ", "Table of Contents": "", "This Page": "\u092f\u094b \u092a\u093e\u0928\u093e", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "\u0938\u092c\u0948 \u092b\u0928\u094d\u0915\u094d\u0938\u0928\u0938\u094d, \u0915\u0915\u094d\u0937\u093e\u0939\u0930\u0942 \u0930 \u091f\u0930\u094d\u092e\u0938\u094d", "can be huge": "\u0927\u0947\u0930\u0948 \u0920\u0941\u0932\u094b \u0939\u0941\u0928 \u0938\u0915\u094d\u091b", "last updated": "", "lists all sections and subsections": "\u0938\u092c\u0948 \u0938\u0947\u0915\u094d\u0938\u0928 \u0930 \u0938\u0935\u0938\u0947\u0915\u094d\u0938\u0928 \u0926\u0947\u0916\u093e\u0909\u0928\u0941\u0939\u094b\u0938\u094d", "next chapter": "\u092a\u091b\u093f\u0932\u094d\u0932\u094b \u0916\u0928\u094d\u0921", "previous chapter": "\u0905\u0918\u093f\u0932\u094d\u0932\u094b \u0916\u0928\u094d\u0921", "quick access to all modules": "\u0938\u092c\u0948 \u092e\u094b\u0926\u0941\u0932\u0947\u0938\u092e\u093e \u091b\u093f\u091f\u0948 \u091c\u093e\u0928\u0941\u0939\u094b\u0938\u094d", "search": "\u0916\u094b\u091c\u094d\u0928\u0941\u0939\u094b\u0938\u094d", "search this documentation": "\u092f\u094b \u0921\u0915\u0941\u092e\u0947\u0928\u094d\u091f \u0916\u094b\u091c\u094d\u0928\u0941\u0939\u094b\u0938\u094d", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/ne/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/ne/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..41c06cd --- /dev/null +++ b/sphinx/sphinx/locale/ne/LC_MESSAGES/sphinx.po @@ -0,0 +1,3467 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# FIRST AUTHOR <EMAIL@ADDRESS>, 2011 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Nepali (http://www.transifex.com/sphinx-doc/sphinx-1/language/ne/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: ne\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "बिइल्टिन्स" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "मडुलको तह" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "(in" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "सामान्य अनुसुची" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "अनुसुची" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "पछिल्लो" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "अघिल्लो" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "अनुसुची" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "रीलीज" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "सेक्सनको लेखक" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "मडुलको लेखक" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Codeको लेखक " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "लेखक" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parameters" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Returns" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Return type" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C कार्य)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C सदस्य)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C बृहत)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C किसिम)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C चल)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "फन्क्सन" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "सदस्य" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "बृहत" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "किसिम" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "चल" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "भर्सन %s मा नयाँ" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "भर्सन %s मा बदलिएको" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Deprecated since version %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Throws" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "कक्षा" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (built-in function)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s विधी)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (कक्षा)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (global variable or constant)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s attribute)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Arguments" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (मडुल)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "विधी" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "data" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "attribute" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "मडुल" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "मुख्य शब्द" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "सन्चालक" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "object" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "अपबाद" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "भनाई" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "built-in फन्क्सन" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "चलहरू" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Raises" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (in मडुल %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (built-in चल)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (in मडुल %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (built-in कक्षा)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (कक्षा in %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s विधी)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s static विधी)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s static विधी)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (%s.%s कक्षा विधी)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (%s कक्षा विधी)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s attribute)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Python Module Index" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "modules" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Deprecated" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "कक्षा विधी" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "static विधी" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "(deprecated)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (निर्देशिक)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (भूमिका)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "निर्देशिक" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "भूमिका" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "environment variable; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "शब्द-अर्थमा भएको" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "grammar token" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "सन्दर्व सामग्री" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "environment variable" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "कार्यक्रमका बिकल्प" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "मडुल अनुसुची" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "पानामा खोज्नुहोस्" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "%s हेर्नुहोस्" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "%s पनि हेर्नुहोस् " + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[स्रोत]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Todo" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "मौलिक इन्ट्री" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[docs]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Module code" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Source code for %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "पुनरावलोकन: module code" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>All modules for which code is available</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "alias of :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "ध्यानाकर्षण" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "होसियार " + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "खतरा" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "गलत" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "सङ्केत" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "जरुरी" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "टिप्पणी" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "पनि हेर्नुहोस" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Tip" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "साबधान" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "अघिल्लो पानासँग जोडीएको" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "खोज्नुहोस् " + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "जानुहोस्" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "स्रोत देखाउनुहोस् " + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "पुनरावलोकन " + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "इन्डीसीस्स र तलिका" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "पुरा विषयसूची" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "सबै सेक्सन र सवसेक्सन देखाउनुहोस्" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "यो डकुमेन्ट खोज्नुहोस्" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "ग्लोबल मडुल अनुसुची" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "सबै मोदुलेसमा छिटै जानुहोस्" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "सबै फन्क्सनस्, कक्षाहरू र टर्मस्" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Index – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "पुरा अनुसुची एकै पानामा" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "अक्षर अनुसार अनुसुचीका पाना" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "धेरै ठुलो हुन सक्छ" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "नेभिगेसन " + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "यी डकुमेन्टहरुको बारेमा" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "कपिराइट " + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "यो भन्दा अगाडी %(last_updated)s मा अपडेट भएको" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "अघिल्लो विषय " + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "अघिल्लो खन्ड" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "पछिल्लो विषय" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "पछिल्लो खन्ड" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "खोज्ने कार्य आगाडी बढाउनको लागि जाभास्कृप्ट चलाईदिनुहोस " + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "खोज्नुहोस्" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "खोजेको नतिजा" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "छिट्टो खोज्नुहोस्" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "यो पाना" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "भर्सन %(version)s मा भएका फरक हरु आफै जेनेरेट भए " + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "लाईब्रेरीका परिवर्तनहरु" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "C API का परिवर्तनहरु " + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "अरु परिवर्तनहरु " + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "यो शिर्षकको लागि पर्मालिन्क । " + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "यो अर्थको लागि पर्मालिन्क" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "खोजेको नतिजाहरु लुकाउनुहोस्" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "साइडबर ठुलो बनाउनुहोस्" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "साइडबर सानो बनाउनुहोस्" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "विषयसूची" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "फूट्नोट्स" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[चित्र]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/nl/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/nl/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..78f190a --- /dev/null +++ b/sphinx/sphinx/locale/nl/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "nl", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", in", "About these documents": "Over deze documenten", "Automatically generated list of changes in version %(version)s": "Automatisch gegenereerde lijst van veranderingen in versie %(version)s", "C API changes": "Veranderingen in de C-API", "Changes in Version %(version)s — %(docstitle)s": "Wijzigingen in Versie %(version)s — %(docstitle)s", "Collapse sidebar": "Zijpaneel inklappen", "Complete Table of Contents": "Volledige inhoudsopgave", "Contents": "Inhoudsopgave", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Aangemaakt met <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Zijpaneel uitklappen", "Full index on one page": "Volledige index op \u00e9\u00e9n pagina", "General Index": "Algemene index", "Global Module Index": "Globale Module-index", "Go": "Zoek", "Hide Search Matches": "Zoekresultaten verbergen", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Index pagineerd per letter", "Indices and tables:": "Indices en tabellen:", "Last updated on %(last_updated)s.": "Laatste aanpassing op %(last_updated)s.", "Library changes": "Veranderingen in de bibliotheek", "Navigation": "Navigatie", "Next topic": "Volgend onderwerp", "Other changes": "Andere veranderingen", "Overview": "Overzicht", "Permalink to this definition": "Permalink naar deze definitie", "Permalink to this headline": "Permalink naar deze titel", "Please activate JavaScript to enable the search\n functionality.": "Activeer JavaSscript om de zoekfunctionaliteit in te schakelen.", "Preparing search...": "Zoeken aan het voorbereiden...", "Previous topic": "Vorig onderwerp", "Quick search": "Snel zoeken", "Search": "Zoeken", "Search Page": "Zoekpagina", "Search Results": "Zoekresultaten", "Search finished, found %s page(s) matching the search query.": "Zoekopdracht voltooid, %s pagaina(s) gevonden die overeenkomen met de zoekterm.", "Search within %(docstitle)s": "Zoeken in %(docstitle)s", "Searching": "Bezig met zoeken", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Broncode weergeven", "Table of Contents": "", "This Page": "Deze pagina", "Welcome! This is": "Welkom! Dit is", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Uw zoekopdracht leverde geen resultaten op. Zorg ervoor dat alle woorden juist zijn gespeld en dat u voldoende categorie\u00ebn hebt geselecteerd.", "all functions, classes, terms": "alle functies, klasses en begrippen", "can be huge": "kan heel groot zijn", "last updated": "laatst bijgewerkt", "lists all sections and subsections": "geeft alle secties en subsecties weer", "next chapter": "volgend hoofdstuk", "previous chapter": "vorig hoofdstuk", "quick access to all modules": "sneltoegang naar alle modules", "search": "zoeken", "search this documentation": "zoeken in deze documentatie", "the documentation for": "de documentatie voor"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/nl/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/nl/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..fab7b5c --- /dev/null +++ b/sphinx/sphinx/locale/nl/LC_MESSAGES/sphinx.po @@ -0,0 +1,3471 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Bram Geron, 2017 +# brechtm, 2016 +# brechtm, 2018 +# FIRST AUTHOR <EMAIL@ADDRESS>, 2008 +# Gert van Dijk <gertvdijk@gmail.com>, 2019 +# Jesse Tan, 2017 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Dutch (http://www.transifex.com/sphinx-doc/sphinx-1/language/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "configuratiemap bevat geen conf.py bestand (%s)" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "Kan bronmap niet vinden (%s)" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "Bron- en doelmap kunnen niet identiek zijn" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "Sphinx v%s start op" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "Dit project vereist tenminste Sphinx v%s, en kan daarom niet worden gebouwd met deze versie." + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "aanmaken doelmap" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "'setup' gedefinieerd in conf.py is niet aanroepbaar (geen Python-callable). Pas a.u.b. de definitie aan zodat het een oproepbare functie wordt. Dit is nodig voor conf.py om zich als een Sphinx extensie te gedragen." + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "laden van vertalingen [%s]... " + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "klaar" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "mislukt: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "Geen bouwer geselecteerd, dus de standaardbouwer wordt gebruikt: html" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "gelukt" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "afgerond met problemen" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "bouwen %s, %s waarschuwing." + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "bouwen %s." + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "de %s extensie geeft niet aan of deze veilig is voor parallel lezen, er wordt aangenomen dat dit niet zo is - vraag de auteur van de extensie om dit te controleren en expliciet te maken" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "de %s extensie geeft niet aan of deze veilig is voor parallel schrijven, er wordt aangenomen dat dit niet zo is - vraag de auteur van de extensie om dit te controleren en expliciet te maken" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "seriële verwerking van %s" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "kan dictionary-instelling %r niet overschrijven in configuratie, wordt genegeerd (gebruik %r om individuele elementen te overschrijven)" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "ongeldig getal %r voor configuratiewaarde %r, wordt genegeerd" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "kan instelling %r niet overschrijven met zo'n waarde van een niet-ondersteund type; wordt genegeerd" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "onbekende configuratiewaarde %r tijdens overschrijven, wordt genegeerd" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "Ongeldige configuratiewaarde: %s" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "Configuratiewaarde %r was reeds aangevoerd" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "Een fout heeft zich voorgedaan in uw configuratiebestand:\n\n%s" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "Sectie %s" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "Fig. %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Tabel %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "Codefragment %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "De waarde voor configuratievariabele %r is een tekenreeks met karakters buiten de ASCII-set. Dit kan leiden tot problemen met de Unicode tekencodering. Maak alstublieft gebruik van Unicode-tekenreeksen, bijvoorbeeld: %r." + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "primary_domain %r onbekend, wordt genegeerd." + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "Gebeurtenis %r bestaat reeds" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "Onbekende gebeurtenisnaam: %s" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "Dit project vereist extensie %s met versie %s of hoger, en kan daarom niet met de geladen versie (%s) worden gebouwd" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "Bouwerklasse %s heeft geen \"name\"-attribuut" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "Bouwer %r bestaat reeds (in module %s)" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "Bouwernaam %s is niet geregistreerd of beschikbaar via entrypoint" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "Bouwernaam %s is niet geregistreerd" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "domein %s was reeds geregistreerd" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "domein %s nog niet geregistreerd" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "source_parser voor %r is reeds geregistreerd" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "Broncode-parser voor %s is niet geregistreerd" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "extensie %r is reeds in Sphinx ingevoegd sinds Sphinx-versie %s; deze extensie wordt genegeerd." + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "Oorspronkelijke exceptie:\n" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "Kon extensie %s niet importeren" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "extensie %r heeft geen setup() functie; weet u zeker dat het een Sphinx-extensiemodule is?" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "Dit project gebruikt extensie %s, maar die extensie heeft Sphinx-versie v%s of hoger nodig; het project kan daarom niet worden gebouwd met deze versie." + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "de setup() functie van extensie %r retourneerde een niet-ondersteund object; dit moet None of een metadata dictionary zijn" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "thema %r heeft geen \"theme\" instelling" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "thema %r heeft geen \"inherit\" instelling" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "thema met naam %r niet gevonden, geërfd door %r" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "instelling %s.%s komt niet voor in de doorzochte thema configuraties" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "bestand %r in thema pad is geen geldige zipfile of bevat geen thema" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "sphinx_rtd_theme is sinds versie 1.4.0 niet langer een harde afhankelijkheid. Installeer het handmatig. (pip install sphinx_rtd_theme)" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "thema met naam %r niet gevonden (ontbrekende theme.conf?)" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "bestand %r zoals gegeven op de opdrachtregel is niet aanwezig in de bronmap, wordt genegeerd" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Builtins" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Moduleniveau" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (in " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "de waarde voor de configuratievariabele html_use_opensearch moet een tekenreeks zijn" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Algemene index" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "index" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "volgende" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "vorige" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s documentatie" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Index" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Release" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "pad naar doelmap" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "Naam van het project" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "Auteur(s)" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "Versie van het project" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "Release van het project" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "Bestandsnaam van het hoofddocument (zonder bestandsextensie)" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "Fout: hoofddocumentbestandsnaam %s is reeds aanwezig op het aangewezen pad." + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "Afgerond: een beginstructuur van mappen is aangemaakt." + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "release van project" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "documenttaal" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "bestandsextensie van bronbestanden" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "bestandsnaam van hoofddocument" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "sjabloonmap voor sjabloonbestanden" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "Overmatige negative inspringing gevonden" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "Ongeldig onderschrift: %s" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "Gebruik van zowel \"%s\" als \"%s\" opties is niet toegestaan" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "Include bestand %r is niet gevonden of het lezen is mislukt" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "Encodering %r gebruikt voor het lezen van include-bestand %r lijkt verkeerd, probeer een :encoding: optie te specificeren" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "Object met naam %r is niet gevonden in include bestand %r" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "\"lineno-match\" kan niet gebruikt worden met een disjuncte set \"lines\"" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "Regels %r: geen regels gebruikt uit include-bestand %r" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Auteur van deze sectie: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Auteur van deze module: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Auteur van deze broncode:" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Auteur: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parameters" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Returns" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Return type" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C-functie)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C-member)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C-macro)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C-type)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C-variabele)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "functie" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "member" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "macro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "type" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "variabele" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Nieuw in versie %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Veranderd in versie %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Verouderd sinds versie %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "Sjabloonparameters" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Werpt" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "klasse" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "concept" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "enum" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "enumerator" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (ingebouwde functie)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s methode)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (klasse)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (globale variabele of constante)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s attribuut)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Argumenten" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (module)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "methode" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "data" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "attribuut" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "module" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "duplicaatlabel van formule %s, andere in %s" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "trefwoord" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operator" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "object" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "exceptie" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "statement" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "ingebouwde functie" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Variabelen" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Veroorzaakt" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (in module %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (geïntegreerde variabele)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (in module %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (geïntegreerde klasse)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (klasse in %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (methode van %s.%s)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (statische methode van %s.%s)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (statische methode van %s)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (%s.%s klassemethode)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (%s klassemethode)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (attribuut van %s.%s)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Python-moduleïndex" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "modules" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Verouderd" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "klassemethode" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "statische methode" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (verouderd)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (directive)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (rol)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "directive" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "rol" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "omgevingsvariabele; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "woordenlijstterm" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "grammaticatoken" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "verwijzingslabel" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "omgevingsvariabele" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "programmaoptie" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "document" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Module-index" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Zoekpagina" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "onderschrift ontbreekt voor link: %s" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "bronmap is gewijzigd" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "zie %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "zie %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Symbolen" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "bestandsextensie (standaardwaarde: rst)" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "%s is geen map." + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "ontbrekende '+' of '-' in optie '%s'." + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "'%s' is geen geldige optie." + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "'%s' is geen geldige pyversion optie" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "Graphviz directive mag niet zowel inhoud als een bestandsnaam argument hebben" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "Extern Graphviz bestand %r niet gevonden of het lezen is mislukt" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "\"graphviz\" directive zonder inhoud wordt genegeerd." + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "dot commando %r kan niet worden uitgevoerd (vereist voor graphviz output), controleer de instelling graphviz_dot" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "graphviz_output_format moet 'png' of 'svg' zijn, maar is %r" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[graaf: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[graaf]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "Permalink naar deze formule" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(in %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "(in %s)" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[broncode]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Te doen" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<origineel item>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(Het <<originele item>> bevindt zich in %s, regel %d.)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "originele item" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[documentatie]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Modulebroncode" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Broncode voor %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Overzicht: module broncode" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Alle modules waarvoor de broncode beschikbaar is</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "Basisklassen: %s" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "alias voor :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "Sleutelwoordargumenten" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "Verwijzingen" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Let op" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Pas op" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Gevaar" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Fout" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Hint" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Belangrijk" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Notitie" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Zie ook" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Tip" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Waarschuwing" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "Vervolgd van vorige pagina" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "Vervolgt op volgende pagina" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "pagina" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Zoeken" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Zoek" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Broncode weergeven" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Overzicht" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Welkom! Dit is" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "de documentatie voor" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "laatst bijgewerkt" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Indices en tabellen:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Volledige inhoudsopgave" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "geeft alle secties en subsecties weer" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "zoeken in deze documentatie" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Globale Module-index" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "sneltoegang naar alle modules" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "alle functies, klasses en begrippen" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Index – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Volledige index op één pagina" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Index pagineerd per letter" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "kan heel groot zijn" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navigatie" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Zoeken in %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Over deze documenten" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Copyright" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© Copyright %(copyright)s." + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Laatste aanpassing op %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Aangemaakt met <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Zoek in %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Vorig onderwerp" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "vorig hoofdstuk" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Volgend onderwerp" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "volgend hoofdstuk" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Activeer JavaSscript om de zoekfunctionaliteit in te schakelen." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "zoeken" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Zoekresultaten" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "Uw zoekopdracht leverde geen resultaten op. Zorg ervoor dat alle woorden juist zijn gespeld en dat u voldoende categorieën hebt geselecteerd." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Snel zoeken" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Deze pagina" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Wijzigingen in Versie %(version)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Automatisch gegenereerde lijst van veranderingen in versie %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Veranderingen in de bibliotheek" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Veranderingen in de C-API" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Andere veranderingen" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Permalink naar deze titel" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Permalink naar deze definitie" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Zoekresultaten verbergen" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "Bezig met zoeken" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Zoeken aan het voorbereiden..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "Zoekopdracht voltooid, %s pagaina(s) gevonden die overeenkomen met de zoekterm." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", in" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Zijpaneel uitklappen" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Zijpaneel inklappen" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Inhoudsopgave" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "meer dan één doel gevonden voor 'any' kruisverwijzing %r: is mogelijk %s" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "%s:%s verwijzingsdoel niet gevonden: %%(target)s" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "%r verwijzingsdoel niet gevonden: %%(target)s" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Permalink naar deze tabel" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Permalink naar deze broncode" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Permallink naar deze afbeelding" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "Permalink naar deze toctree" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Voetnoten" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[afbeelding: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[afbeelding]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "onderschrift niet binnen figuur." + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/pl/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/pl/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..4d22d3c --- /dev/null +++ b/sphinx/sphinx/locale/pl/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "pl", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", w ", "About these documents": "O tych dokumentach", "Automatically generated list of changes in version %(version)s": "Automatycznie wygenerowana lista zmian w wersji %(version)s", "C API changes": "Zmiany w C API", "Changes in Version %(version)s — %(docstitle)s": "Zmiany w wersji %(version)s — %(docstitle)s", "Collapse sidebar": "Zwi\u0144 pasek boczny", "Complete Table of Contents": "Kompletny spis tre\u015bci", "Contents": "Tre\u015b\u0107", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Utworzone przy pomocy <a href=\"http://sphinx-doc.org/\">Sphinx</a>'a %(sphinx_version)s.", "Expand sidebar": "Rozwi\u0144 pasek boczny", "Full index on one page": "Ca\u0142y indeks na jednej stronie", "General Index": "Indeks og\u00f3lny", "Global Module Index": "Globalny indeks modu\u0142\u00f3w", "Go": "Szukaj", "Hide Search Matches": "Ukryj wyniki wyszukiwania", "Index": "Indeks", "Index – %(key)s": "Indeks – %(key)s", "Index pages by letter": "Strony indeksu alfabetycznie", "Indices and tables:": "Indeksy i tablice:", "Last updated on %(last_updated)s.": "Ostatnia modyfikacja %(last_updated)s.", "Library changes": "Zmiany w bibliotekach", "Navigation": "Nawigacja", "Next topic": "Nast\u0119pny temat", "Other changes": "Inne zmiany", "Overview": "Przegl\u0105d", "Permalink to this definition": "Sta\u0142y odno\u015bnik do tej definicji", "Permalink to this headline": "Sta\u0142y odno\u015bnik do tego nag\u0142\u00f3wka", "Please activate JavaScript to enable the search\n functionality.": "Aby umo\u017cliwi\u0107 wyszukiwanie, prosz\u0119 w\u0142\u0105czy\u0107 JavaScript.", "Preparing search...": "Inicjalizacja wyszukiwania...", "Previous topic": "Poprzedni temat", "Quick search": "Szybkie wyszukiwanie", "Search": "Szukaj", "Search Page": "Wyszukiwanie", "Search Results": "Wyniki wyszukiwania", "Search finished, found %s page(s) matching the search query.": "Wyszukiwanie zako\u0144czone. Liczba znalezionych stron pasuj\u0105cych do zapytania: %s.", "Search within %(docstitle)s": "Szukaj po\u015br\u00f3d %(docstitle)s", "Searching": "Wyszukiwanie", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Poka\u017c \u017ar\u00f3d\u0142o", "Table of Contents": "Spis tre\u015bci", "This Page": "Ta strona", "Welcome! This is": "Witaj! To jest", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Twoje wyszukiwanie nie da\u0142o \u017cadnych wynik\u00f3w. Upewnij si\u0119, \u017ce wszystkie s\u0142owa s\u0105 wpisane prawid\u0142owo i \u017ce wybra\u0142e\u015b dostateczn\u0105 ilo\u015b\u0107 kategorii.", "all functions, classes, terms": "wszystkie funkcje, klasy, terminy", "can be huge": "mo\u017ce by\u0107 ogromny", "last updated": "ostatnio aktualizowana", "lists all sections and subsections": "wszystkie rozdzia\u0142y i podrozdzia\u0142y", "next chapter": "nast\u0119pny rozdzia\u0142", "previous chapter": "poprzedni rozdzia\u0142", "quick access to all modules": "szybki dost\u0119p do wszystkich modu\u0142\u00f3w", "search": "szukaj", "search this documentation": "przeszukaj t\u0119 dokumentacj\u0119", "the documentation for": "dokumentacja do"}, "plural_expr": "(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/pl/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/pl/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..9776262 --- /dev/null +++ b/sphinx/sphinx/locale/pl/LC_MESSAGES/sphinx.po @@ -0,0 +1,3469 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# m_aciek <maciej.olko@gmail.com>, 2017-2020 +# Michael Gielda <michal.gielda@gmail.com>, 2014 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2018 +# Tawez, 2013-2019 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Polish (http://www.transifex.com/sphinx-doc/sphinx-1/language/pl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: pl\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "folder konfiguracyjny nie zawiera pliku conf.py (%s)" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "Nie odnaleziono katalogu źródłowego (%s)" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "Katalog źródłowy i katalog docelowy nie mogą być identyczne" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "Uruchamianie Sphinksa v%s" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "Ten projekt potrzebuje Sphinksa w wersji co najmniej %s, dlatego nie może zostać zbudowany z tą wersją." + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "tworzenie katalogu wyjścia" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "podczas ustawiania rozszerzenia %s:" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "'setup' podany w conf.py nie jest wywoływalny. Prosimy zmienić jego definicję tak, aby była wywoływalną funkcją. Jest to potrzebne w conf.py, aby zachowywało się jak rozszerzenie Sphinksa." + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "ładowanie tłumaczeń [%s]..." + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "gotowe" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "niedostępne dla wbudowanych wiadomości" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "ładowanie zapakowanego środowiska" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "nie powiodło się: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "Nie wybrano buildera, używamy domyślnego: html" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "udało się" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "zakończono z problemami" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "build %s, %s ostrzeżenie." + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "build %s." + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "klasa %r jest już zarejestrowana, jej wizytorzy zostaną nadpisani" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "dyrektywa %r jest już zarejestrowana, jej wizytorzy zostaną nadpisani" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "rola %r jest już zarejestrowana, jej wizytorzy zostaną nadpisani" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "rozszerzenie %s nie deklaruje, czy jest bezpieczne do czytania współbieżnego, zakładamy że nie jest – prosimy zapytać autora rozszerzenie o sprawdzenie i zadeklarowania tego wprost" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "rozszerzenie %s nie deklaruje, czy jest bezpieczne do pisania współbieżnego, zakładamy że nie jest – prosimy zapytać autora rozszerzenia o sprawdzenie i zadeklarowanie tego wprost" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "tworzenie serii %s" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "nie można nadpisać słownikowego ustawienia konfiguracji %r, ignorowanie (użyj %r, by ustawić poszczególne elementy)" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "niepoprawna liczba %r dla wartości konfiguracji %r, ignorowanie" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "nie można nadpisać ustawienia konfiguracji %r nie wspieranym typem, ignorowanie" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "nieznana wartość konfiguracji %r w nadpisaniu, ignorowanie" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "Nie ma takiej wartości konfiguracyjnej: %s" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "Wartość konfiguracji %r już podana" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "W twoim piku konfiguracyjnym jest błąd składniowy: %s\n" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "Plik konfiguracyjny (albo jeden z modułów przez niego zaimportowanych) wywołał sys.exit()" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "W twoim piku konfiguracyjnym jest błąd programowalny: \n\n%s" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "Rozdział %s" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "Rys. %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Tabela %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "Listing %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "Wartość konfiguracyjna `{name}` musi być jednym z {candidates}, a podany jest `{current}`." + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "Nie odnaleziono primary_domain %r, zignorowano." + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "Zdarzenie %r już obecne" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "Nieznana nazwa zdarzenia: %s" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "Ten projekt potrzebuje rozszerzenia %s co najmniej w wersji %s, dlatego nie może zostać zbudowany z załadowaną wersją (%s)." + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "Klasa buildera %s nie ma atrybutu \"name\"" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "Builder %r już istnieje (w module %s)" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "Builder o nazwie %s jest niezarejestrowany lub dostępny przez punkt wejścia" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "Builder o nazwie %s jest niezarejestrowany" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "domena %s jest już zarejestrowana" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "domena %s nie została jeszcze zarejestrowana" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "%r object_type jest już zarejestrowany" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "%r crossref_type jest już zarejestrowany" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "source_suffix %r jest już zarejestrowany" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "source_parser dla %r jest już zarejestrowany" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "Parser źródeł dla %s jest nie zarejestrowany" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "enumerable_node %r już zarejestrowany" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "rozszerzenie %r zostało już włączone do Sphinx'a, począwszy od wersji %s; to rozszerzenie jest zignorowane." + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "Pierwotny wyjątek:\n" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "Nie można zaimportować rozszerzenia %s" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "rozszerzenie %r nie zawiera funkcji setup(); czy to na pewno moduł rozszerzenia Sphinx?" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "Rozszerzenie %s używane przez ten projekt potrzebuje Sphinksa w wersji co najmniej %s; dlatego nie może zostać zbudowane z tą wersją." + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "rozszerzenie %r zwróciło nie wspierany obiekt ze swojej funkcji setup(); powinno zwrócić None lub słownik metadanych" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "motyw %r nie ma ustawienia \"theme\"" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "motyw %r nie ma ustawienia \"inherit\"" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "nie znaleziono motywu o nazwie %r, z którego dziedziczy %r" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "ustawienie %s.%s nie występuje w żadnej z przeszukiwanych konfiguracji motywów" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "plik %r na ścieżce motywu nie jest poprawnym plikiem zip lub nie zawiera motywu" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "sphinx_rtd_theme nie jest już twardą zależnością od wersji 1.4.0. Prosimy zainstalować je ręcznie. (pip install sphinx_rtd_theme)" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "nie znaleziono motywu o nazwie %r (brak theme.conf?)" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "budowanie [mo]:" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "pisanie wyjścia..." + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "wszystkie z %d plików po" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "wsztstkie pliki źródłowe" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "plik %r podany w wierszu poleceń nie znajduje się w katalogu źródłowym, ignoruję" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "plik %r podany w wierszu poleceń nie istnieje, ignoruję" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "%d plików źródłowych podano w wierszu poleceń" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "znaleziono %d" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "nic nie znaleziono" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "kopiowanie obrazków..." + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "pisanie pliku %s..." + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "nieznany mimetype dla %s, ignoruję" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "brak zmian w wersji %s." + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Wbudowane" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Poziom modułu" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "kopiowanie plików źródłowych..." + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "Plik ePub znajduje się w %(outdir)s." + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "nieprawidłowy css_file: %r, zignorowano" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "wczytywanie szablonów... " + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "Nie znaleziono kotwicy '%s'" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "zepsuty odnośnik: %s (%s)" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "Strona HTML jest w %(outdir)s." + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "Pliki Texinfo znajdują się w %(outdir)s." + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "nie znaleziono wartości konfiguracyjnej \"texinfo_documents\"; żadne dokumenty nie zostaną zapisane" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "wartość konfiguracyjna \"texinfo_documents\" odwołuje się do nieznanego dokumentu %s" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (w " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "Pliki tekstowe są w %(outdir)s." + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "błąd zapisu pliku %s: %s" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "Pliki XML znajdują się w %(outdir)s." + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "Pliki pseudo-XML są w %(outdir)s." + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "Strony HTML są w %(outdir)s." + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d %b %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "wartość konfiguracyjna html_use_opensearch musi być teraz ciągiem" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Indeks ogólny" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "indeks" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "dalej" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "wstecz" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "kopiowanie plików do pobrania..." + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "kopiowanie plików statycznych..." + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "nie można skopiować pliku statycznego %r" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "nie można skopiować dodatkowego pliku %r" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "Wystąpił błąd podczas renderowania strony %s.\nPowód: %r" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "nieprawidłowy js_file: %r, zignorowano" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "Podano nieznany math_renderer %r." + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "plik favicon %r nie istnieje" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s - dokumentacja" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "Pliki LaTeX znajdują się w %(outdir)s." + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "nie znaleziono wartości konfiguracyjnej \"latex_documents\"; żadne dokumenty nie zostaną zapisane" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "wartość konfiguracyjna \"latex_documents\" odwołuje się do nieznanego dokumentu %s" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Indeks" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Wydanie" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "Błąd kodowania:" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "Błąd rekursji:" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "Wystąpił wyjątek:" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "Raport o błędzie można zgłosić pod adresem <https://github.com/sphinx-doc/sphinx/issues>. Dzięki!" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "Aby uzyskać więcej informacji, odwiedź <http://sphinx-doc.org/>." + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "ogólne opcje" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "zapisz wszystkie pliki (domyślnie: zapisz tylko nowe i zmienione pliki)" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "zastąp ustawienie w pliku konfiguracyjnym" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "przekaż wartość do szablonów HTML" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "zwiększ szczegółowość (może być powtórzone)" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "zapisz ostrzeżenia (i błędy) do podanego pliku" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "zamień ostrzeżenia na błędy" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "nie można znaleźć plików %r" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "Argument opcji -D musi mieć postać nazwa=wartość" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "Argument opcji -A musi mieć postać nazwa=wartość" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "warunkowe włączenie treści na podstawie wartości konfiguracyjnych" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "Wprowadź poprawną nazwę ścieżki." + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "Wprowadź \"y\" lub \"n\"." + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "Podaj rozszerzenie pliku, na przykład '.rst' lub '.txt'." + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "Witamy w narzędziu quickstart Sphinksa %s." + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "Ścieżka root dla dokumentacji" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "Błąd: znaleziono istniejący conf.py na wskazanej ścieżce root." + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "sphinx-quickstart nie nadpisze istniejących projektów Sphinx." + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "Wprowadź, prosimy, nową ścieżkę root (lub tylko Enter, aby wyjść)" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "Rozdziel katalogi source i build (y/n)" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "Prefiks nazw dla katalogów templates i static" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "Nazwa projektu" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "Nazwisko autora" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "Wersja projektu" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "Wydanie projektu" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "Język projektu" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "Sufiks pliku źródłowego" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "sphinx-quickstart nie nadpisze istniejącego pliku." + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "Wskaż, które z następujących rozszerzeń Sphinx powinny być włączone:" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "Stworzyć Makefile? (y/n)" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "Tworzenie pliku %s." + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "Plik %s już istnieje, pomijam." + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "Zakończono: Utworzono początkową strukturę katalogów." + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "tryb cichy" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "Podstawowe opcje projektu" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "nazwa projektu" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "nazwiska autorów" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "wersja projektu" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "język dokumentu" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "rozszerzenie pliku źródłowego" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "nazwa głównego dokumentu" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "Opcje rozszerzeń" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "włącz rozszerzenie %s" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "utwórz plik makefile" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "nie twórz pliku makefile" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "twórz plik wsadowy" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "nie twórz pliku wsadowego" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "Wykryto nadużycie" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "Nieprawidłowy podpis: %s" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "Nie można użyć jednocześnie opcji \"%s\" i \"%s\"" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "Plik include %r nie znaleziony lub nie powiódł się jego odczyt" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "Kodowanie %r użyte do odczytu pliku include %r wydaje się być złe, spróbuj dając opcję :encoding:" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "Nie znaleziono obiektu o nazwie %r w pliku include %r" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "Nie można użyć „lineno-match” z rozłącznym zbiorem „lines”" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "Specyfikacja linii %r: nie wyciągnięto żadnych linii z pliku include %r" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Autor rozdziału: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Autor modułu: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Autor kodu: " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Autor: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parametry" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Zwraca" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Typ zwracany" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (funkcja C)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (pole C)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (makro C)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (typ C)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (zmienna C)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "funkcja" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "pole" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "makro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "typ" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "zmienna" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Nowe w wersji %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Zmienione w wersji %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Niezalecane od wersji %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "Cytat [%s] nie ma odniesienia." + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "Parametry szablonu" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Wyrzuca" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "klasa" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "unia" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "koncepcja" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "enum" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "enumerator" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (funkcja wbudowana)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s metoda)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (klasa)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (zmienna globalna lub stała)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s atrybut)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Argumenty" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (moduł)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "metoda" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "dane" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "atrybut" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "moduł" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "zduplikowana etykieta równania %s, inne wystąpienie w %s" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "Nieprawidłowy math_eqref_format: %r" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "słowo kluczowe" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operator" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "obiekt" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "wyjątek" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "instrukcja" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "funkcja wbudowana" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Zmienne" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Wyrzuca" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (w module %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (zmienna wbudowana)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (w module %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (klasa wbudowana)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (klasa w module %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s metoda)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s metoda statyczna)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s metoda statyczna)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (%s.%s metoda klasy)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (%s metoda klasy)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (atrybut %s.%s)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Indeks modułów Pythona" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "moduły" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Niezalecane" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "metoda klasy" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "statyczna metoda" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (niezalecane)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (dyrektywa)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (rola)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "dyrektywa" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "rola" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "zmienna środowiskowa; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "termin glosariusza" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "symbol gramatyki" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "etykieta odsyłacza" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "zmienna środowiskowa" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "opcja programu" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "dokument" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Indeks modułów" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Wyszukiwanie" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "nowa konfiguracja" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "konfiguracja zmieniona" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "rozszerzenie zmienione" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "katalog źródłowy został zmieniony" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "Domena %r nie jest zarejestrowana" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "zobacz %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "zobacz także %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Symbole" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "maksymalna głębokość submodułów wyświetlanych w spisie treści (domyślnie: 4)" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "nadpisz istniejące pliki" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "wykonaj skrypt bez tworzenia plików" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "nie twórz pliku spisu treści" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "rozszerzenie pliku (domyślnie: rst)" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "%s nie jest katalogiem." + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "nieprawidłowe wyrażenie regularne %r w %s" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "nieprawidłowe wyrażenie regularne %r w coverage_c_regexes" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "moduł %s nie mógł zostać zaimportowany: %s" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "brak '+' lub '-' w opcji '%s'." + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "'%s' nie jest prawidłową opcją." + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "'%s' nie jest prawidłową opcją pyversion." + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "dyrektywa Graphviz nie może mieć jednocześnie argumentów content i filename" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "Nie znaleziono zewnętrznego pliku Graphviz %r lub jego odczyt się nie powiódł" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "Ignorujemy dyrektywę „graphviz” bez treści." + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "komenda dot %r nie może zostać uruchomiona (potrzebna do wyjścia graphviz), sprawdź ustawienia graphviz_dot" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "graphviz_output_format musi mieć wartość „png” lub „svg” a ma %r" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[wykres: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[wykres]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "Stały odnośnik do tego równania" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(w %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr " (w %s)" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[źródło]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Todo" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<oryginalny wpis>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(<<Oryginalny wpis>> znajduje się w pliku %s, w linii %d.)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "oryginalny wpis" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[dokumentacja]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Kod modułu" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Kod źródłowy modułu %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Przeglądanie: kod modułu" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Wszystkie moduły, dla których jest dostępny kod</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "błąd podczas formatowania argumentów dla %s: %s" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "brakujący atrybut %s w obiekcie %s" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "Klasy bazowe: %s" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "alias klasy :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "domyślny sufiks dla plików (domyślnie: %(default)s)" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "Argumenty Nazwane" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "Przykład" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "Przykłady" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "Uwagi" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "Pozostałe parametry" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Uwaga" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Ostrzeżenie" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Niebezpieczeństwo" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Błąd" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Podpowiedź" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Ważne" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Informacja" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Zobacz także" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Wskazówka" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Ostrzeżenie" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "kontynuacja poprzedniej strony" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "ciąg dalszy na następnej stronie" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "Niealfabetyczny" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "Liczby" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "strona" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "Spis treści" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Szukaj" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Szukaj" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Pokaż źródło" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Przegląd" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Witaj! To jest" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "dokumentacja do" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "ostatnio aktualizowana" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Indeksy i tablice:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Kompletny spis treści" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "wszystkie rozdziały i podrozdziały" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "przeszukaj tę dokumentację" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Globalny indeks modułów" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "szybki dostęp do wszystkich modułów" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "wszystkie funkcje, klasy, terminy" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Indeks – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Cały indeks na jednej stronie" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Strony indeksu alfabetycznie" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "może być ogromny" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Nawigacja" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Szukaj pośród %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "O tych dokumentach" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Copyright" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© Copyright %(copyright)s." + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Ostatnia modyfikacja %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Utworzone przy pomocy <a href=\"http://sphinx-doc.org/\">Sphinx</a>'a %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Przeszukaj %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Poprzedni temat" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "poprzedni rozdział" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Następny temat" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "następny rozdział" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Aby umożliwić wyszukiwanie, proszę włączyć JavaScript." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "szukaj" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Wyniki wyszukiwania" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "Twoje wyszukiwanie nie dało żadnych wyników. Upewnij się, że wszystkie słowa są wpisane prawidłowo i że wybrałeś dostateczną ilość kategorii." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Szybkie wyszukiwanie" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Ta strona" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Zmiany w wersji %(version)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Automatycznie wygenerowana lista zmian w wersji %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Zmiany w bibliotekach" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Zmiany w C API" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Inne zmiany" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Stały odnośnik do tego nagłówka" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Stały odnośnik do tej definicji" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Ukryj wyniki wyszukiwania" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "Wyszukiwanie" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Inicjalizacja wyszukiwania..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "Wyszukiwanie zakończone. Liczba znalezionych stron pasujących do zapytania: %s." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", w " + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Rozwiń pasek boczny" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Zwiń pasek boczny" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Treść" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "znaleziono więcej niż jeden cel dla cross-referencji „any” %r: może być %s" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "nie znaleziono celu referencji %s:%s: %%(target)s" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "nie znaleziono celu referencji %r: %%(target)s" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "Nieznany format obrazka: %s..." + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "błąd odczytu: %s, %s" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "błąd zapisu: %s, %s" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Stały odnośnik do tej tabeli" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Stały odnośnik do tego bloku kodu" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Stały odnośnik do tego obrazu" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "Stały odnośnik do tego spisu treści" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Przypisy" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "%s" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[obraz: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[obraz]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/pt/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/pt/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..a70f170 --- /dev/null +++ b/sphinx/sphinx/locale/pt/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "pt", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "", "Table of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/pt/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/pt/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..f8d4c95 --- /dev/null +++ b/sphinx/sphinx/locale/pt/LC_MESSAGES/sphinx.po @@ -0,0 +1,3465 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Portuguese (http://www.transifex.com/sphinx-doc/sphinx-1/language/pt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: pt\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..f9bf193 --- /dev/null +++ b/sphinx/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "pt_BR", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", em ", "About these documents": "Sobre esses documentos", "Automatically generated list of changes in version %(version)s": "Lista de altera\u00e7\u00f5es na vers\u00e3o %(version)s, gerada automaticamente", "C API changes": "Altera\u00e7\u00f5es na API C", "Changes in Version %(version)s — %(docstitle)s": "Modifica\u00e7\u00f5es na vers\u00e3o %(version)s — %(docstitle)s", "Collapse sidebar": "Recolher painel lateral", "Complete Table of Contents": "Tabela Completa dos Conte\u00fados", "Contents": "Conte\u00fados", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Criado usando <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Expandir painel lateral", "Full index on one page": "\u00cdndice completo em p\u00e1gina \u00fanica", "General Index": "\u00cdndice Geral", "Global Module Index": "\u00cdndice Global de M\u00f3dulos", "Go": "Ir", "Hide Search Matches": "Esconder Resultados da Busca", "Index": "\u00cdndice", "Index – %(key)s": "\u00cdndice – %(key)s", "Index pages by letter": "P\u00e1ginas de \u00edndice por letra", "Indices and tables:": "\u00cdndices e Tabelas:", "Last updated on %(last_updated)s.": "\u00daltima atualiza\u00e7\u00e3o em %(last_updated)s.", "Library changes": "Altera\u00e7\u00f5es na biblioteca", "Navigation": "Navega\u00e7\u00e3o", "Next topic": "Pr\u00f3ximo t\u00f3pico", "Other changes": "Outras altera\u00e7\u00f5es", "Overview": "Vis\u00e3o geral", "Permalink to this definition": "Link permanente para esta defini\u00e7\u00e3o", "Permalink to this headline": "Link permanente para este t\u00edtulo", "Please activate JavaScript to enable the search\n functionality.": "Por favor, ativar JavaScript para habilitar a\nfuncionalidade de busca.", "Preparing search...": "Preparando a busca...", "Previous topic": "T\u00f3pico anterior", "Quick search": "Busca r\u00e1pida", "Search": "Buscar", "Search Page": "P\u00e1gina de Busca", "Search Results": "Resultados da Busca", "Search finished, found %s page(s) matching the search query.": "Busca conclu\u00edda. %s p\u00e1gina(s) que atendem a consulta.", "Search within %(docstitle)s": "Pesquisar dentro de %(docstitle)s", "Searching": "Buscando", "Searching for multiple words only shows matches that contain\n all words.": "Pesquisando por v\u00e1rias palavras s\u00f3 mostra correspond\u00eancias\nque cont\u00eam todas as palavras.", "Show Source": "Exibir Fonte", "Table of Contents": "Tabela de Conte\u00fado", "This Page": "Essa P\u00e1gina", "Welcome! This is": "Bem Vindo! \u00c9 isso a\u00ed.", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Sua busca n\u00e3o encontrou nenhum documento. Por favor, confirme se todas as palavras est\u00e3o grafadas corretamente e se voc\u00ea selecionou categorias suficientes.", "all functions, classes, terms": "todas fun\u00e7\u00f5es, classes, termos", "can be huge": "pode ser enorme", "last updated": "\u00faltima atualiza\u00e7\u00e3o", "lists all sections and subsections": "Listar todas se\u00e7\u00f5es e subse\u00e7\u00f5es", "next chapter": "pr\u00f3ximo cap\u00edtulo", "previous chapter": "cap\u00edtulo anterior", "quick access to all modules": "acesso r\u00e1pido para todos os m\u00f3dulos", "search": "buscar", "search this documentation": "Buscar nessa documenta\u00e7\u00e3o", "the documentation for": "documenta\u00e7\u00e3o para"}, "plural_expr": "(n > 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..eaed82d --- /dev/null +++ b/sphinx/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po @@ -0,0 +1,3471 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Claudio Rogerio Carvalho Filho <excriptbrasil@gmail.com>, 2016 +# FIRST AUTHOR <roger.demetrescu@gmail.com>, 2008 +# gilberto dos santos alves <gsavix@gmail.com>, 2015-2016 +# Rafael Fontenelle <rafaelff@gnome.org>, 2019 +# Rafael Fontenelle <rffontenelle@gmail.com>, 2019-2020 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 22:13+0000\n" +"Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/sphinx-doc/sphinx-1/language/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "o diretório de configuração não contém um arquivo conf.py (%s)" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "Não foi possível encontrar o diretório de origem (%s)" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "Diretório de origem e o diretório de destino não podem ser idênticos" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "Executando Sphinx v%s" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "Por motivos de segurança, o modo paralelo está desativado no macOS e python3.8 e superior. Para mais detalhes, leia https://github.com/sphinx-doc/sphinx/issues/6803" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "Este projeto precisa de pelo menos Sphinx v%s e, portanto, não pode ser compilado com esta versão." + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "criando o diretório de saída" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "enquanto definia a extensão %s:" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "“setup”, conforme definido atualmente em conf.py, não é um invocável do Python. Modifique sua definição para torná-la uma função que pode ser chamada. Isso é necessário para o conf.py se comportar como uma extensão do Sphinx." + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "carregando traduções [%s]… " + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "feito" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "não disponível para mensagens internas" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "carregando ambiente com pickle" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "falha: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "Nenhum compilador selecionado, usando padrão: html" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "bem-sucedida" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "finalizada com problemas" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "compilação %s, %s aviso. (com avisos tratados como erros)." + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "compilação %s, %s avisos (com avisos tratados como erros)." + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "compilação %s, %s aviso." + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "compilação %s, %s avisos." + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "compilação %s." + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "classe de nodo %r já está registrada, seus visitantes serão sobrescritos" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "diretiva %r já está registrada, ela será sobrescrita" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "função %r já está registrada, ela será sobrescrita" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "a extensão %s não declara se é segura para leitura em paralelo, supondo que não seja – peça ao autor da extensão para verificar e torná-la explícita" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "a extensão %s não é segura para leitura em paralelo" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "a extensão %s não declara se é segura para escrita em paralelo, supondo que não seja – peça ao autor da extensão para verificar e torná-la explícita" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "a extensão %s não é segura para escrita em paralelo" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "fazendo serial %s" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "não foi possível sobrescrever a configuração do dicionário %r ignorando (use %r para definir elementos individuais)" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "número inválido %r para valor de configuração %r, ignorando" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "não é possível sobrescrever a configuração %r com tipo sem suporte, ignorando" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "valor de configuração desconhecido %r na sobrescrita, ignorando" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "Valor de configuração inexistente: %s" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "Valor da configuração %r já presente" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "Há um erro de sintaxe em seu arquivo de configuração: %s\n" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "O arquivo de configuração (ou um dos módulos que ele importa) chamou sys.exit()" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "Há um erro de programável em seu arquivo de configuração:\n\n%s" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "O valor da configuração “source_suffix” espera uma string, lista de strings ou dicionário. Mas “%r” é fornecido." + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "Seção %s" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "Fig. %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Tabela %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "Listagem %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "O valor da configuração “{name}” deve ser um entre {candidates}, mas “{current}” é fornecido." + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "O valor da configuração “{name}” possui tipo “{current.__name__}”; esperava {permitted}." + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "O valor da configuração “{name}” possui tipo “{current.__name__}”; o padrão é “{default.__name__}”." + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "o valor de configuração %r é definido como uma sequência com caracteres não ASCII; isso pode levar a erros Unicode. Use strings Unicode como, por exemplo, %r." + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "primary_domain %r não encontrado, ignorado." + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "Desde v2.0, o Sphinx usa “index” como master_doc por padrão. Por favor, adicione “master_doc = 'contents'” ao seu conf.py." + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "Evento %r já presente" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "Nome de evento desconhecido: %s" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "A extensão %s é requerida pelas configurações needs_extensions, mas não está carregada." + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "Este projeto precisa da extensão %s pelo menos na versão %s e, portanto, não pode ser compilado com a versão carregada (%s)." + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "Nome de analisador léxico Pygments %r não é conhecido" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "Não foi possível fazer análise léxica de literal_block como “%s”. Realce de sintaxe ignorado." + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "documento não legível. Ignorado." + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "Classe de compilador %s possui nenhum atributo “name”" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "Compilador %r já existe (no módulo %s)" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "Nome do compilador %s não registrado ou disponível através do ponto de entrada" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "Nome do compilador %s não registrado" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "domínio %s já registrado" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "domínio %s ainda não registrado" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "A diretiva %r já está registrada para o domínio %s" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "A função %r já está registrada para o domínio %s" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "O índice %r já está registrado para o domínio %s" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "O object_type %r já está registrado" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "O crossref_type %r já está registrado" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "source_suffix %r já está registrado" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "source_parser para %r já está registrado" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "Analisador de fonte para %s não registrado" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "Tradutor para %r já existe" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "kwargs para add_node() deve ser uma tupla de função (visit, depart): %r=%r" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "enumerable_node %r já registrado" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "renderizador matemático %s já está registrado" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "a extensão %r já foi mesclada com Sphinx desde a versão %s; esta extensão é ignorada." + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "Extensão original:\n" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "Não foi possível importar a extensão %s" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "a extensão %r possui nenhuma função setup(); é realmente um módulo de extensão do Sphinx?" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "A extensão %s usada por este projeto precisa de pelo menos Sphinx v%s e, portanto, não pode ser compilada com esta versão." + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "a extensão %r retornou um objeto não suportado de sua função setup(); deve retornar None ou um dicionário de metadados" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Propostas Estendidas Python; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "o tema %r não tem a configuração “theme”" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "o tema %r não tem a configuração “inherit”" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "nenhum tema chamado %r encontrado, herdado por %r" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "a configuração %s.%s ocorre em nenhuma das configurações de tema pesquisadas" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "sem suporte à opção de tema %r fornecida" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "o arquivo %r no caminho de tema não é um arquivo zip válido ou contém nenhum tema" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "sphinx_rtd_theme não é mais uma dependência rígida desde a versão 1.4.0. Por favor, instale-o manualmente. (pip install sphinx_rtd_theme)" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "nenhum tema chamado %r encontrado (faltando theme.conf?)" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "uma imagem adequada para o compilador %s não encontrada: %s (%s)" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "uma imagem adequada para o compilador %s não encontrada: %s" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "compilando [mo]: " + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "escrevendo saída… " + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "todos os %d arquivos po" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "alvos para %d arquivos po que estão especificados" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "alvos para %d arquivos po que estão desatualizados" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "todos os arquivos-fonte" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "o arquivo %r fornecido na linha de comando não está dentro do diretório fonte, ignorando" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "o arquivo %r fornecido na linha de comando não existe, ignorando" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "%d arquivos-fonte dados na linha de comando" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "alvos para %d arquivos fonte que estão desatualizados" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "compilando [%s]: " + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "procurando por arquivos agora desatualizados… " + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "%d encontrado" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "nenhum encontrado" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "tornando um ambiente pickle" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "verificando consistência" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "nenhum algo está desatualizado." + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "atualizando ambiente: " + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "%s adicionado(s), %s alterado(s), %s removido(s)" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "lendo fontes… " + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "aguardando por workers…" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "docnames para escrever: %s" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "preparando documentos" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "entrada de tabela de conteúdos duplicada encontrada: %s" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "copiando imagens… " + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "não foi possível ler o arquivo de imagem %r: copiando-o" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "não foi possível copiar arquivo de imagem %r: %s" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "não foi possível escrever arquivo de imagem %r: %s" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "Pillow não encontrado – copiando arquivos de imagem" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "escrevendo arquivo %s…" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "tipo mime desconhecido para %s, ignorando" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "O arquivo de visão geral está em %(outdir)s." + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "nenhuma alteração na versão %s." + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "escrevendo arquivo de resumo…" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Internos" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Nível do Módulo" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "copiando arquivos-fonte…" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "não foi possível ler %r para criação do changelog" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "O compilador fictício não gera arquivos." + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "O arquivo ePub está em %(outdir)s." + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "o valor da configuração “epub_language” (ou “language”) não deve estar vazio para EPUB3" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "o valor da configuração “epub_uid” deve ser XML NAME para EPUB3" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "o valor da configuração “epub_title” (ou “html_title”) não deve estar vazio para EPUB3" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "o valor da configuração “epub_author” não deve estar vazio para EPUB3" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "o valor da configuração “epub_contributor” não deve estar vazio para EPUB3" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "o valor da configuração “epub_description” não deve estar vazio para EPUB3" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "o valor da configuração “epub_publisher” não deve estar vazio para EPUB3" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "o valor da configuração “epub_copyright” (ou “copyright”) não deve estar vazio para EPUB3" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "o valor da configuração “epub_identifier” não deve estar vazio para EPUB3" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "o valor da configuração “version” não deve estar vazio para EPUB3" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "css_file inválido: %r, ignorado" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "Os catálogos de mensagens estão em %(outdir)s." + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "alvos para os %d arquivos de modelo" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "lendo modelos… " + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "escrevendo catálogos de mensagens… " + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "Procure por quaisquer erros na saída acima ou em %(outdir)s/output.txt" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "Âncora “%s” não encontrada" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "link quebrado: %s (%s)" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "As páginas de manual estão em %(outdir)s." + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "nenhum valor de configuração “man_pages” encontrado; nenhuma página de manual será escrita" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "escrevendo" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "o valor da configuração “man_pages” faz referência a um documento desconhecido %s" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "A página HTML está em %(outdir)s." + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "montando documento único" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "escrevendo arquivos adicionais" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "Os arquivos Texinfo estão em %(outdir)s." + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "\nExecute \"make\" nesse diretório para executá-los com makeinfo\n(use \"make info\" aqui para fazer isso automaticamente)." + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "nenhuma valor de configuração “texinfo_documents” encontrado; nenhum documento será escrito" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "o valor da configuração “texinfo_documents” faz referência a documento desconhecido %s" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "processando %s" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "resolvendo referências…" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (em " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "copiando arquivos de suporte Texinfo" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "erro ao escrever o arquivo Makefile: %s" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "Os arquivos texto estão em %(outdir)s." + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "erro ao escrever o arquivo %s: %s" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "Os arquivos XML estão em %(outdir)s." + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "Os arquivos pseudo-XML estão em %(outdir)s." + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "arquivo de informações da compilação está quebrado: %r" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "As páginas HTML estão em %(outdir)s." + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "Falha ao ler o arquivo de informações de compilação: %r" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d %b %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "o valor da configuração html_use_opensearch deve agora ser uma string" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Índice Geral" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "índice" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "próximo" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "anterior" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "gerando índices" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "escrevendo páginas adicionais" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "copiando arquivos baixáveis… " + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "não foi possível copiar o arquivo baixável %r: %s" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "copiando arquivos estáticos… " + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "não foi possível copiar o arquivo estático %r" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "copiando arquivos extras" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "não foi possível copiar o arquivo extra %r" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "Falha ao escrever o arquivo de informações de compilação: %r" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "não foi possível carregar o índice de pesquisa, mas nem todos os documentos serão compilados: o índice ficará incompleto." + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "a página %s corresponde a dois padrões em html_sidebars: %r e %r" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "ocorreu um erro Unicode ao renderizar a página %s. Verifique se todos os valores de configuração que contêm conteúdo não ASCII são strings Unicode." + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "Ocorreu um erro ao renderizar a página %s.\nMotivo: %r" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "despejando inventário de objetos" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "despejando índice de pesquisa em %s" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "js_file inválido: %r, ignorado" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "Muitos math_renders estão registrados, mas nenhum math_renderer está selecionado." + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "math_renderer desconhecido %r é fornecido." + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "a entrada de html_extra_path %r não existe" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "entrada de html_extra_path %r está posicionada dentro de outdir" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "a entrada de html_static_path %r não existe" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "entrada de html_static_path %r está posicionada dento de outdir" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "o arquivo logo %r não existe" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "o arquivo favicon %r não existe" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "documentação %s %s" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "Os arquivos LaTeX estão em %(outdir)s." + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "\nExecute \"make\" nesse diretório para executá-los com (pdf)latex\n(use \"make latexpdf\" aqui para fazer isso automaticamente)." + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "nenhuma valor da configuração “latex_documents” encontrado; nenhum documento será escrito" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "o valor da configuração “latex_documents” faz referência a um documento desconhecido %s" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Índice" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Release" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "nenhuma opção Babel conhecida para o idioma %r" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "copiando arquivos de suporte TeX" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "copiando arquivos de suporte TeX…" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "copiando arquivos adicionais" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "Chave configuração desconhecida: latex_elements[%r], ignorado." + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "%r não possui a configuração \"theme\"" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "%r não possui a configuração \"%s\"" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "Ocorreu uma exceção enquanto compilava, iniciando depurador:" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "Interrompido!" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "Erro de marcação reST:" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "Erro de codificação:" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "O rastro completo foi salvo em %s, caso você queira relatar o problema aos desenvolvedores." + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "Erro de recursão:" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "Isso pode acontecer com arquivos-fonte muito grandes ou profundamente aninhados. Você pode aumentar cuidadosamente o limite de recursão padrão do Python de 1000 em conf.py, p.ex.:" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "Ocorreu uma exceção:" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "Por favor, relate isso também se houver um erro do usuário, para que uma mensagem de erro melhor possa ser fornecida na próxima vez." + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "Um relatório de erro pode ser preenchido no rastreador em <https://github.com/sphinx-doc/sphinx/issues>. Obrigado!" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "número de tarefas deve ser um número positivo" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "Para mais informações, visite <http://sphinx-doc.org/>." + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "\nGera documentação a partir dos arquivos-fonte.\n\nsphinx-build gera documentação a partir dos arquivos em SOURCEDIR e a coloca\nem OUTPUTDIR. Ele procura por \"conf.py\" em SOURCEDIR para as definições de\nconfiguração. A ferramenta \"sphinx-quickstart\" pode ser usada para gerar\narquivos de modelo, incluindo \"conf.py\"\n\nO sphinx-build pode criar documentação em diferentes formatos. Um formato\né selecionado especificando o nome do compilador na linha de comandos; o\npadrão é HTML. Os compiladores também podem executar outras tarefas\nrelacionadas ao processamento da documentação.\n\nPor padrão, tudo o que está desatualizado é compilado. A saída apenas para\narquivos selecionados pode ser criada especificando nomes de arquivos\nindividuais.\n" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "caminho para os arquivos-fonte da documentação" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "caminho para o diretório de saída" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "uma lista de arquivos específicos para recompilar. Ignorado se -a for especificado" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "opções gerais" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "compilador para usar (padrão: html)" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "escrever todos os arquivos (padrão: escrever apenas arquivos novos e alterados)" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "não usa um ambiente salvo, sempre lê todos os arquivos" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "caminho para o ambiente em cache e arquivos doctree (padrão: OUTPUTDIR/.doctrees)" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "compila em paralelo com N processos onde possível (o valor especial “auto” será definido com N para número de CPUs)" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "caminho no qual o arquivo de configuração (conf.py) está localizado (padrão: mesmo que SOURCEDIR)" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "usa nenhum arquivo de configuração, apenas as opções -D" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "sobrescreve a configuração no arquivo de configuração" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "passa um valor para modelos em HTML" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "define tag: inclui blocos “only” com TAG" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "modo exigente, avisa sobre todas as referências em falta" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "opções de saída do console" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "aumenta o nível de detalhamento (pode ser repetido)" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "nenhuma saída para stdout, apenas avisos na stderr" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "nenhuma saída, nem mesmo avisos" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "emite saída colorida (padrão: detectar automaticamente)" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "não emite saída colorida (padrão: detectar automaticamente)" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "escreve avisos (e erros) para o arquivo fornecido" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "transforma avisos em erros" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "com -W, segue em frente ao receber avisos" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "mostra rastro completo em exceção" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "executa Pdb na exceção" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "não foi possível localizar os arquivos %r" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "não é possível combinar a opção -a e nomes de arquivos" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "não foi possível abrir o arquivo de aviso %r: %s" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "o argumento da opção -D deve estar no formato nome=valor" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "o argumento da opção -A deve estar no formato nome=valor" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "insere docstrings automaticamente a partir de módulos" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "testa trechos de código automaticamente em blocos de doctest" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "cria link entre documentação Sphinx de diferentes projetos" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "escreve entradas “todo” que podem ser mostradas ou ocultadas na compilação" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "verifica por cobertura da documentação" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "inclui matemática, renderizada como imagens PNG ou SVG" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "inclui matemática, renderizada no navegador por MathJax" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "inclusão condicional de conteúdo com base nos valores de configuração" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "inclui links para o código-fonte dos objetos Python documentados" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "cria um arquivo .nojekyll para publicar o documento em páginas do GitHub" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "Insira um nome de caminho válido." + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "Insira algum texto." + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "Insira um entre %s." + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "Insira “y” ou “n”." + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "Insira um sufixo de arquivo, p.ex., “.rst” ou “.txt”." + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "* Nota: caracteres não ASCII inseridos e codificação de terminal desconhecida -- presumindo UTF-8 ou Latin-1." + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "Bem-vindo ao utilitário de início rápido do Sphinx %s." + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "Digite valores para as seguintes configurações (basta pressionar Enter\npara aceitar um valor padrão, se houver um entre colchetes)." + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "Caminho raiz selecionado: %s" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "Insira o caminho raiz para a documentação." + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "Caminho raiz para a documentação" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "Erro: um conf.py existente foi encontrado no caminho raiz selecionado." + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "sphinx-quickstart não vai sobrescrever projetos Sphinx existentes." + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "Insira um novo caminho raiz (ou pressione Enter para sair)" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "Você tem duas opções para definir o diretório de compilação para a saída\nSphinx. Você pode usar um diretório \"_build\" no caminho raiz ou separar\nos diretórios de \"origem\" e \"compilação\" no caminho raiz." + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "Separar os diretórios de origem e compilação (y/n)" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "Dentro do diretório raiz, mais dois diretórios serão criados; \"_templates\"\npara modelos HTML personalizados e \"_static\" para folhas de estilo (CSS)\npersonalizadas e outros arquivos estáticos. Você pode inserir outro prefixo\n(como \".\") para substituir o sublinhado." + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "Prefixo do nome para o diretório de modelos e de arquivos estáticos" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "O nome do projeto vai aparecer em vários lugares na documentação compilada." + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "Nome do projeto" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "Nome(s) de autor(es)" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "Sphinx tem a noção de uma \"versão\" e uma \"lançamento\" para o software.\nCada versão pode ter vários lançamentos. Por exemplo, para Python, a\nversão é algo como 2.5 ou 3.0, enquanto o lançamento é algo como 2.5.1\nou 3.0a1. Se você não precisar dessa estrutura dupla, basta definir as\nduas para o mesmo valor." + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "Versão do projeto" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "Lançamento do projeto" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "Se os documentos forem escritos em um idioma diferente do inglês, você\npode selecionar um idioma aqui pelo seu código de idioma. O Sphinx,\nentão, traduzirá o texto gerado para esse idioma.\n\nPara obter uma lista dos códigos suportados, consulte\nhttps://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "Idioma do projeto" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "O sufixo do nome do arquivo para os arquivos-fonte. Geralmente ele é\n\".txt\" ou \".rst\". Somente arquivos com esse sufixo são considerados\ndocumentos." + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "Sufixo de arquivos-fonte" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "Um documento é especial por ser considerado o nó superior da \"árvore de\nconteúdo\", ou seja, é a raiz da estrutura hierárquica dos documentos.\nNormalmente, isso é \"index\", mas se o documento \"index\" for um modelo\npersonalizado, você também poderá configurá-lo para outro nome de arquivo." + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "Nome do seu documento mestre (sem sufixo)" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "Erro: o arquivo mestre %s já foi encontrado no caminho raiz selecionado." + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "sphinx-quickstart não vai sobrescrever o arquivo existente." + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "Insira um novo nome de arquivo, ou renomeie o arquivo existente e pressione Enter" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "Indique qual das seguintes extensões do Sphinx devem ser habilitadas:" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "Nota: imgmath e mathjax não podem ser habilitados ao mesmo tempo. imgmath foi desmarcado." + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "Um Makefile e um arquivo de comando do Windows podem ser gerados para você,\npara que você só precise executar, p.ex., \"make html\" em vez de invocar o\nsphinx-build diretamente." + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "Criar um Makefile? (y/n)" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "Criar um arquivo de comando do Windows? (y/n)" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "Criando o arquivo %s." + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "O arquivo %s já existe, ignorando." + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "Finalizado: uma estrutura de diretório inicial foi criada." + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "Agora você deve preencher seu arquivo mestre %s e criar outros arquivos-fonte\nda documentação. " + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "Use o Makefile para compilar os documentos, assim:\n make builder" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "Use o comando sphinx-build para compilar os documentos, assim:\n sphinx-build -b compilador %s %s" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "sendo “compilador” um dos compiladores com suporte, p.ex., html, latex ou linkcheck." + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "\nGera os arquivos necessários para um projeto Sphinx.\n\nO sphinx-quickstart é uma ferramenta interativa que faz algumas perguntas\nsobre o seu projeto e gera um diretório de documentação completo e um\nMakefile de amostra para ser usado com o sphinx-build.\n" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "modo silencioso" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "raiz do projeto" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "Opção Estrutura" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "se especificado, separa diretórios de fonte e de compilação" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "substituto para ponto em _templates etc." + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "Opções básicas do projeto" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "nome do projeto" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "nomes de autores" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "versão do projeto" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "lançamento do projeto" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "idioma dos documentos" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "sufixo de arquivos-fonte" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "nome do documento mestre" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "usa epub" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "Opções extensão" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "habilita a extensão %s" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "habilita extensões arbitrárias" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "Criação de Makefile e arquivo Batch" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "cria makefile" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "não cria makefile" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "cria arquivo batch" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "não cria arquivo batch" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "usa modo make para Makefile/make.bat" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "não usa modo make para Makefile/make.bat" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "Modelo de projeto" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "diretório para arquivos de modelos" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "define uma variável modelo" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "“quiet” está especificada, mas “project” ou “author” não foi." + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "Erro: o caminho especificado não é um diretório, ou arquivos sphinx já existem." + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "sphinx-quickstart só gera em um diretório vazio. Especifique um novo caminho raiz." + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "Variável de modelo inválida: %s" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "Excesso de dedent foi detectado" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "Legenda inválida: %s" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "especificação de número de linha está fora da faixa(1-%d): %r" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "Não é possível usar as opções “%s” e “%s” juntas" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "Arquivo incluído %r não encontrado ou sua leitura falhou" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "A codificação %r usada para ler o arquivo incluído %r parece estar errada, tente passar uma opção :encoding:" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "O objeto chamado %r não foi encontrado no arquivo incluído %r" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "Não é possível usar “lineo-match” com um conjunto separado de “lines”" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "Especificação de linha %r: nenhuma linha obtida do arquivo incluído %r" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Autor da seção: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Autor do módulo: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Autor do código: " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Autor: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parâmetros" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Retorna" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Tipo de retorno" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (função C)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (membro C)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (macro C)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (tipo C)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (variável C)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "função" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "membro" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "macro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "tipo" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "variável" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "descrição duplicada de objeto C de %s, outra instância em %s, use :noindex: para um deles" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Novo na versão %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Alterado na versão %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Obsoleto desde a versão %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "citação duplicada %s, outra instância em %s" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "citação [%s] não é referenciada." + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "Declaração duplicada, também definida em \"%s\".\nA declaração é \"%s\"." + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "Parâmetros do Modelo" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Lança" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "%s (C++ %s)" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "classe" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "união" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "conceito" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "enum" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "enumerador" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "Declaração duplicada, também definida em \"%s\".\nO nome da declaração é \"%s\"." + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (função interna)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (método %s)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (classe)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (variável global ou constante)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (atributo %s)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Argumentos" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (módulo)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "método" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "dado" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "atributo" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "módulo" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "descrição duplicada de %s de %s, outro %s em %s" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "rótulo duplicado da equação %s, outra instância em %s" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "math_eqref_format inválido: %r" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "palavra-chave" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operador" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "objeto" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "exceção" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "comando" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "função interna" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Variáveis" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Levanta" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (no módulo %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (variável interna)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (no módulo %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (classe interna)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (classe em %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (método %s.%s)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (método estático %s.%s)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (método estático %s)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (método de classe %s.%s)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (método de classe %s)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (atributo %s.%s)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "%s() (propriedade %s )" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Índice de Módulos Python" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "módulos" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Obsoleto" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "método de classe" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "método estático" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "descrição duplicada de objeto de %s, outra instância em %s, use :noindex: para um deles" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "mais de um alvo localizado para referência cruzada %r: %s" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (obsoleto)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (diretiva)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr ":%s: (opção diretiva)" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (papel)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "diretiva" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "opção diretiva" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "papel" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "descrição duplicada de %s %s, outra instância em %s" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "váriavel de ambiente; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "Descrição de opção %r malformada, deve se parecer com “opt”, “-opt args”, “--opt args”, “/opt args” ou “+opt args”" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "%s opção de linha de comando" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "opção de linha de comando" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "um termo de glossário deve ser precedido por uma linha vazia" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "termos de glossário não devem ser separados por linhas vazias" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "o glossário parece estar mal formatado, confira o recuo" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "Glossário de Termos" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "termo gramatical" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "marca referencial" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "váriavel de ambiente" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "opção do programa" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "documento" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Índice do Módulo" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Página de Busca" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "rótulo duplicada %s, outra instância em %s" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "descrição duplicada de %s de %s, outra instância em %s" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "numfig está desabilitado. :numref: é ignorado." + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "nenhum número está atribuído para %s: %s" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "o link não possui legenda: %s" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "numfig_format inválido: %s (%r)" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "numfig_format inválido: %s" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "nova configuração" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "configuração alterada" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "extensões alteradas" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "a versão do ambiente de compilação não é a atual" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "diretório de fontes foi alterado" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "Este ambiente é incompatível com o compilador selecionado, por favor escolha outro diretório de doctree." + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "Falha ao procurar documentos em %s: %r" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "O domínio %r ainda não está registrado" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "toctree autorreferenciada encontrada. Ignorado." + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "o documento não está incluído em nenhum toctree" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "veja %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "veja também %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "tipo desconhecido de entrada de índice %r" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Símbolos" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "referências circulares à toctree detectadas, ignorando: %s <- %s" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "toctree contém referência ao documento %r que não possui título: nenhum link será gerado" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "toctree contém referência ao documento excluído %r" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "toctree contém referência ao documento inexistente %r" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "arquivo de imagem não legível: %s" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "arquivo de imagem %s não legível: %s" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "arquivo de download não legível: %s" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "%s já tem números de seção atribuídos (toctree numerada aninhada?)" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "Criaria o arquivo %s." + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "\nProcura recursivamente em <MODULE_PATH> módulos e pacotes Python e cria um\narquivo reST com diretivas automodule por pacote no <OUTPUT_PATH>.\n\nOs <EXCLUDE_PATTERN>s podem ser padrões de arquivo e/ou diretório que serão\nexcluídos da geração.\n\nNota: Por padrão, este script não substituirá os arquivos já criados." + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "caminho para o módulo a ser documentado" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "padrões de diretório e/ou arquivo no estilo fnmatch para excluir da geração" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "diretório para colocar toda a saída" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "profundidade máxima de submódulos para mostrar no TOC (padrão: 4)" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "sobrescreve arquivos existentes" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "segue links simbólicos. Poderoso quando combinado com collective.recipe.omelette." + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "escreve o script sem criar arquivos" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "coloca a documentação para cada módulo em sua própria página" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "inclui módulos “_private”" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "nome de arquivo da tabela de conteúdo (padrão: modules)" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "não cria um arquivo de tabela de conteúdo" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "não cria títulos para os pacotes de módulo/pacote (p.ex., quando as docstrings já os contêm)" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "coloca documentação de módulo antes da documentação do submódulo" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "interpreta caminhos de módulos de acordo com a especificação de espaços de nomes implícitos PEP-0420" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "sufixo dos arquivos (padrão: rst)" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "gera um projeto completo com sphinx-quickstart" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "acrescenta module_path a sys.path, usando quando --full é fornecido" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "nome do projeto (padrão nome do módulo raiz)" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "autor(e)s do projeto, usado quando --full é fornecido" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "versão do projeto, usado quando --full é fornecido" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "lançamento do projeto, usado quando --full é fornecido, padrão é --doc-version" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "opções de extensão" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "%s não é um diretório." + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "regex inválida %r em %s" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "Teste de cobertura nos fontes finalizada, confira os resultados em %(outdir)spython.txt." + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "regex inválida %r em coverage_c_regexes" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "o módulo %s não pôde ser importado: %s" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "faltando “+” ou “-” na opção “%s”." + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "“%s” não é uma opção válida." + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "“%s” não é uma opção de pyversion válida" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "Tipo de TestCode inválido" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "Teste de doctests nos fontes finalizada, confira os resultados em %(outdir)s/output.txt." + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "nenhum código/saída no bloco %s em %s:%s" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "ignorando código de doctest inválido: %r" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "=================== durações de leitura mais lentas ====================" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "A diretiva de Graphviz não pode ter conteúdo e argumento de nome de arquivo" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "Arquivo externo de Graphviz %r não encontrado ou sua leitura falhou" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "Ignorando diretiva “graphviz” sem conteúdo." + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "DOT não produziu um arquivo de saída:\n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "comando de DOT %r não pode ser executado (necessário para a saída do graphviz), verifique a configuração do graphviz_dot" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "DOT encerrado com erro:\n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "graphviz_output_format deve ser um entre “png” e “svg”, mas é %r" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "código DOT %r: %s" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[gráfico: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[gráfico]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "comando de conversão %r não pode ser executado, verifique a configuração image_converter" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "convert encerrado com erro:\n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "o comando LaTeX %r não pode ser executado (necessário para exibir matemáticas), verifique a configuração imgmath_latex" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "o comando %s %r não pode ser executado (necessário para exibir matemáticas), verifique a configuração imgmath_%s" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "exibe latex %r: %s" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "latex em linha %r: %s" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "Permalink para essa equação" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "o inventário intersphinx foi movido: %s -> %s" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "carregando inventário intersphinx de %s…" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "encontrados alguns problemas com alguns dos inventários, mas eles tem alternativas em funcionamento:" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "falha ao alcançar todos os inventários com os seguintes problemas:" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(em %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "(em %s)" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "identificador intersphinx %r não é uma string. Ignorado" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "Falha ao ler intersphinx_mapping[%s], ignorado: %r" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[código fonte]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Por fazer" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "Entrada de “TODO” encontrada: %s" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<original entry>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(A <<original entry>> está localizada na %s, linha %d.)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "entrada original" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "realçando código de módulo… " + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[documentos]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Código do módulo" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Código fonte para %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Visão geral: código do módulo" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Todos os módulos onde este código está disponível</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "assinatura inválida para auto%s (%r)" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "erro ao formatar argumentos para %s: %s" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "faltando atributo %s no objeto %s" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "autodoc: falhou em determinar %r a ser documentado, a seguinte exceção foi levantada:\n%s" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "não sei qual módulo importar para documentação automática %r (tente colocar uma diretiva “module” ou “currentmodule” no documento ou forneça um nome explícito para o módulo)" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "“::” no nome de automodule não faz sentido" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "argumentos de assinatura ou anotação de retorno fornecidos para automodule %s" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "__all__ deve ser uma lista de strings, não %r (no módulo %s) -- ignorando __all__" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "faltando atributo mencionado em :members: ou __all__: módulo %s, atributo %s" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "Base: %s" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "apelido de :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "Falha ao analisar type_comment para %r: %s" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "referências de autosummmary excluíram o documento %r. Ignorado." + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "autosummary: arquivo stub não encontrado %r. Verifique sua configuração autosummary_generate." + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "falha ao importar %s" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "falha ao analisar o nome %s" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "falha ao importar o objecto %s" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "autosummary_generate: arquivo não encontrado: %s" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "autosummary gera arquivos .rst internamente. Mas seu source_suffix não contém .rst. Ignorado." + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "autosummary: falhou em determinar %r a ser documentado, a seguinte exceção foi levantada:\n%s" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "[autosummary] gerando autosummary para: %s" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "[autosummary] escrevendo em %s" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "[autosummary] falha ao importar %r: %s" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "\nGera ReStructuredText usando diretivas de resumo automático.\n\nsphinx-autogen é um frontend para sphinx.ext.autosummary.generate.\nEle gera os arquivos reStructuredText a partir de diretivas autosummary\ncontidas nos arquivos de entrada fornecidos.\n\nO formato da diretiva autosummary está documentado no módulo Python\n``sphinx.ext.autosummary`` e pode ser lido usando:\n\n pydoc sphinx.ext.autosummary\n" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "arquivos-fonte para gerar arquivos rST" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "diretório para colocar toda a saída" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "sufixo padrão para arquivos (padrão: %(default)s)" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "diretório de modelos personalizado (padrão: %(default)s)" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "documenta membros importados (padrão: %(default)s)" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "Argumentos de Palavras-chave" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "Exemplo" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "Exemplos" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "Notas" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "Outros Parâmetros" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "Referências" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "Avisos" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "Yields" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Atenção" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Cuidado" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Perigo" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Erro" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Dica" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Importante" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Nota" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Ver também" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Dica" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Aviso" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "continuação da página anterior" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "continua na próxima página" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "Não alfabético" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "Números" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "página" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "Tabela de Conteúdo" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Buscar" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Ir" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Exibir Fonte" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Visão geral" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Bem Vindo! É isso aí." + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "documentação para" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "última atualização" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Índices e Tabelas:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Tabela Completa dos Conteúdos" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "Listar todas seções e subseções" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "Buscar nessa documentação" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Índice Global de Módulos" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "acesso rápido para todos os módulos" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "todas funções, classes, termos" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Índice – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Índice completo em página única" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Páginas de índice por letra" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "pode ser enorme" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navegação" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Pesquisar dentro de %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Sobre esses documentos" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Copyright" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© Copyright %(copyright)s." + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Última atualização em %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Criado usando <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Buscar em %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Tópico anterior" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "capítulo anterior" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Próximo tópico" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "próximo capítulo" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Por favor, ativar JavaScript para habilitar a\nfuncionalidade de busca." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "Pesquisando por várias palavras só mostra correspondências\nque contêm todas as palavras." + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "buscar" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Resultados da Busca" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "Sua busca não encontrou nenhum documento. Por favor, confirme se todas as palavras estão grafadas corretamente e se você selecionou categorias suficientes." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Busca rápida" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Essa Página" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Modificações na versão %(version)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Lista de alterações na versão %(version)s, gerada automaticamente" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Alterações na biblioteca" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Alterações na API C" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Outras alterações" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Link permanente para este título" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Link permanente para esta definição" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Esconder Resultados da Busca" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "Buscando" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Preparando a busca..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "Busca concluída. %s página(s) que atendem a consulta." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", em " + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Expandir painel lateral" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Recolher painel lateral" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Conteúdos" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "Um índice de 4 colunas encontrado. Pode ser um erro de extensões que você usa: %r" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "Nota de rodapé [%s] não é referenciada." + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "Nota de rodapé [#] não é referenciada." + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "referências de nota de rodapé inconsistentes na mensagem traduzida. original: {0}, traduzida: {1}" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "referências inconsistentes na mensagem traduzida. original: {0}, traduzida: {1}" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "referências de citação inconsistentes na mensagem traduzida. original: {0}, traduzida: {1}" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "referências de termo inconsistentes na mensagem traduzida. original: {0}, traduzida: {1}" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "mais de um alvo localizado para “any” referência cruzada %r: poderia ser %s" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "%s:%s alvo de referência não encontrado: %%(target)s" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "%r alvo de referência não encontrado: %%(target)s" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "Não foi possível obter imagem remota: %s [%d]" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "Não foi possível obter imagem remota: %s [%s]" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "Formato de imagem desconhecido: %s…" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "caracteres de origem não codificáveis, substituindo por “?”: %r" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "ignorado" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "falhou" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "erro de leitura: %s, %s" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "erro de escrita: %s, %s" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "Formato de data inválido. Envolva a string com aspas simples se desejar emiti-la diretamente: %s" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "toctree contém referência ao arquivo inexistente %r" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "exceção ao avaliar apenas a expressão da diretiva: %s" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "O suporte para a avaliação de sintaxe do Python 2 foi descontinuado e será removido no Sphinx 4.0. Converta %s para sintaxe do Python 3." + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "função padrão %s não encontrada" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "numfig_format não está definido para %s" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "Quaisquer IDs não atribuídos ao nó %s" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Link Permanente para essa tabela" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Link Permanente para esse código" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Link Permanente para essa imagem" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "Link permanente para esse \"toctree\"" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "Não foi possível obter o tamanho da imagem. A opção :scale: foi ignorada." + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "toplevel_sectioning %r desconhecido para a classe %r" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr ":maxdepth: grande demais, ignorado." + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "título do documento não é um nó único em Text" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "nó de título encontrado não na section, topic, table, admonition ou sidebar" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Notas de rodapé" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "tabularcolumns e opção :widths: foram fornecidas. :widths: foi ignorada." + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "a unidade de dimensão %s é inválida. Ignorada." + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "tipo desconhecido de entrada de índice %s encontrado" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[imagem: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[imagem]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "legenda não dentro de uma imagem." + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "tipo de nó não implementado: %r" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "tipo de nó desconhecido: %r" diff --git a/sphinx/sphinx/locale/pt_PT/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/pt_PT/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..243fbda --- /dev/null +++ b/sphinx/sphinx/locale/pt_PT/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "pt_PT", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", em", "About these documents": "Sobre estes documentos", "Automatically generated list of changes in version %(version)s": "Lista de altera\u00e7\u00f5es gerada automaticamente na vers\u00e3o %(version)s", "C API changes": "Altera\u00e7\u00f5es na API C", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Recolher painel lateral", "Complete Table of Contents": "Tabela de Conte\u00fados Completa", "Contents": "Conte\u00fado", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Criado utilizando <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Expandir painel lateral", "Full index on one page": "\u00cdndice completo numa p\u00e1gina", "General Index": "\u00cdndice Geral", "Global Module Index": "\u00cdndice Global de M\u00f3dulos", "Go": "Ir", "Hide Search Matches": "Esconder Resultados da Pesquisa", "Index": "\u00cdndice", "Index – %(key)s": "\u00cdndice – %(key)s", "Index pages by letter": "Paginas de \u00edndice por letra", "Indices and tables:": "\u00cdndices e tabelas:", "Last updated on %(last_updated)s.": "\u00daltima actualiza\u00e7\u00e3o em %(last_updated)s.", "Library changes": "Altera\u00e7\u00f5es na biblioteca", "Navigation": "Navega\u00e7\u00e3o", "Next topic": "Pr\u00f3ximo t\u00f3pico", "Other changes": "Outras altera\u00e7\u00f5es", "Overview": "Vis\u00e3o geral", "Permalink to this definition": "Link permanente para esta defini\u00e7\u00e3o", "Permalink to this headline": "Link permanente para este t\u00edtulo", "Please activate JavaScript to enable the search\n functionality.": "Por favor ligue o JavaScript para habilitar a\nfuncionalidade de pesquisa.", "Preparing search...": "A preparar a pesquisa...", "Previous topic": "T\u00f3pico anterior", "Quick search": "Pesquisa r\u00e1pida", "Search": "Pesquisar", "Search Page": "P\u00e1gina de Pesquisa", "Search Results": "Resultados da Pesquisa", "Search finished, found %s page(s) matching the search query.": "Pesquisa conclu\u00edda, foram encontrada(s) %s p\u00e1gina(s) que combinam com a consulta feita.", "Search within %(docstitle)s": "Pesquisar dentro de %(docstitle)s", "Searching": "A Pesquisar", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Exibir Fonte", "Table of Contents": "", "This Page": "Esta P\u00e1gina", "Welcome! This is": "Bem Vindo(a)! Esta \u00e9", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "A sua pesquisa n\u00e3o encontrou nenhum documento. Por favor, confirme que todas as palavras est\u00e3o escritas corretamente e que selecionou categorias suficientes.", "all functions, classes, terms": "todas as fun\u00e7\u00f5es, classes, termos", "can be huge": "pode ser enorme", "last updated": "\u00faltima actualiza\u00e7\u00e3o", "lists all sections and subsections": "Listar todas as sec\u00e7\u00f5es e subsec\u00e7\u00f5es", "next chapter": "pr\u00f3ximo cap\u00edtulo", "previous chapter": "cap\u00edtulo anterior", "quick access to all modules": "acesso r\u00e1pido a todos os m\u00f3dulos", "search": "pesquisar", "search this documentation": "Pesquisar esta documenta\u00e7\u00e3o", "the documentation for": "a documenta\u00e7\u00e3o de"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/pt_PT/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/pt_PT/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..397e8eb --- /dev/null +++ b/sphinx/sphinx/locale/pt_PT/LC_MESSAGES/sphinx.po @@ -0,0 +1,3467 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Pedro Algarvio <pedro@algarvio.me>, 2013 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Portuguese (Portugal) (http://www.transifex.com/sphinx-doc/sphinx-1/language/pt_PT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: pt_PT\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Internos" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Módulos" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (em " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d %b, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Índice Geral" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "índice" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "próximo" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "anterior" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "Documentação %s %s" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Índice" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Versão" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Autor da secção: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Autor do módulo: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Autor do código: " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Autor: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parâmetros" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Retorno" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Tipo de retorno" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (função C)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (membro C)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (macro C)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (tipo C)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (variável C)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "função" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "membro" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "macro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "tipo" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "variável" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Novo na versão %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Alterado na versão %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Obsoleto desde a versão %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Gera" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "classe" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (função interna)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (método %s)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (classe)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (variável global ou constante)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (atributo %s)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Parâmetros" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (módulo)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "método" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "dados" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "atributo" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "módulo" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "palavra-chave" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operador" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "objecto" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "excepção" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "comando" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "função interna" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Variáveis" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Levanta" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (no módulo %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (variável interna)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (no módulo %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (classe interna)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (classe em %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (método %s.%s)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (método estático %s.%s)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (método estático %s)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (método de classe %s.%s)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (método de classe %s)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (atributo %s.%s)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Índice de Módulos do Python" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "módulos" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Obsoleto" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "método de classe" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "método estático" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (obsoleto)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (directiva)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (papel)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "directiva" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "papel" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "variável de ambiente; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "Termo de glossário" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "token de gramática" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "rótulo de referência" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "variável de ambiente" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "opção de programa" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Índice de Módulos" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Página de Pesquisa" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "ver %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "ver também %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Símbolos" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[gráfico: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[gráfico]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(em %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[código fonte]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Por fazer" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "entrada original" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[documentos]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Código do módulo" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Código fonte de %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Visão geral: código do módulo" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Todos os módulos onde este código está disponível</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "pseudónimo de :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Atenção" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Cuidado" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Perigo" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Erro" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Dica" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Importante" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Nota" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Veja também" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Dica" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Aviso" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "continuação da página anterior" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Pesquisar" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Ir" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Exibir Fonte" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Visão geral" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Bem Vindo(a)! Esta é" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "a documentação de" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "última actualização" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Índices e tabelas:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Tabela de Conteúdos Completa" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "Listar todas as secções e subsecções" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "Pesquisar esta documentação" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Índice Global de Módulos" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "acesso rápido a todos os módulos" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "todas as funções, classes, termos" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Índice – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Índice completo numa página" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Paginas de índice por letra" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "pode ser enorme" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navegação" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Pesquisar dentro de %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Sobre estes documentos" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Copyright" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Última actualização em %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Criado utilizando <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Pesquisar %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Tópico anterior" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "capítulo anterior" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Próximo tópico" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "próximo capítulo" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Por favor ligue o JavaScript para habilitar a\nfuncionalidade de pesquisa." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "pesquisar" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Resultados da Pesquisa" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "A sua pesquisa não encontrou nenhum documento. Por favor, confirme que todas as palavras estão escritas corretamente e que selecionou categorias suficientes." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Pesquisa rápida" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Esta Página" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Lista de alterações gerada automaticamente na versão %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Alterações na biblioteca" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Alterações na API C" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Outras alterações" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Link permanente para este título" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Link permanente para esta definição" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Esconder Resultados da Pesquisa" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "A Pesquisar" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "A preparar a pesquisa..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "Pesquisa concluída, foram encontrada(s) %s página(s) que combinam com a consulta feita." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", em" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Expandir painel lateral" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Recolher painel lateral" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Conteúdo" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Notas de rodapé" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[imagem: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[imagem]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/ro/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/ro/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..f93f990 --- /dev/null +++ b/sphinx/sphinx/locale/ro/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "ro", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", \u00een", "About these documents": "Despre aceste documente", "Automatically generated list of changes in version %(version)s": "Lista de schimb\u0103ri generat\u0103 automat pentru versiunea %(version)s", "C API changes": "Schimb\u0103ri \u00een API C", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Ascundere bar\u0103 lateral\u0103", "Complete Table of Contents": "Cuprinsul Complet", "Contents": "Cuprins", "Copyright": "Drepturi de autor", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Generat cu <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Expandare bar\u0103 lateral\u0103", "Full index on one page": "Index complet", "General Index": "Index General", "Global Module Index": "Index Module Globale", "Go": "Caut\u0103", "Hide Search Matches": "Ascunde Rezultatele C\u0103ut\u0103rii", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Indexeaz\u0103 paginile dupa liter\u0103", "Indices and tables:": "Indici \u0219i tabele:", "Last updated on %(last_updated)s.": "Ultima actualizare la %(last_updated)s.", "Library changes": "Schimb\u0103ri \u00een bibliotec\u0103", "Navigation": "Navigare", "Next topic": "Subiectul urm\u0103tor", "Other changes": "Alte schimb\u0103ri", "Overview": "Prezentare general\u0103", "Permalink to this definition": "Link permanent la aceast\u0103 defini\u021bie", "Permalink to this headline": "Link permanent la acest titlu", "Please activate JavaScript to enable the search\n functionality.": "Activeaz\u0103 JavaScript pentru a permite\nfunc\u021bia de c\u0103utare.", "Preparing search...": "Se preg\u0103te\u0219te c\u0103utarea...", "Previous topic": "Subiectul precedent", "Quick search": "C\u0103utare rapid\u0103", "Search": "C\u0103utare", "Search Page": "Pagin\u0103 de C\u0103utare", "Search Results": "Rezultatele C\u0103ut\u0103rii", "Search finished, found %s page(s) matching the search query.": "C\u0103utare finalizat\u0103, au fost g\u0103site %s pagini care au corespuns c\u0103ut\u0103rii.", "Search within %(docstitle)s": "Caut\u0103 \u00een %(docstitle)s", "Searching": "C\u0103utare", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Vezi Sursa", "Table of Contents": "", "This Page": "Aceast\u0103 Pagin\u0103", "Welcome! This is": "Bine ai venit! Acesta este", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "C\u0103utarea nu a identificat nici un document. Te rog s\u0103 te asiguri c\u0103 toate cuvintele sunt scrise corect \u0219i c\u0103 ai selectat suficiente categorii.", "all functions, classes, terms": "toate func\u021biile, clasele, termenii", "can be huge": "poate fi extrem de mare", "last updated": "ultima actualizare", "lists all sections and subsections": "lista tuturor sec\u021biunilor si a subsec\u021biunilor", "next chapter": "capitolul urm\u0103tor", "previous chapter": "capitolul precedent", "quick access to all modules": "acces rapid la toate modulele", "search": "c\u0103utare", "search this documentation": "caut\u0103 \u00een aceast\u0103 documenta\u021bie", "the documentation for": "documenta\u021bia pentru"}, "plural_expr": "(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/ro/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/ro/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..01d6237 --- /dev/null +++ b/sphinx/sphinx/locale/ro/LC_MESSAGES/sphinx.po @@ -0,0 +1,3467 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Razvan Stefanescu <razvan.stefanescu@gmail.com>, 2015-2017 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Romanian (http://www.transifex.com/sphinx-doc/sphinx-1/language/ro/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "Proiectul necesită minim Sphinx v%s și de aceea nu poate fi construit cu această versiune." + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "eșuat: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "a reușit" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "a fost finalizat cu probleme" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "Fig. %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Tabelul %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "Cod %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Propuneri de Îmbunătățire Python; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Integrate" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Nivelul modul" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "(în" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Index General" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "index" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "următor" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "precedent" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s documentație" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Index" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Versiune" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Autorul secțiunii:" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Autorul modulului:" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Autorul codului:" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Autor:" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parametrii" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Întoarce" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Tipul întors" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (funcție C)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (membru C)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (macro C)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (tip C)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (variabilă C)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "funcție" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "membru" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "macro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "tip" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "variabilă" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Nou în versiunea %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Schimbat în versiunea %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Învechit începând cu versiunea %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Generează" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "clasă" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "enumerator" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "enumerator" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (funcție integrată)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (metoda %s)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (clasă)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (variabilă globală sau constantă)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (atribut %s)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Argumente" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (modul)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "metodă" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "data" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "atribut" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "modul" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "cuvânt cheie" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operator" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "obiect" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "excepție" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "declarație" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "funcție integrată" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Variabile" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Generează" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (în modulul %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (variabilă integrată)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (în modulul %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (clasă integrată)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (clasa în %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (metoda %s.%s)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (metoda statică %s.%s)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (metoda statică %s)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (metoda clasei %s.%s)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (metoda clasei %s)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (atributul %s.%s)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Indexul de Module Python" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "module" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Învechit" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "metoda clasei" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "metodă statică" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "(învechit)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (directivă)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (rol)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "directivă" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "rol" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "variabilă de mediu; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "termen de glosar" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "element de gramatică" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "etichetă de referință" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "variabilă de mediu" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "opțiune a programului" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Index al modulelor" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Pagină de Căutare" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "vezi %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "vezi și %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Simboluri" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[grafic: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[grafic]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(în %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[sursă]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "De făcut" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "înregistrarea inițială" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[documentație]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Codul modulului" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Codul sursă pentru %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Prezentare generală: codul modulului" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Toate modulele pentru care este disponibil codul sursă</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "alias pentru :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Atenție" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Avertisment" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Pericol" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Eroare" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Sugestie" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Important" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Notă" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Vezi și" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Sfat" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Atenționare" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "continuare din pagina precedentă" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Căutare" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Caută" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Vezi Sursa" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Prezentare generală" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Bine ai venit! Acesta este" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "documentația pentru" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "ultima actualizare" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Indici și tabele:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Cuprinsul Complet" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "lista tuturor secțiunilor si a subsecțiunilor" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "caută în această documentație" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Index Module Globale" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "acces rapid la toate modulele" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "toate funcțiile, clasele, termenii" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Index – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Index complet" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Indexează paginile dupa literă" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "poate fi extrem de mare" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navigare" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Caută în %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Despre aceste documente" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Drepturi de autor" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Ultima actualizare la %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Generat cu <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Caută %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Subiectul precedent" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "capitolul precedent" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Subiectul următor" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "capitolul următor" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Activează JavaScript pentru a permite\nfuncția de căutare." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "căutare" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Rezultatele Căutării" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "Căutarea nu a identificat nici un document. Te rog să te asiguri că toate cuvintele sunt scrise corect și că ai selectat suficiente categorii." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Căutare rapidă" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Această Pagină" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Lista de schimbări generată automat pentru versiunea %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Schimbări în bibliotecă" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Schimbări în API C" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Alte schimbări" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Link permanent la acest titlu" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Link permanent la această definiție" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Ascunde Rezultatele Căutării" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "Căutare" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Se pregătește căutarea..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "Căutare finalizată, au fost găsite %s pagini care au corespuns căutării." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", în" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Expandare bară laterală" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Ascundere bară laterală" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Cuprins" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Link permanent la acest tabel" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Link permanent la acest cod" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Link permanent la această imagine" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "Link permanent la acest cuprins" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Note de subsol" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[figura: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[figură]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/ru/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/ru/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..eae78b3 --- /dev/null +++ b/sphinx/sphinx/locale/ru/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "ru", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", \u0432", "About these documents": "\u041e\u0431 \u044d\u0442\u0438\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0445", "Automatically generated list of changes in version %(version)s": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 %(version)s", "C API changes": "\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 API C", "Changes in Version %(version)s — %(docstitle)s": "\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 %(version)s — %(docstitle)s", "Collapse sidebar": "\u0421\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0431\u043e\u043a\u043e\u0432\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c", "Complete Table of Contents": "\u041f\u043e\u043b\u043d\u043e\u0435 \u043e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435", "Contents": "\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435", "Copyright": "\u0410\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0430", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u0421\u043e\u0437\u0434\u0430\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0431\u043e\u043a\u043e\u0432\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c", "Full index on one page": "\u041f\u043e\u043b\u043d\u044b\u0439 \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435", "General Index": "\u0410\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c", "Global Module Index": "\u0410\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0434\u0443\u043b\u0435\u0439", "Go": "\u0418\u0441\u043a\u0430\u0442\u044c", "Hide Search Matches": "\u0421\u043d\u044f\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435", "Index": "\u0410\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c", "Index – %(key)s": "\u0410\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c – %(key)s", "Index pages by letter": "\u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043f\u043e \u0431\u0443\u043a\u0432\u0430\u043c \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u0430", "Indices and tables:": "\u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438:", "Last updated on %(last_updated)s.": "\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e: %(last_updated)s.", "Library changes": "\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435", "Navigation": "\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f", "Next topic": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437\u0434\u0435\u043b", "Other changes": "\u0414\u0440\u0443\u0433\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f", "Overview": "\u041e\u0431\u0437\u043e\u0440", "Permalink to this definition": "\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u044d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435", "Permalink to this headline": "\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", "Please activate JavaScript to enable the search\n functionality.": "\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 JavaScript \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.", "Preparing search...": "\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043f\u043e\u0438\u0441\u043a\u0430\u2026", "Previous topic": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0440\u0430\u0437\u0434\u0435\u043b", "Quick search": "\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u043e\u0438\u0441\u043a", "Search": "\u041f\u043e\u0438\u0441\u043a", "Search Page": "\u041f\u043e\u0438\u0441\u043a", "Search Results": "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430", "Search finished, found %s page(s) matching the search query.": "\u041f\u043e\u0438\u0441\u043a \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d, \u043d\u0430\u0439\u0434\u0435\u043d\u043e %s \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0449\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0443.", "Search within %(docstitle)s": "\u041f\u043e\u0438\u0441\u043a \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 \u00ab%(docstitle)s\u00bb", "Searching": "\u0418\u0434\u0451\u0442 \u043f\u043e\u0438\u0441\u043a", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442", "Table of Contents": "\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435", "This Page": "\u042d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430", "Welcome! This is": "\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c! \u042d\u0442\u043e", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u041f\u043e \u0432\u0430\u0448\u0435\u043c\u0443 \u043f\u043e\u0438\u0441\u043a\u0443 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u0432\u0441\u0435 \u0441\u043b\u043e\u0432\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a, \u0438 \u0447\u0442\u043e \u0432\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439.", "all functions, classes, terms": "\u0432\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043b\u0430\u0441\u0441\u044b, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b", "can be huge": "\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u043c", "last updated": "\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435", "lists all sections and subsections": "\u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432", "next chapter": "\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0433\u043b\u0430\u0432\u0430", "previous chapter": "\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0433\u043b\u0430\u0432\u0430", "quick access to all modules": "\u0441\u0432\u043e\u0434\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439", "search": "\u0438\u0441\u043a\u0430\u0442\u044c", "search this documentation": "\u043f\u043e\u0438\u0441\u043a \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438", "the documentation for": "\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f"}, "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/ru/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/ru/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..5259626 --- /dev/null +++ b/sphinx/sphinx/locale/ru/LC_MESSAGES/sphinx.po @@ -0,0 +1,3471 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Alex Salikov <Salikvo57@gmail.com>, 2019 +# Dmitry Shachnev <mitya57@gmail.com>, 2013 +# ferm32 <ferm32@gmail.com>, 2014,2016,2019 +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013 +# Konstantin Molchanov <moigagoo@live.com>, 2016 +# PyHedgehog <pywebmail@list.ru>, 2015,2017 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Russian (http://www.transifex.com/sphinx-doc/sphinx-1/language/ru/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: ru\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "в конфигурационной папке нет файла conf.py file (%s)" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "Проект требует версию Sphinx не ниже v%s и не может быть построен текущей версией." + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "готово" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "ошибка: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "Сборщик не указан, по умолчанию используется html" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "успешно" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "с ошибками" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "сборка завершена %s." + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "Отсутствует ключ конфигурации %s" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "Ключ конфигурации %r уже существует" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "Файл конфигурации (или один из импортированных модулей) вызвал sys.exit()" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "В вашем файле конфигурации программная ошибка:\n\n%s" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "Раздел %s" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "Рис. %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Таблица %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "Список %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "Событие %r уже существует" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "Неизвестное событие: %s" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "Отсутствует аттрибут \"name\" у класса сборщика %s." + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "Сборщик %r уже существует (в модуле %s)." + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "Сборщик %s не зарегистрирован явно или через ресурсы пакетов." + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "Сборщик %s не зарегистрирован." + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "Изначальное исключение:\n" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "Не могу загрузить модуль расширения %s" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "расширение %r не определяет функцию setup(); это действительно модуль расширения Sphinx?" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Предложения об улучшениях Python; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "Не получается считать файл изображение %r: скопируйте его" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "Не получается скопировать файл изображения %r: %s" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "Не получается записать файл изображения %r: %s" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "записывается %s файл..." + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Встроенные функции" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Модуль" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (в " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Алфавитный указатель" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "указатель" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "вперёд" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "назад" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "документация %s %s" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Алфавитный указатель" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Выпуск" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "Не получается найти файлы %r" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "Невозможно совмещать ключ -a и названия файлов" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "Не получается открыть файл с предупреждениями %r:%s " + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "Версия проекта" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "Релиз проекта" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "Язык проекта" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "Создание файла %s." + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "Файл %s уже существует, пропускаем." + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "имя проекта" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "имена авторов" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "версия проекта" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "релиз проекта" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "язык проекта" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "использовать epub" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "Некорректная подпись: %s" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Автор раздела: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Автор модуля: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Автор кода:" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Автор: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Параметры" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Результат" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Тип результата" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (функция C)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (поле C)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (макроподстановка C)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (тип C)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (переменная C)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "функция" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "поле" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "макрос" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "тип" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "переменная" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Добавлено в версии %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Изменено в версии %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Не рекомендуется, начиная с версии %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "Параметры шаблона" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Бросает исключение" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "класс" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "концепт" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "перечисляемый тип" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "перечислитель" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (встроенная функция)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (метод %s)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (класс)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (глобальная переменная или константа)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (атрибут %s)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Аргументы" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (модуль)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "метод" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "данные" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "атрибут" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "модуль" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "повторяющаяся метка уравнения %s, также используется в %s" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "ключевое слово" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "оператор" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "объект" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "исключение" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "команда" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "базовая функция" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Переменные" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Исключение" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (в модуле %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (встроенная переменная)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (в модуле %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (встроенный класс)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (класс в %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (метод %s.%s)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (статический метод %s.%s)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (статический метод %s)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (метод класса %s.%s)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (метод класса %s)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (атрибут %s.%s)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Содержание модулей Python" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "модули" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Не рекомендуется" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "метод класса" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "статический метод" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "(использование не рекомендуется)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (директива)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (роль)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "директива" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "роль" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "переменная окружения; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "элемент словаря" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "токен грамматики" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "текст ссылки" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "переменная окружения" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "опция программы" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "документ" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Состав модуля" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Поиск" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "новая конфигурация" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "конфигурация изменена" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "см. %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "также см. %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Символы" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[иллюстрация: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[иллюстрация]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "Ссылка на это уравнение" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(в %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[исходный код]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "План" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<исходная запись>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(<<Исходная запись>> находится в %s, строка %d.)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "исходный элемент" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[документация]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Код модуля" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Исходный код %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Обзор: исходный код модуля" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Все модули, в которых есть код</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr " Базовые классы: %s" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "псевдоним класса :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "Именованные аргументы" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "Пример" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "Примеры" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "Заметки" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "Другие параметры" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "Предупрждения" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Внимание" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Осторожно" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Опасно" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Ошибка" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Подсказка" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Важно" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Примечание" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "См.также" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Совет" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Предупреждение" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "продолжение с предыдущей страницы" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "Числа" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "страница" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "Оглавление" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Поиск" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Искать" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Исходный текст" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Обзор" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Добро пожаловать! Это" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "документация" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "последнее изменение" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Таблицы и указатели:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Полное оглавление" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "список всех разделов и подразделов" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "поиск в документации" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Алфавитный указатель модулей" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "сводный список всех модулей" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "все функции, классы, переменные и константы" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Алфавитный указатель – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Полный алфавитный указатель на одной странице" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Указатели по буквам алфавита" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "может быть очень большим" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Навигация" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Поиск в документе «%(docstitle)s»" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Об этих документах" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Авторские права" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© Copyright %(copyright)s." + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Обновлено: %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Создано с помощью <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Поиск в документе «%(docstitle)s»" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Предыдущий раздел" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "предыдущая глава" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Следующий раздел" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "следующая глава" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Для работы поиска включите JavaScript в браузере." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "искать" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Результаты поиска" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "По вашему поиску не найдено ни одного документа. Проверьте, что все слова написаны без ошибок, и что вы выбрали достаточно категорий." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Быстрый поиск" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Эта страница" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Изменения в версии %(version)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Автоматически созданный список изменений в версии %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Изменения в библиотеке" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Изменения в API C" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Другие изменения" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Ссылка на этот заголовок" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Ссылка на это определение" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Снять выделение" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "Идёт поиск" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Подготовка поиска…" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "Поиск завершён, найдено %s страниц, удовлетворяющих запросу." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", в" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Развернуть боковую панель" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Свернуть боковую панель" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Содержание" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Постоянная ссылка на таблицу" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Постоянная ссылка на код" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Постоянная ссылка на рисунок" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "Постоянная ссылка на оглавление" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Сноски" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[рисунок: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[рисунок]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/si/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/si/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..753b43b --- /dev/null +++ b/sphinx/sphinx/locale/si/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "si", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "\u0db8\u0dd9\u0db8 \u0dbd\u0dda\u0d9b\u0dab \u0d9c\u0dd0\u0db1", "Automatically generated list of changes in version %(version)s": "", "C API changes": "C API \u0dc0\u0dd9\u0db1\u0dc3\u0dca\u0d9a\u0db8\u0dca", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "\u0dc3\u0db8\u0dca\u0db4\u0dd6\u0dbb\u0dca\u0dab \u0db4\u0da7\u0dd4\u0db1", "Contents": "\u0d85\u0db1\u0dca\u0dad\u0dbb\u0dca\u0d9c\u0dad\u0dba", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "\u0dba\u0db1\u0dca\u0db1", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "\u0db4\u0dd4\u0dc3\u0dca\u0dad\u0d9a\u0dcf\u0dbd \u0dc0\u0dd9\u0db1\u0dc3\u0dca\u0d9a\u0db8\u0dca", "Navigation": "\u0d9c\u0db8\u0db1\u0dca \u0d9a\u0dd2\u0dbb\u0dd3\u0db8", "Next topic": "\u0d8a\u0dc5\u0d9f \u0db8\u0dcf\u0dad\u0dd8\u0d9a\u0dcf\u0dc0", "Other changes": "\u0dc0\u0dd9\u0db1\u0dad\u0dca \u0dc0\u0dd9\u0db1\u0dc3\u0dca\u0d9a\u0db8\u0dca", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "\u0dc3\u0dd9\u0dc0\u0dd4\u0db8 \u0dc3\u0dd6\u0daf\u0dcf\u0db1\u0db8\u0dca \u0d9a\u0dbb\u0db8\u0dd2\u0db1\u0dca....", "Previous topic": "\u0db4\u0dd9\u0dbb \u0db8\u0dcf\u0dad\u0dd8\u0d9a\u0dcf\u0dc0", "Quick search": "\u0d89\u0d9a\u0dca\u0db8\u0db1\u0dca \u0dc3\u0dd9\u0dc0\u0dd4\u0db8", "Search": "\u0dc3\u0ddc\u0dba\u0db1\u0dca\u0db1", "Search Page": "\u0dc3\u0dd9\u0dc0\u0dd4\u0db8\u0dca \u0db4\u0dd2\u0da7\u0dd4\u0dc0", "Search Results": "\u0dc3\u0dd9\u0dc0\u0dd4\u0db8\u0dca \u0db4\u0dca\u200d\u0dbb\u0dad\u0dd2\u0db5\u0dbd", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "\u0dc3\u0ddc\u0dba\u0db8\u0dd2\u0db1\u0dca...", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "\u0db8\u0dd6\u0dbd\u0dba \u0db4\u0dd9\u0db1\u0dca\u0dc0\u0db1\u0dca\u0db1", "Table of Contents": "", "This Page": "\u0db8\u0dd9\u0db8 \u0db4\u0dd2\u0da7\u0dd4\u0dc0", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "\u0dc0\u0dd2\u0dc1\u0dcf\u0dbd \u0dc0\u0dd2\u0dba \u0dc4\u0dd0\u0d9a", "last updated": "\u0d85\u0dc0\u0dc3\u0db1\u0dca\u0dc0\u0dbb\u0da7 \u0dba\u0dcf\u0dc0\u0dad\u0dca\u0d9a\u0dcf\u0dbd \u0d9a\u0dbd", "lists all sections and subsections": "", "next chapter": "\u0d8a\u0dc5\u0d9f \u0db4\u0dbb\u0dd2\u0da0\u0dca\u0da1\u0dda\u0daf\u0dba", "previous chapter": "\u0db4\u0dd9\u0dbb \u0db4\u0dbb\u0dd2\u0da0\u0dca\u0da1\u0dda\u0daf\u0dba", "quick access to all modules": "", "search": "\u0dc3\u0ddc\u0dba\u0db1\u0dca\u0db1", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/si/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/si/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..7f74034 --- /dev/null +++ b/sphinx/sphinx/locale/si/LC_MESSAGES/sphinx.po @@ -0,0 +1,3466 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# callkalpa <callkalpa@gmail.com>, 2013 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Sinhala (http://www.transifex.com/sphinx-doc/sphinx-1/language/si/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: si\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "ඊළඟ" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "පෙර" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s ලේඛණය" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "නිකුත් කිරීම" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "කේත ලේඛක:" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "ලේඛක:" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "පරාමිතීන්" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "ක්‍රියාව" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "සාමාජික" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "මැක්‍රෝ" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "වර්ගය" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "විචල්‍යය" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "%s වෙළුමේ අලුත්" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "%s වෙළුමේ වෙනස් කල" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "දත්ත" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "වස්තුව" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "විචල්‍ය" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "සෙවුම් පිටුව" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "%s බලන්න" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "%s ද බලන්න" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "සංකේත" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[graph: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[graph]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(%s හි%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[source]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "කිරීමට තිබෙන" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[docs]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "දෝෂය" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "හැඟවීම" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "සටහන" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "මෙයද බලන්න" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "අනතුරු ඇඟවීම" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "සොයන්න" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "යන්න" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "මූලය පෙන්වන්න" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "අවසන්වරට යාවත්කාල කල" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "සම්පූර්ණ පටුන" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "විශාල විය හැක" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "ගමන් කිරීම" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "මෙම ලේඛණ ගැන" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "%(docstitle)s සොයන්න" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "පෙර මාතෘකාව" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "පෙර පරිච්ඡේදය" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "ඊළඟ මාතෘකාව" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "ඊළඟ පරිච්ඡේදය" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "සොයන්න" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "සෙවුම් ප්‍රතිඵල" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "ඉක්මන් සෙවුම" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "මෙම පිටුව" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "පුස්තකාල වෙනස්කම්" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "C API වෙනස්කම්" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "වෙනත් වෙනස්කම්" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "සොයමින්..." + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "සෙවුම සූදානම් කරමින්...." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "අන්තර්ගතය" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[image: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[image]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/sk/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/sk/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..f8e8e5e --- /dev/null +++ b/sphinx/sphinx/locale/sk/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "sk", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", v ", "About these documents": "O dokument\u00e1cii", "Automatically generated list of changes in version %(version)s": "Automaticky generovan\u00fd zoznam zmien vo verzii %(version)s", "C API changes": "Zmeny API C", "Changes in Version %(version)s — %(docstitle)s": "Zmeny vo verzii %(version)s — %(docstitle)s", "Collapse sidebar": "Zbali\u0165 bo\u010dn\u00fd panel", "Complete Table of Contents": "Celkov\u00fd obsah", "Contents": "Obsah", "Copyright": "Autorsk\u00e9 pr\u00e1vo", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Vytvoren\u00e9 pomocou <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Rozbali\u0165 bo\u010dn\u00fd panel", "Full index on one page": "Cel\u00fd index na jednej strane", "General Index": "V\u0161eobecn\u00fd index", "Global Module Index": "Celkov\u00fd index modulov", "Go": "OK", "Hide Search Matches": "Skry\u0165 v\u00fdsledky h\u013eadania", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Indexov\u00e9 str\u00e1nky po p\u00edsmen\u00e1ch", "Indices and tables:": "Indexy a tabu\u013eky", "Last updated on %(last_updated)s.": "Naposledy aktualizovan\u00e9 %(last_updated)s.", "Library changes": "Zmeny kni\u017enice", "Navigation": "Navig\u00e1cia", "Next topic": "\u010eal\u0161ia t\u00e9ma", "Other changes": "Ostatn\u00e9 zmeny", "Overview": "Preh\u013ead", "Permalink to this definition": "Trval\u00fd odkaz na t\u00fato defin\u00edciu", "Permalink to this headline": "Trval\u00fd odkaz na tento nadpis", "Please activate JavaScript to enable the search\n functionality.": "Pros\u00edm, na zapnutie funkcie h\u013eadania,aktivujte\nJavaScript .", "Preparing search...": "Pr\u00edprava h\u013eadania...", "Previous topic": "Predo\u0161l\u00e1 t\u00e9ma", "Quick search": "R\u00fdchle h\u013eadanie", "Search": "H\u013eada\u0165", "Search Page": "Str\u00e1nka h\u013eadania", "Search Results": "V\u00fdsledky h\u013eadania", "Search finished, found %s page(s) matching the search query.": "H\u013eadanie dokon\u010den\u00e9, n\u00e1jden\u00e9 %s strana(y), ktor\u00e9 vyhovuj\u00fa h\u013eadan\u00e9mu v\u00fdrazu.", "Search within %(docstitle)s": "H\u013eada\u0165 v %(docstitle)s", "Searching": "H\u013eadanie", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Zobrazi\u0165 zdroj", "Table of Contents": "Obsah", "This Page": "T\u00e1to str\u00e1nka", "Welcome! This is": "Vitajte! Toto je", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "V\u00e1\u0161mu h\u013eadaniu nezodpoved\u00e1 \u017eiadny dokument. Pros\u00edm, skontrolujte, \u017ee v\u0161etky zadan\u00e9 slov\u00e1 s\u00fa spr\u00e1vne nap\u00edsan\u00e9 a \u017ee ste zvolili vhodn\u00e9 kateg\u00f3rie.", "all functions, classes, terms": "v\u0161etky funkcie, triedy, term\u00edny", "can be huge": "m\u00f4\u017ee by\u0165 rozsiahle", "last updated": "posledn\u00e1 aktualiz\u00e1cia", "lists all sections and subsections": "zoznam v\u0161etk\u00fdch sekci\u00ed a podsekci\u00ed", "next chapter": "\u010fal\u0161ia kapitola", "previous chapter": "predo\u0161l\u00e1 kapitola", "quick access to all modules": "r\u00fdchly pr\u00edstup ku v\u0161etk\u00fdm modulom", "search": "h\u013eada\u0165", "search this documentation": "h\u013eada\u0165 v tejto dokument\u00e1cii", "the documentation for": "dokument\u00e1cia"}, "plural_expr": "(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/sk/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/sk/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..4e64c80 --- /dev/null +++ b/sphinx/sphinx/locale/sk/LC_MESSAGES/sphinx.po @@ -0,0 +1,3468 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# FIRST AUTHOR <EMAIL@ADDRESS>, 2008 +# Slavko <linux@slavino.sk>, 2013-2019 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Slovak (http://www.transifex.com/sphinx-doc/sphinx-1/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.8.0\n" +"Language: sk\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" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "konfiguračný priečinok neobsahuje súbor conf.py (%s)" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "Nemožno nájsť zdrojový priečinok (%s)" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "Zdrojový a cieľový priečinok nemôžu byť rovnaké" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "Spúšťanie Sphinx v%s" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "Tento projekt vyžaduje aspoň Sphinx v%s a preto s touto verziou nemôže byť zostavený." + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "vytváranie výstupnej zložky" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "pri nastavovaní rozšírenia %s:" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "'setup' definovaný v conf.py nie je funkciou. Prosím, upravte jeho definíciu tak, aby to bola funkcia. Je to potrebné, aby sa conf.py mohol správať ako rozšírenie Sphinx." + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "načítanie prekladov [%s]…" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "hotovo" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "nedostupné pre zabudované správy" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "načítanie uloženého prostredia " + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "zlyhalo: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "Nebol zvolený builder, bude použitý predvolený: html" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "úspešné" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "dokončené sproblémami" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "zostavenie %s, %s upozornenie." + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "zostavenie %s." + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "trieda uzla %r už je registrovaná, jej metódy (visitors) budú prepísané" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "direktíva %r už je registrovaná, bude prepísaná" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "rola %r už je registrovaná, bude prepísaná" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "rozšírenie %s nedeklaruje, či je bezpečné pri paralelnom čítaní, predpokladá sa, že nie - prosím, požiadajte autora aby to skontroloval a explicitne to nastavil" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "rozšírenie %s nedeklaruje, či je bezpečné pri paralelnom čítaní, predpokladáme, že nie je – prosím, požiadajte autora aby to skontroloval a explicitne to nastavil" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "sériové spracovanie %s" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "nemožno prepísať slovník nastavenia %r, ignorované (použite %r na nastavenie jednotlivých prvkov)" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "neplatný počet %r pre konfiguračnú hodnotu %r, ignorované" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "nemožno prepísať konfiguračné nastavenie %r s nepodporovaným typom, ignorované" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "neznáma konfiguračná hodnota %r v prepísaní, ignorované" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "Neznáma konfiguračná hodnota: %s" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "Konfiguračná hodnota %r už existuje" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "Vo svojom konfiguračnom súbore máte chybu: %s\n" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "Konfiguračný súbor (alebo jeden z modulov, ktoré importuje) volal sys.exit()" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "V konfiguračnom súbore je programová chyba:\n\n%s" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "Konfiguračná hodnota „source_suffix” očakáva reťazec, zoznam reťazcov alebo slovník, ale zadali ste „%r”." + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "Sekcia %s" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "Obr. %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Tabuľka %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "Výpis %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "primary_domain %r nenájdená, ignorované." + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "Od v2.0 Sphinx predvolene používa „index” ako master_doc. Prosím, pridajte „master_doc = 'contents'” do svojho conf.py." + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "Udalosť %r už existuje" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "Neznáme meno udalosti %s" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "Tento projekt vyžaduje rozšírenie %s s verziou minimálne %s, a teda ho nemožno zostaviť s načítanou verziou (%s)." + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "Trieda builder %s nemá atribút „name”" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "Builder %r už existuje (v module %s)" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "Builder s menom %s nie je registrovaný ani dostupný cez vstupný bod" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "Builder s menom %s nie je registrovaný" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "doména %s už je zaregistrovaná" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "doména %s ešte nie je zaregistrovaná" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "Direktíva %r už je registrovaná v doméne %s" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "Rola %r už je registrovaná v doméne %s" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "Index %r už je registrovaný v doméne %s" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr " object_type %r už je registrovaný" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "crossref_type %r už je registrovaný" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "source_suffix %r už je registrovaný" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "source_parser pre %r už je registrovaný" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "Analyzátor pre %s nie je registrovaný" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "Translator pre %r už existuje" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "enumerable_node %r už je registrovaný" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "math renderer %s už je registrovaný" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "rozšírenie %r bolo zlúčené so Sphinx od verzie %s; toto rozšírenie je ignorované." + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "Pôvodná výnimka:\n" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "Nemožno importovať rozšírenie %s" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "rozšírenie %r nemá funkciu setup(); je to naozaj modul rozšírenia Sphinx?" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "Rozšírenie %s použité týmto projektom vyžaduje aspoň Sphinx v%s; takže ho nemožno zostaviť s touto verziou." + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "rozšírenie %r vrátilo so svojej funkcie setup() nepodporovaný objekt; musí vrátiť None alebo slovník metadát" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "téma %r nemá nastavenie „theme”" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "téma %r nemá nastavenie „inherit”" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "nebola nájdená téma s menom %r, dedená v %r" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "nastavenie %s.%s nenájdené v žiadnom z nastavení témy" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "zadaná nepodporovaná voľba témy %r" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "súbor %r v ceste témy nie je platný súbor ZIP alebo neobsahuje tému" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "sphinx_rtd_theme viac nie je nutnou závislosťou od verzie 1.4.0. Prosím, nainštalujte ho manuálne. pip install sphinx_rtd_theme)" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "nebola nájdená téma smenom %r (chýbajúci theme.conf?)" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "vhodný obrázok pre zostavovač %s nenájdený: %s (%s)" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "vhodný obrázok pre zostavovač %s nenájdený: %s" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "zostavenie [mo]: " + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "zápis výstupu…" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "všetky z %d súborov po" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "všetky zdrojové súbory" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "zostavovanie [%s]: " + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "hľadanie zastaraných súborov…" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "%d nájdené" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "nenájdené" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "ukladanie prostredia" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "kontrolovanie konzistencie" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "žiadne ciele nie sú zastarané." + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "aktualizácia prostredia:" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "%s pridané, %s zmenené, %s odstránené" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "čítanie zdrojov…" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "čakanie na procesy…" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "príprava dokumentov" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "nájdená duplicitná položka Obsahu: %s" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "kopírovanie obrázkov…" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "nemožno čítať súbor obrázku %r: jeho kopírovanie namiesto toho" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "Pillow nenájdené – kopírovanie súborov obrázkov" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "zapisovanie súboru %s…" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "neznámy typ MIME pre %s, ignorovaný" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "Súbor prehľadu je v %(outdir)s." + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "žiadne zmeny vo verzii %s." + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "zapisovanie súboru prehľadu…" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Zabudované funkcie" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Úroveň modulu" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "kopírovanie zdrojových súborov…" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "Súbory ePub sú v %(outdir)s." + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "konfiguračná hodnota „epub_language” (alebo „language”) nesmie byť prázdna pri EPUB3" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "neplatný css_file: %r, ignorovaný" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "Katalógy správ sú v %(outdir)s." + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "čítanie šablón… " + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "zapisovanie katalógov správ…" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "Kotva „%s” nenájdená" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "poškodený odkaz: %s (%s)" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "Manuálové stránky sú v %(outdir)s." + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "zapisovanie" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "Stránky HTML sú v %(outdir)s." + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "zostavovanie spoločného dokumentu" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "zapisovanie dodatočných súborov" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "Súbory Texinfo sú v %(outdir)s." + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "spracovanie %s" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "riešenie odkazov…" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "(v" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "kopírovanie podporných súborov Texinfo" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "chyba zápisu súboru Makefile: %s" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "Textové súbory sú v %(outdir)s." + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "chyba zápisu súboru %s: %s" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "Súbory XML sú v %(outdir)s." + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "Súbory pseudo-XML sú v %(outdir)s." + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "Stránky HTML sú v %(outdir)s." + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d. %b %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "konfiguračná hodnota „html_use_opensearch” musí teraz byť reťazec" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Všeobecný index" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "index" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "ďalší" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "predošlý" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "kopírovanie súborov na stiahnutie…" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "nemožno kopírovať súbor na stiahnutie %r: %s" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "kopírovanie statických súborov…" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "nemožno kopírovať statický súbor %r" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "nemožno kopírovať extra súbor %r" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "Nastala chyba pri spracovaní stránky %s.\nPríčina: %r" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "neplatné js_file: %r, ignorované" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "Zaregistrovaných je viac math_renderer, ale žiadny nie je zvolený." + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "Zdaný neznámy math_renderer %r." + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "položka „html_extra_path entry” %r neexistuje" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "položka „html_static_path” %r neexistuje" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "súbor loga %r neexistuje" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "súbor favicon %r neexistuje" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "Dokumentácia %s %s" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "Súbory LaTeX sú v %(outdir)s." + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Index" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Vydanie" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "kopírovanie podporných súborov Tex" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "kopírovanie podporných súborov Tex…" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "kopírovanie dodatočných súborov" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "Chyba značky reST:" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "Chyba kódovania:" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "Chyba rekurzie:" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "Nastala výnimka:" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "Prosím, nahláste to, i keď to bola chyba používateľa, aby mohla byť nabudúce poskytnutá lepšia chybová správa." + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "Hlásenie o chybe možno vyplniť na <https://github.com/sphinx-doc/sphinx/issues>. Ďakujeme!" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "počet úloh musí byť kladné číslo" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "Ďalšie informácie nájdete na <http://sphinx-doc.org/>." + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "cesta k zdrojovým súborom dokumentácie" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "cesta k výstupnej zložke" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "všeobecné voľby" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "použitý zostavovač (predvolený: html)" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "zapísať všetky súbory (predvolene: zapísať len nové a zmenené súbory)" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "nepoužívať uložené prostredie, vždy čítať všetky súbory" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "voľby výstupu konzoly" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "zvýšiť rozvláčnosť (možno opakovať)" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "žiadny výstup, len upozornenia na stderr" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "vôbec žiadny výstup, ani upozornenia" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "generovať farebný výstup (predvolene: automaticky detegovať)" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "negenerovať farebný výstup (predvolene: automaticky detegovať)" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "prepnúť upozornenia na chyby" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "Prosím, zadajte platnú cestu." + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "Prosím, zadajte nejaký text." + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "Prosím, zadajte jedno z 1%s." + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "Vitajte v nástroji Sphinx %s quickstart." + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "Oddeliť zdrojový a výstupný adresár (y/n)" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "Názov projektu" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "Meno(á) autora(ov)" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "Verzia projektu" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "Vydanie projektu" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "Jazyk projektu" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "Prípona zdrojových súborov" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "Meno hlavného dokumentu (bez prípony)" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "Vytváranie súboru %s." + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "Súbor %s už existuje, preskočené." + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "Dokončené: Počiatočná štruktúra adresára bola vytvorená." + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "tichý režim" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "Voľby štruktúry" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "názov projektu" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "mená autorov" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "verzia projektu" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "vydanie projektu" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "jazyk dokumentácie" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "prípona zdrojových súborov" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "meno hlavného dokumentu" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "použiť epub" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "Voľby rozšírenia" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "zapnúť rozšírenie %s" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "zapnúť konkrétne rozšírenia" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "Vytvorenie Makefile a Batchfile" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "vytvoriť makefile" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "nevytvoriť makefile" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "vytvoriť batchfile" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "nevytvoriť batchfile" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "použiť režim make pre Makefile/make.bat" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "nepoužiť režim make pre Makefile/make.bat" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "Šablóny projektu" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "adresár šablóny pre súbory šablóny" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "definovať premennú šablóny" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "Chyba: zadaná cesta nie je adresár alebo súbory sphinx už existujú." + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "sphinx-quickstart generuje len do prázdneho adresára. Prosím, zadajte novú cestu koreňa." + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "Neplatný popis: %s" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "Nemožno použiť obe voľby „%s” a „%s”" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "Súbor na vloženie %r nebol nájdený alebo zlyhalo jeho čítanie" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "Kódovanie %r použité pri čítaní vloženého súboru %r vyzerá ako zlé, skúste zadať voľbu :encoding:" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "Objekt s menom %r nebol nájdený vo vloženom súbore %r" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "Nemožno použiť „lineno-match” s rozdelenou množinou „lines”" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "Riadok %r: žiadne riadky z vloženého súboru %r" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Autor sekcie:" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Autor modulu:" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Autor kódu:" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Autor:" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parametre" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Vracia" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Návratový typ" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (funkcia C)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (člen C)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (makro C)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (typ C)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (premenná C)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "funkcia" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "člen" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "makro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "typ" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "premenná" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Nové vo verzii %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Zmenené vo verzii %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Zastarané od verzie %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "Parametre šablóny" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Vyvoláva" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "trieda" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "koncept" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "enum" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "enumerátor" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (zabudovaná funkcia)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (metóda %s)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (trieda)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (globálna premenná alebo konštanta)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (atribút %s)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Argumenty" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (modul)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "metóda" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "dáta" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "atribút" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "modul" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "duplicitná menovka vzorca %s, ďalší výskyt v %s" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "kľúč. slovo" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operátor" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "objekt" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "výnimka" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "príkaz" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "zabudovaná funkcia" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Premenné" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Vyzdvihuje" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (v module %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (zabudovaná premenná)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (v module %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (zabudovaná trieda)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (trieda v %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (metóda %s.%s)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (statická metóda %s.%s)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (statická metóda %s)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (metóda triedy %s.%s)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (metóda triedy %s)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (atribút %s.%s)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Index modulov Python" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "moduly" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Zastarané" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "metóda triedy" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "statická metóda" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (zastarané)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (direktíva)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (rola)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "direktíva" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "rola" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "premenná prostredia; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "termín glosára" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "jazykový token" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "menovka odkazu" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "premenná prostredia" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "voľba programu" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "dokument" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Index modulov" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Stránka hľadania" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "numfig je vypnutý, :numref: je ignorované." + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "nová konfigurácia" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "zmenená konfigurácia" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "zmenené rozšírenie" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "prostredie zostavenia nie je aktuálne" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "zdrojový adresár zmenený" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "viď %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "viď aj %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Symboly" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "voľby rozšírenia" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "chýbajúce „+” alebo „-” vo voľbe „%s”." + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "'%s' nie je platná voľba." + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "„%s” nie je platná voľba pyversion" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "Direktíva graphviz nemôže mať naraz argumenty content a filename" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "Externý súbor Graphviz %r nebol nájdený alebo zlyhalo jeho čítanie" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "Ignorovaná direktíva „graphviz” bez obsahu." + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "príkaz dot %r nemožno spustiť (nutný kvôli výstupu graphviz), skontrolujte nastavenie graphviz_dot" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "graphviz_output_format musí byť „png” alebo „svg”, ale je %r" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[graf: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[graf]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "Trvalý odkaz na tento vzorec" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(v %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[zdroj]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "ToDo" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<pôvodná položka>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(<<original entry>> je umiestnená v %s, riadok %d.)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "pôvodná položka" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[dokumenty]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Kód modulu" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Zdrojový kód %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Prehľad: kód modulu" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Všetky moduly, pre ktoré je dostupný kód</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "Základ: %s" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "alias pre :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "Argumenty kľúčových slov" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Výstraha" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Upozornenie" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Nebezpečné" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Chyba" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Rada" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Dôležité" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Poznámka" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Viď aj" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Tip" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Varovanie" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "pokračovanie z predošlej strany" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "pokračuje na ďalšej strane" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "strana" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "Obsah" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Hľadať" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "OK" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Zobraziť zdroj" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Prehľad" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Vitajte! Toto je" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "dokumentácia" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "posledná aktualizácia" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Indexy a tabuľky" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Celkový obsah" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "zoznam všetkých sekcií a podsekcií" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "hľadať v tejto dokumentácii" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Celkový index modulov" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "rýchly prístup ku všetkým modulom" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "všetky funkcie, triedy, termíny" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Index – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Celý index na jednej strane" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Indexové stránky po písmenách" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "môže byť rozsiahle" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navigácia" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Hľadať v %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "O dokumentácii" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Autorské právo" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© Copyright %(copyright)s." + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Naposledy aktualizované %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Vytvorené pomocou <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Hľadať v %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Predošlá téma" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "predošlá kapitola" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Ďalšia téma" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "ďalšia kapitola" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Prosím, na zapnutie funkcie hľadania,aktivujte\nJavaScript ." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "hľadať" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Výsledky hľadania" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "Vášmu hľadaniu nezodpovedá žiadny dokument. Prosím, skontrolujte, že všetky zadané slová sú správne napísané a že ste zvolili vhodné kategórie." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Rýchle hľadanie" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Táto stránka" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Zmeny vo verzii %(version)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Automaticky generovaný zoznam zmien vo verzii %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Zmeny knižnice" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Zmeny API C" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Ostatné zmeny" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Trvalý odkaz na tento nadpis" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Trvalý odkaz na túto definíciu" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Skryť výsledky hľadania" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "Hľadanie" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Príprava hľadania..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "Hľadanie dokončené, nájdené %s strana(y), ktoré vyhovujú hľadanému výrazu." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", v " + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Rozbaliť bočný panel" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Zbaliť bočný panel" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Obsah" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "viac ako jeden cieľ krížového odkazu %r: môže byť %s" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "%s:%s cieľ odkazu nenájdený: %%(target)s" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "Cieľ odkazu %r nebol nájdený: %%(target)s" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Trvalý odkaz na túto tabuľku" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Trvalý odkaz na tento kód" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Trvalý odkaz na tento obrázok" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "Trvalý odkaz na tento obsah" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Poznámky pod čiarou" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[obrázok: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[obrázok]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/sl/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/sl/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..668d230 --- /dev/null +++ b/sphinx/sphinx/locale/sl/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "sl", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "O dokumentih", "Automatically generated list of changes in version %(version)s": "Avtomatsko generiran seznam sprememb v verziji %(version)s", "C API changes": "C API spremembe", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "Popoln Seznam Vsebine", "Contents": "", "Copyright": "Vse pravice pridr\u017eane", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Narejeno s <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "", "Full index on one page": "Poln indeks na eni strani", "General Index": "Splo\u0161ni abecedni seznam", "Global Module Index": "Splo\u0161en seznam modulov", "Go": "Potrdi", "Hide Search Matches": "Skrij resultate iskanja", "Index": "Abecedni seznam", "Index – %(key)s": "Seznam – %(key)s", "Index pages by letter": "Indeksiraj strani po \u010drki", "Indices and tables:": "Kazalo in seznami:", "Last updated on %(last_updated)s.": "Zadnji\u010d posodobljeno %(last_updated)s.", "Library changes": "Spremembe knji\u017enice", "Navigation": "Navigacija", "Next topic": "Naslednja tema", "Other changes": "Ostale spremembe", "Overview": "Pregled", "Permalink to this definition": "Povezava na to definicijo", "Permalink to this headline": "Povezava na naslov", "Please activate JavaScript to enable the search\n functionality.": "Za pravilno delovanje Iskanja morete vklopiti\n JavaScript.", "Preparing search...": "", "Previous topic": "Prej\u0161nja tema", "Quick search": "Hitro iskanje", "Search": "I\u0161\u010di", "Search Page": "Iskalnik", "Search Results": "Rezultati Iskanja", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "I\u0161\u010di med %(docstitle)s", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Prika\u017ei izvorno kodo", "Table of Contents": "", "This Page": "Trenutna stran", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "vse funkcije, razredi, izrazi", "can be huge": "lahko je veliko", "last updated": "", "lists all sections and subsections": "prikazi vse sekcije in podsekcije", "next chapter": "naslednje poglavje", "previous chapter": "prej\u0161nje poglavje", "quick access to all modules": "hiter dostop do vseh modulov", "search": "i\u0161\u010di", "search this documentation": "i\u0161\u010di po dokumentaciji", "the documentation for": ""}, "plural_expr": "(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/sl/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/sl/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..3989e7f --- /dev/null +++ b/sphinx/sphinx/locale/sl/LC_MESSAGES/sphinx.po @@ -0,0 +1,3465 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Slovenian (http://www.transifex.com/sphinx-doc/sphinx-1/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Vgrajeni deli" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Nivo modula" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (v " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d %b, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Splošni abecedni seznam" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "abecedni seznam" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "naprej" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "nazaj" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Abecedni seznam" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Izdaja" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Avtor sekcije: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Avtor modula: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Avtor: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parametri" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Vrne" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Vrne tip" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C funkcija)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C član)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C makro)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C tip)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C spremenljivka)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "funkcija" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "član" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "tip" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Novo v verziji %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Spremenjeno v verziji %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Zastarelo od verzije %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "razred" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (vgrajene funkcije)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s metoda)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (razred)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s atribut)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (modul)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "atribut" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "modul" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "ključna beseda" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operator" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "objekt" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "izjema" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "izjava" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "vgrajene funkcije" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Sproži izjemo" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (v modulu %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (vgrajene spremenljivke)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (v modulu %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (vgrajen razred)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (razred v %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s metoda)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s statična metoda)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s statična metoda)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s atribut)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "Moduli" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Zastarelo" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "statična metoda" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (zastarelo)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "okoljska spremenljivka; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "okoljska spremenljivka" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Seznam modulov" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Iskalnik" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Todo" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "vzdevek za :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Pozor" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Previdno" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Nevarno" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Napaka" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Nasvet" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Pomembno" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Opomba" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Poglej Tudi" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Nasvet" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Opozorilo" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "nadaljevanje iz prejšnje strani" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Išči" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Potrdi" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Prikaži izvorno kodo" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Pregled" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Kazalo in seznami:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Popoln Seznam Vsebine" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "prikazi vse sekcije in podsekcije" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "išči po dokumentaciji" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Splošen seznam modulov" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "hiter dostop do vseh modulov" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "vse funkcije, razredi, izrazi" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Seznam – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Poln indeks na eni strani" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Indeksiraj strani po črki" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "lahko je veliko" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navigacija" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Išči med %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "O dokumentih" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Vse pravice pridržane" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Zadnjič posodobljeno %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Narejeno s <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Išči %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Prejšnja tema" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "prejšnje poglavje" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Naslednja tema" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "naslednje poglavje" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Za pravilno delovanje Iskanja morete vklopiti\n JavaScript." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "išči" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Rezultati Iskanja" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Hitro iskanje" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Trenutna stran" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Avtomatsko generiran seznam sprememb v verziji %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Spremembe knjižnice" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "C API spremembe" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Ostale spremembe" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Povezava na naslov" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Povezava na to definicijo" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Skrij resultate iskanja" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Opombe" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[slika]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/sq/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/sq/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..de4b230 --- /dev/null +++ b/sphinx/sphinx/locale/sq/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "sq", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">T\u00eb drejta kopjimi</a> %(copyright)s.", "© Copyright %(copyright)s.": "© T\u00eb drejta kopjimi %(copyright)s.", ", in ": "", "About these documents": "Mbi k\u00ebto dokumente", "Automatically generated list of changes in version %(version)s": "", "C API changes": "Ndryshime API C", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Tkurre an\u00ebshtyll\u00ebn", "Complete Table of Contents": "Tryez\u00eb e Plot\u00eb e L\u00ebnd\u00ebs", "Contents": "L\u00ebnd\u00eb", "Copyright": "T\u00eb drejta kopjimi", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "Zgjeroje an\u00ebshtyll\u00ebn", "Full index on one page": "Tregues i plot\u00eb n\u00eb nj\u00eb faqe", "General Index": "Tregues i P\u00ebrgjithsh\u00ebm", "Global Module Index": "Tregues Global Modulesh", "Go": "", "Hide Search Matches": "Fshih P\u00ebrputhje K\u00ebrkimi", "Index": "Tregues", "Index – %(key)s": "Tregues – %(key)s", "Index pages by letter": "Faqe treguesi sipas shkronjash", "Indices and tables:": "Tregues dhe tabela:", "Last updated on %(last_updated)s.": "P\u00ebrdit\u00ebsuar s\u00eb fundi m\u00eb %(last_updated)s.", "Library changes": "Ndryshime librarie", "Navigation": "L\u00ebvizje", "Next topic": "Subjekti pasues", "Other changes": "Ndryshime t\u00eb tjera", "Overview": "P\u00ebrmbledhje", "Permalink to this definition": "Permalidhje p\u00ebr te ky p\u00ebrkufizim", "Permalink to this headline": "Permalidhje te ky titull", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "Po p\u00ebrgatitet k\u00ebrkim...", "Previous topic": "Subjekti i m\u00ebparsh\u00ebm", "Quick search": "K\u00ebrkim i shpejt\u00eb", "Search": "", "Search Page": "Faqe K\u00ebrkimesh", "Search Results": "P\u00ebrfundime K\u00ebrkimi", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "K\u00ebrkoni brenda %(docstitle)s", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Shfaq Burimin", "Table of Contents": "Tryeza e L\u00ebnd\u00ebs", "This Page": "Kjo Faqe", "Welcome! This is": "Mir\u00eb se vini! Ky \u00ebsht\u00eb", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "krejt funksionet, klasat, termat", "can be huge": "mund t\u00eb jet\u00eb i st\u00ebrmadh", "last updated": "p\u00ebrdit\u00ebsuar s\u00eb fundi m\u00eb", "lists all sections and subsections": "paraqet krejt ndarjet dhe n\u00ebnndarjet", "next chapter": "kapitulli pasues", "previous chapter": "kapitulli i m\u00ebparsh\u00ebm", "quick access to all modules": "hyrje e shpejt\u00eb te krejt modulet", "search": "k\u00ebrko", "search this documentation": "k\u00ebrkoni te ky dokumentim", "the documentation for": "dokumentimi p\u00ebr"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/sq/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/sq/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..8d432f7 --- /dev/null +++ b/sphinx/sphinx/locale/sq/LC_MESSAGES/sphinx.po @@ -0,0 +1,3465 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-15 09:14+0000\n" +"Last-Translator: Besnik <besnik@programeshqip.org>\n" +"Language-Team: Albanian (http://www.transifex.com/sphinx-doc/sphinx-1/language/sq/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: sq\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "drejtoria e formësimeve nuk përmban një kartelë conf.py (%s)" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "S’gjendet dot drejtori burim (%s)" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "Drejtoria burim dhe drejtoria vendmbërritje s’mund të jenë identike" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "Po xhirohet Sphinx v%s" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "Për arsye sigurie, mënyra paralele është e çaktivizuar në macOS dhe python3.8 dhe më sipër. Për më tepër hollësi, ju lutemi, lexoni https://github.com/sphinx-doc/sphinx/issues/6803" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "Ky projekt lyp të paktën Sphinx v%s, ndaj s’mund të montohet me këtë version." + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "po krijohet drejtori përfundimesh" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "teksa ujdiset zgjerimi %s:" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "'setup' siç është përcaktuar aktualisht te conf.py s’është funksion Python që mund të thirret. Ju lutemi, ndryshojeni përcaktimin e tij që ta bëni një funksion që mund të thirret. Kjo është e nevojshme që conf.py të sillet si një zgjerim Sphinx." + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "po ngarkohen përkthime [%s]… " + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "u bë" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "s’është i passhëm për mesazhe të brendshëm" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "dështoi: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "S’u përzgjodh montues, po përdoret parazgjedhja: html" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "doli me sukses" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "u përfundua me probleme" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "montimi %s, % sinjalizim (me sinjalizime të trajtuara si gabime)." + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "montimi %s, %s sinjalizime (me sinjalizime të trajtuara si gabime)." + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "build %s, %s warning." + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "montimi %s, %s sinjalizime" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "montimi %s." + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "klasa %r e nyjeve është e regjistruar tashmë, vizitorët e saj do të anashkalohen" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "direktiva %r është e regjistruar tashmë, do të anashkalohet" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "roli %r është e regjistruar tashmë, do të anashkalohet" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "zgjerimi %s nuk deklaron nëse është i parrezik për lexim paralel, po merret se s’është - ju lutemi, kërkojini autorin të zgjerimit ta kontrollojë dhe ta bëjë këtë shprehimisht" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "zgjerimi %s s’është i sigurt për lexim paralel" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "zgjerimi %s nuk deklaron nëse është i parrezik për shkrim paralel, po merret se s’është - ju lutemi, kërkojini autorin të zgjerimit ta kontrollojë dhe ta bëjë këtë shprehimisht" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "zgjerimi %s s’është i sigurt për shkrim paralel" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "s’mund të anashkalohet rregullim formësimi fjalorthi %r, po shpërfillet (për të ujdisur elemente individuale, përdorni %r)" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "numër %r i pavlefshëm për vlerë formësimi %r, po shpërfillet" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "s’mund të anashkalohet rregullim formësimi %r me një lloj të pambuluar, po shpërfillet" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "vlerë e panjohur formësimi %r te anashkalimi, po shpërfillet" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "S’ka vlerë të tillë formësimi: %s" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "Vlerë formësimi %r e pranishme tashmë" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "Ka një gabim sintakse te kartela juaj e formësimit: %s\n" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "Kartela e formësimit (ose një nga modulet që ajo importon) thirri sys.exit()" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "Ka një gabim të programueshëm te kartela juaj e formësimit:\n\n%s" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "Vlera e formësimit `source_suffix' pret një varg, një listë vargjesh, ose një fjalor. Por është dhënë `%r'." + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "Ndarja %s" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "Figura %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Tabela %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "Vlera e formësimit `{name}` duhet të jetë një nga {candidates}, por është dhënë `{current}`." + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "Vlera e formësimit `{name}' është e llojit `{current.__name__}'; pritej {permitted}." + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "Vlera e formësimit `{name}' është e llojit `{current.__name__}', si parazgjedhje merr `{default.__name__}'." + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "vlera e formësimit %r është caktuar si një varg me shenja jo ASCII; kjo mund të shpjerë në gabime Unikodi. Ju lutemi, përdorni vargje Unikod, p.sh., %r." + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "s’u gjet primary_domain %r, po shpërfillet." + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "Që prej v2.0, Sphinx përdor \"index\" për master_doc, si parazgjedhje. Ju lutemi, shtoni \"master_doc = 'contents'\" te conf.py juaj." + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "Vlerë formësimi %r e pranishme tashmë" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "Emër i panjohur akti: %s" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "Zgjerimi %s është i domosdoshëm për needs_extensions settings, por s’është ngarkuar." + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "Ky projekt lyp zgjerimin %s të paktën nën versionin %s dhe prandaj s’mund të montohet me versionin e ngarkuar (%s)." + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "dokument i palexueshëm. U shpërfill." + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "Klasa %s e montuesit nuk ka atribut \"name\"" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "Montuesi %r ekziston tashmë (te moduli %s)" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "Emër %s montuesi jo i regjistruar ose i passhëm përmes pike hyrjeje" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "Emër montuesi %s jo i regjistruar" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "përkatësi %s e regjistruar tashmë" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "përkatësi %s ende e paregjistruar" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "Direktiva %r është e regjistruar tashmë te përkatësia %s" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "Roli %r është i regjistruar tashmë te përkatësia %s" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "Treguesi %r është i regjistruar tashmë te përkatësia %s" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "object_type %r është i regjistruar tashmë" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "crossref_type %r është i regjistruar tashmë" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "source_suffix %r është i regjistruar tashmë" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "source_parser për %r është i regjistruar tashmë" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "Përtypës burimesh për %s jo i regjistruar" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "Përkthyesi për %r ekziston tashmë" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "kwargs për add_node() duhet të jetë një çift funksioni (visit, depart): %r=%r" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "enumerable_node %r tashmë i regjistruar" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "zgjerimi %r qe shkrirë me Sphinx-in që me versionin %s; ky zgjerim është shpërfillur." + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "Përjashtimi origjinal:\n" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "S’u importua dot zgjerimi %s" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "zgjerimi %r s’ka funksion setup(); a është vërtet një modul zgjerimi Sphinx-i?" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "Zgjerimi %s i përdorur nga ky projekt lyp të paktën Sphinx v%s; prandaj s’mund të montohet me këtë version." + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "zgjerimi %r u përgjigj me një objekt të pambuluar prej funksionit të vet setup(); duhet të përgjigjet me Asnjë ose një fjalorth tejtëdhënash" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "tema %r s’ka rregullimin \"theme\"" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "tema %r s’ka rregullimin \"inherit\"" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "s’u gjet temë e emërtuar %r, u trashëgua nga %r" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "rregullimi %s.%s nuk haset në asnjë prej formësimeve temash ku u kërkua" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "është dhënë mundësi teme %r e pambuluar" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "kartela %r te shteg teme s’është kartelë zip e vlefshme ose nuk përmban temë" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "sphinx_rtd_theme s’është më një varësi e ngulitur në program, që prej versionit 1.4.0. Ju lutemi, instalojeni dorazi. (pip install sphinx_rtd_theme)" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "s’u gjet temë e emërtuar %r (mos mungon theme.conf?)" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "s’u gjet figurë e përshtatshme për montuesin %s: %s (%s)" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "s’u gjet figurë e përshtatshme për montuesin %s: %s" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "po montohet [mo]: " + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "po shkruhet përfundim… " + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "krejt kartelat po %d" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "objektiva për kartela po %d që janë specifikuar" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "objektiva për kartela po %d që janë të papërditësuara" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "krejt kartelat burim" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "kartela %r e dhënë te rresht urdhrash s’gjendet te drejtori burim, po shpërfillet" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "kartela %r e dhënë te rresht urdhrash s’ekziston, po shpërfillet" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "kartela burim %d dhënë te rresht urdhrash" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "objektiva për kartela burim %d që janë të papërditësuara" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "po montohet [%s]: " + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "po shihet për kartela të sapovjetruara… " + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "U gjet %d" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "s’u gjet gjë" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "s’ka objektiva të vjetruar." + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "po përditësohet mjedisi: " + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "%s të shtuar, %s të ndryshuar, %s të hequr" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "po lexohen burime… " + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "po pritet për workers…" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "emra dokumentesh për shkrim: %s" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "po përgatiten dokumente" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "u gjet zë TeL i përsëdytur: %s" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "po kopjohen figura… " + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "s’lexohet dot kartelë figure %r: në vend të tij, po kopjohet" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "s’kopjohet dot kartelë figure %r: %s" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "s’shkruhet dot kartelë figure %r: %s" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "po shkruhet kartelë %s…" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "lloj MIME i panjohur për %s, po shpërfillet" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "Kartela përmbledhje gjendet te %(outdir)s." + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "s’ka ndryshime në version %s." + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "po shkruhet kartelë përmbledhje…" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Shkallë moduli" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "po kopjohen kartela burim…" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "s’u lexua dot %r për krijim regjistrimi ndryshimesh" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "Montuesi provë nuk prodhon kartela." + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "Kartela ePub gjendet te %(outdir)s." + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "vlera e formësimit \"epub_language\" (ose \"language\") s’duhet të jetë e zbrazët për EPUB3" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "vlera e formësimit \"epub_uid\" duhet të jetë XML NAME për EPUB3" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "vlera e formësimit \"epub_title\" (ose \"html_title\") s’duhet të jetë e zbrazët për EPUB3" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "vlera e formësimit \"epub_author\" s’duhet të jetë e zbrazët për EPUB3" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "vlera e formësimit \"epub_contributor\" s’duhet të jetë e zbrazët për EPUB3" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "vlera e formësimit \"epub_description\" s’duhet të jetë e zbrazët për EPUB3" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "vlera e formësimit \"epub_publisher\" s’duhet të jetë e zbrazët për EPUB3" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "vlera e formësimit \"epub_copyright\" (ose \"copyright\") s’duhet të jetë e zbrazët për EPUB3" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "vlera e formësimit \"epub_identifier\" s’duhet të jetë e zbrazët për EPUB3" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "vlera e formësimit \"version\" s’duhet të jetë e zbrazët për EPUB3" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "css_file e pavlefshme: %r, u shpërfill" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "Katalogët e mesazheve gjenden te %(outdir)s." + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "objektiva për kartela gjedhe %d" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "po lexohen gjedhe… " + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "po shkruhen katalogë mesazhesh… " + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "Shihni për çfarëdo gabimesh te përfundimi më sipër ose te %(outdir)s/output.txt" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "S’u gjet spirancë '%s'" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "lidhje e dëmtuar: %s (%s)" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "Faqet e doracakut gjenden në %(outdir)s." + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "s’u gjet vlerë formësimi \"man_pages\"; s’do të shkruhet ndonjë faqe doracaku" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "vlera e formësimit \"man_pages\" i referohet një dokumenti të panjohur %s" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "Faqja HTML gjenden në %(outdir)s." + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "po montohet dokument njësh" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "po shkruhen kartela shtesë" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "Kartelat Texinfo gjenden në %(outdir)s." + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "\nXhironi 'make' te ajo drejtori, që të xhirohen këto përmes makeinfo-s\n(përdorni këtu 'make info' që kjo të kryhet automatikisht)." + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "s’u gjet vlerë formësimi \"texinfo_documents\"; s’do të shkruhet ndonjë dokument" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "vlera e formësimit \"texinfo_documents\" i referohet një dokumenti të panjohur %s" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "po përpunohet %s" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "po shquhen referencat…" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (në " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "po kopjohen kartela mbulimi Texinfo" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "gabim në shkrim kartele Makefile: %s" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "Kartelat tekst gjenden në %(outdir)s." + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "gabim në shkrim kartele %s: %s" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "Kartelat XML gjenden në %(outdir)s." + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "Kartelat pseudo-XML gjenden në %(outdir)s." + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "kartela e të dhënave të montimit është e dëmtuar: %r" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "Faqet HTML gjenden në %(outdir)s." + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "S’u arrit të lexohet kartelë të dhënash montimi: %r" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d %b, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "vlera e formësimit html_use_opensearch tani duhet të jetë një varg" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Tregues i Përgjithshëm" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "tregues" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "pasuesi" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "i mëparshmi" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "po prodhohen tregues" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "po shkruhen faqe shtesë" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "po kopjohen kartela të shkarkueshme… " + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "s’kopjohet dot kartelë e shkarkueshme %r: %s" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "po kopjohen kartela statike… " + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "s’kopjohet dot kartelë statike %r" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "po kopjohen kartela ekstra" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "s’kopjohet dot kartelë ekstra %r" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "S’u arrit të shkruhet kartelë të dhënash montimi: %r" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "treguesi i kërkimi s’u ngarkua dot, por jo krejt dokumentet do të montohen: treguesi do të jetë i paplotë." + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "faqja %s ka përputhje me dy rregullsi te html_sidebars: %r dhe %r" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "ndodhi një gabim Unikod, kur vizatohej faqja %s. Ju lutemi, siguroni që krejt vlerat e formësimit që përmbajnë lëndë jo-ASCII të jenë vargje Unikod." + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "Ndodhi një gabim gjatë vizatimit të faqes %s.\nArsye: %r" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "js_file e pavlefshme: %r, u shpërfill" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "Janë të regjistruar plot math_renderers. Por s’u përzgjodh math_renderer." + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "U dha math_renderer %r i panjohur." + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "zëri html_extra_path %r s’ekziston" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "zëri %r i html_extra_path entry është vendosur jashtë outdir-it" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "zëri html_static_path %r s’ekziston" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "zëri %r i html_extra_path entry është vendosur brenda outdir-it" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "kartela stemë %r s’ekziston" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "kartela favikonë %r s’ekziston" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "Dokumentim i %s %s" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "Kartelat LaTeX gjenden në %(outdir)s." + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "\nXhironi 'make' te ajo drejtori që të xhirohen këto përmes (pdf)latex\n(që të bëhet kjo automatikisht, përdorni `make latexpdf' këtu)." + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "s’u gjet vlerë formësimi \"texinfo_documents\"; s’do të shkruhet ndonjë dokument" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "vlera e formësimit \"texinfo_documents\" i referohet një dokumenti të panjohur %s" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Tregues" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Hedhje Në Qarkullim" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "s’ka mundësi Babel të njohur për gjuhën %r" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "po kopjohen kartela mbulimi TeX" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "po kopjohen kartela mbulimi TeX…" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "po kopjohen kartela shtesë" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "Kyç i panjohur formësimi: latex_elements[%r], u shpërfill." + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "%r s’ka rregullimin \"theme\"" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "%r s’ka rregullimin \"%s\"" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "Ndodhi një përjashtim gjatë montimit, po niset diagnostikuesi:" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "U ndërpre!" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "Gabim markup-i reST:" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "Gabim kodimi:" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "Traceback-u i plotë është ruajtur te %s, nëse doni t’ua raportoni problemin zhvilluesve." + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "Gabim përsëritje:" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "Kjo mund të ndodhë me kartela burim shumë të mëdha ose të futura thellë brenda njëra-tjetrës. Mund të rrisni me kujdes kufirin parazgjedhje për ripërsëritje Python prej 1000 te conf.py me p.sh.:" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "Ndodhi një përjashtim:" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "Ju lutemi, njoftojeni nëse qe një gabim përdoruesi, që kështu herës tjetër të mund të furnizohet një mesazh më i mirë gabimi." + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "Një njoftim të mete mund të depozitohet te gjurmuesi në <https://github.com/sphinx-doc/sphinx/issues>. Faleminderit!" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "numri i aktit duhet të jetë një numër pozitiv" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "Për më tepër të dhëna, vizitoni <http://sphinx-doc.org/>." + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "\nProdhoni dokumentim nga kartela burim.\n\nsphinx-build prodhon dokumentim prej kartelash te SOURCEDIR dhe e vendos\nte OUTPUTDIR. Kërkon për 'conf.py' te SOURCEDIR për rregullime formësimi.\nMjeti 'sphinx-quickstart' mund të përdoret për të prodhuar kartela gjedhe,\npërfshi 'conf.py'\n\nsphinx-build mund të krijojë dokumentim në formate të ndryshëm. Një format\npërzgjidhet duke specifikuar te rreshti i urdhrave emrin e montuesit; HTML-ja,\nsi parazgjedhje. Montuesit mund të kryejnë gjithashtu veprime të tjera të lidhura\nme përpunim dokumentimi.\n\nSi parazgjedhje, gjithçka që është e papërditësuar, është e montuar. Nëse doni\nmontim vetëm për kartela të përzgjedhura, kjo mund të bëhet duke specifikuar\nemra kartelash individuale.\n" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "shteg për te kartela burimi dokumentimi" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "shteg për te drejtori përfundimesh" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "një listë kartelash specifike për rimontim. E shpërfillur, nëse jepet -a" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "mundësi të përgjithshme" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "montues për t’u përdorur (parazgjedhje: html)" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "shkruaj krejt kartelat (parazgjedhje: shkruaj vetëm kartela të reja dhe ato të ndryshuara)" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "mos përdor një mjedis të ruajtur, lexo përherë krejt kartelat" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "shteg për mjedis të ruajtur në fshehtinë dhe kartela doctree (parazgjedhje: OUTPUTDIR/.doctrees)" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "shteg ku gjendet kartelë formësimi (conf.py) (parazgjedhje: i njëjtë me SOURCEDIR)" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "mos përdor fare kartelë formësimesh, vetëm mundësitë -D" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "anashkalo një rregullim te kartelë formësimi" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "jep një vlerë te gjedhe HTML" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "mënyrë gërricëse, sinjalizo mbi krejt referencat që mungojnë" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "pa output në stdout, thjesht sinjalizime në stderr" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "pa output fare, madje as sinjalizime" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "shkruaj sinjalizime (dhe gabime) te kartela e dhënë" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "shndërroji sinjalizimet në gabime" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "me -W, vazhdo punën, kur merren sinjalizime" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "s’gjenden dot kartela %r" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "s’mund të ndërthuret një mundësi -a dhe emra kartelash" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "s’hapet dot kartelë sinjalizimesh %r: %s" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "argumenti i mundësisë -D duhet të jetë në formën emër=vlerë" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "argumenti i mundësisë -A duhet të jetë në formën emër=vlerë" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "fut automatikisht docstrings prej modulesh" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "testo automatikisht copëza kodi te blloqe doctest" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "lidhje mes dokumentimi Sphinx projektesh të ndryshëm" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "shkruaj zëra \"todo\" që mund të shfaqen ose fshihen te montimi" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "përfshi formula matematikore, të vizatuara si figura PNG ose SVG" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "përfshi formula matematikore, të vizatuara te shfletuesi nga MathJax" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "përfshirje e kushtëzuar lënde, bazuar në vlera formësimi" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "përfshi lidhje te kodi burim i objekteve Python të dokumentuara" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "krijo kartelë .nojekyll për të botuar dokumentin në faqe GitHub" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "Ju lutemi, jepni një emër shtegu të vlefshëm." + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "Ju lutemi, jepni ca tekst." + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "Ju lutemi, jepni një nga %s." + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "Ju lutemi, jepni 'y' ose 'n'." + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "Ju lutemi, jepni një prapashtesë kartele, për shembull, '.rst' ose '.txt'." + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "* Shënim: janë dhënë shenja jo-ASCII dhe kodim i panjohur terminali -- po konsiderohen UTF-8 ose Latin-1." + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "Mirë se vini te mjeti për fillim të shpejtë me Sphinx %s." + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "Ju lutemi, jepni vlera për rregullimet vijuese (thjesht shtypni tastin\nEnter që të pranohet një vlerë parazgjedhje, nëse është një e tillë\nbrenda kllapave)." + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "Shteg rrënjë i përzgjedhur: %s" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "Jepni shtegun rrënjë për te dokumenti." + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "Shteg rrënje për te dokumenti" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "Gabim: te shtegu rrënjë i përzgjedhur u gjet një conf.py ekzistues." + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "sphinx-quickstart s’do të mbishkruajë projekte ekzistuese Sphinx." + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "Ju lutemi, jepni një shteg të ri rrënjë (ose thjesht shtypni tastin Enter, që të dilet)" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "Keni dy mundësi për vendosjen e drejtorisë së montimeve për çka prodhon Sphinx-i.\nPërdorni një drejtori \"_build\" brenda shtegut rrënjë, ose i ndani\ndrejtoritë \"burim\" dhe \"montim\" brenda shtegut rrënjë." + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "Nda veçmas drejtoritë burim dhe montim (y/n)" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "Brenda drejtorisë rrënjë do të krijohen dy drejtori të tjera; \"_templates\" për\ngjedhe vetjake HTML, dhe \"_static\" për fletëstile vetjakë dhe kartela të tjera statike.\nMund të krijoni një tjetër parashtesë (bie fjala, \".\") në vend të nënvijës." + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "Parashtesë emrash për drejtori gjedhesh dhe statikesh" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "Emri i projektit do të shfaqet në disa vende te dokumentimi i montuar." + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "Emër projekti" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "Emër(a) autori(ësh)" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "Sphinx-i përdor nocionet e një \"versioni\" dhe një \"hedhjeje në qarkullim\" për\nsoftware-in. Çdo version mund të ketë hedhje të shumta në qarkullim. Bie\nfjala, për Python-in versionet ngjajnë me 2.5 ose 3.0, teksa hedhja në\nqarkullim ngjan me 2.5.1 ose 3.0a1. Nëse s’ju hyn në punë kjo strukturë\nduale, thjesht vëruni të dyjave të njëjtën vlerë." + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "Version projekti" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "Hedhje në qarkullim e projektit" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "Nëse dokumentet janë shkruan në gjuhë tjetër nga anglishtja,\nmund të përzgjidhni një gjuhë këtu, përmes kodit të asaj gjuhe. Sphinx-i mandej\ndo të përkthejë në atë gjuhë tekstin që prodhon.\n\nPër një listë kodesh të mbuluar, shihni\nhttps://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "Gjuhë projekti" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "Prapashtesa e emrave të kartelave për kartela burim. Zakonisht, kjo\nështë ose \".txt\", ose \".rst\". Vetëm kartelat me këtë prapashtesë\nmerren si dokumente." + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "Prapashtesë kartele burim" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "Një dokument është i veçantë, për faktin se konsiderohet si nyja e epërme\ne \"pemës së lëndës\", domethënë, është rrënja e strukturës hierarkike\ntë dokumenteve. Zakonisht, ky është \"index\", por nëse dokumenti juaj \"index\"\nështë një gjedhe vetjake, si të tillë mund të caktoni një tjetër emër kartele." + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "Emër i dokumentit tuaj kryesor (pa prapashtesë)" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "Gabim: kartela master %s është gjetur tashmë një herë në shtegun rrënjë të përzgjedhur." + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "sphinx-quickstart s’do të mbishkruajë kartelën ekzistuese." + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "Ju lutemi, jepni një emër të ri kartele, ose riemërtojeni kartelën ekzistuese dhe shtypni tastin Enter" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "Përcaktoni se cilët nga zgjerimet vijuese Sphinx duhen aktivizuar:" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "Shënim: imgmath dhe mathjax s’mund të aktivizohen në të njëjtën kohë. U hoqë përzgjedhja e imgmath-it." + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "Për ju mund të prodhohen një kartelë makefile dhe një urdhrash Windows, që\nkështu t’ju duhet vetëm të xhironi, për shembull, `make html', në vend se\ntë thirret drejtpërsëdrejti sphinx-build." + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "Të krijohet Makefile? (y/n)" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "Të krijohet kartelë urdhrash Windows? (y/n)" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "Po krijohet kartela %s." + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "Ka tashmë një kartelë %s, po anashkalohet." + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "Përfundoi: U krijua një strukturë fillestare drejtorish." + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "Tani duhet të populloni kartelën tuaj master file %s dhe të krijoni kartela të tjera\nburim të dokumentimit. " + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "Përdorni Makefile-in që të montohen dokumentet, kështu:\n make builder" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "Përodrni urdhrin sphinx-build që të montohen dokumentet, kështu:\n sphinx-build -b montues %s %s" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "ku montues është një nga montuesin e mbuluar, p.sh., html, latex ose linkcheck." + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "\nProdho kartelat e domosdoshme për një projekt Sphinx.\n\nsphinx-quickstart është një mjet ndërveprues që bën disa pyetje rreth projektit\ntuaj dhe mandej prodhon një drejtori të plotë dokumentimi dhe një shembull\nMakefile për t’u përdorur me sphinx-build.\n" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "mënyra pa zhurmë" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "rrënjë e projektit" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "Mundësi strukture" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "nëse është kërkuar, nda veçmas drejtoritë burim dhe montim" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "zëvendësim për pikën te _templates, etj." + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "Mundësi bazë të projektit" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "emër projekti" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "emra autorësh" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "version i projektit" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "hedhje në qarkullim e projektit" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "gjuhë dokumenti" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "prapashtesë kartele burim" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "përdor epub" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "Mundësi zgjerimi" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "aktivizo zgjerimin %s" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "Krijim makefile-i dhe batchfile-i" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "krijo makefile" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "mos krijo makefile" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "krijo batchfile" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "mos krijo batchfile" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "përdor make-mode për Makefile/make.bat" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "mos përdor make-mode për Makefile/make.bat" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "drejtori gjedhesh për kartela gjedhe" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "përkufizoni një ndryshore gjedheje" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "\"quiet\" është specifikuar, por s’është specifikuar ndonjë \"projekt\" ose \"autor\"." + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "Gabim:shtegu i dhënë s’është drejtori, ose kartelat sphinx ekzistojnë tashmë." + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "sphinx-quickstart prodhon vetëm te një drejtori e zbrazët. Ju lutemi, specifikoni një shteg rrënjë të ri." + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "Ndryshore e pavlefshme gjedheje: %s" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "Titull i pavlefshëm: %s" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "numri i specifikuar për rreshtin është jashtë intervali (1-%d): %r" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "S’mund të përdoren në të njëjtën kohë të dyja mundësitë \"%s\" \"%s\"" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "Kodimi %r i përdorur për lexim të kartelës include %r duket të jetë i gabuar, provoni të jepni një mundësi :encoding:" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "Objekti i emërtuar %r s’u gjet te kartelë include %r" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Autor ndarjeje: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Autor moduli: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Autor kodi: " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Autor: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parametra" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Kthime" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Lloj kthimi" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (funksion C)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (anëtar C)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (makro C)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (lloj C)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (ndryshore C)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "funksion" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "anëtar" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "makro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "ndryshore" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "përshkrim i përsëdytur objekti C i %s, tjetër instancë në %s, përdorni :noindex: për një prej tyre" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Të reja në versionin %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Ndryshuar në versionin %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Nxjerrë nga përdorimi që me versionin %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "citim i përsëdytur %s, tjetër instancë te %s" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "Përmendja [%s] s’është në referencë." + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "Deklarim i përsëdytur, i përcaktuar edhe te '%s'.\nDeklarimi është '%s'." + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "Parametra Gjedhesh" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "%s (C++ %s)" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "klasë" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "koncept" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "Deklarim i përsëdytur, i përcaktuar edhe te '%s'.\nEmri i deklarimit është '%s'." + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (funksion i brendshëm)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (metodë %s)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (klasë)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s ( ndryshore globale ose konstante)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (atribut %s)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Argumente" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (modul)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "metodë" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "të dhëna" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "atribut" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "modul" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "përshkrim %s i përsëdytur i %s, tjetër %s në %s" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "etiketë e përsëdytur ekuacioni %s, instancë tjetër te %s" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "math_eqref_format i pavlefshëm: %r" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "fjalëkyç" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operator" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "objekt" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "përjashtim" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "deklarim" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "funksion i brendshëm" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Ndryshore" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (te moduli %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (ndryshore e brendshme)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (te moduli %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (klasë e brendshme)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (klasë te %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (metodë %s.%s)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (metodë statike %s.%s)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (metodë statike %s)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (metodë klase %s.%s)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (metodë klase %s)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (atribut %s.%s)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "%s() (veti %s)" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Tregues Modulesh Python" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "module" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Nxjerrë nga përdorimi" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "metodë klase" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "metodë statike" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "përshkrim i përsëdytur objekti për %s, instancë tjetër te %s, përdorni :noindex: për një prej tyre" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (nxjerrë nga përdorimi)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (direktivë)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr ":%s: (mundësi direktive)" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (rol)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "direktivë" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "rol" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "përshkrim i përsëdytur %s %s, instancë tjetër te %s" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "ndryshore mjedisi; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "Përshkrim i keqformuar mundësie %r, duhet të duket si \"opt\", \"-opt args\", \"--opt args\", \"/opt args\" ose \"+opt args\"" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "Mundësi për rresht urdhrash %s" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "mundësi për rresht urdhrash" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "termi i fjalorthit duhet të paraprihet nga një rresht i zbrazët" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "termat e fjalorthit s’duhet të paraprihet nga rreshta të zbrazët" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "fjalorthi duket të jetë i keformatuar, kontrolloni shmangie kryeradhe" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "term fjalorthi" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "etiketë reference" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "ndryshore mjedisi" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "mundësi programi" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "dokument" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Tregues Modulesh" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Faqe Kërkimesh" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "etiketë %s e përsëdytur, tjetër instancë te %s" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "përshkrim %s i përsëdytur për %s, tjetër instancë te %s" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "numfig është i çaktivizuar. :numref: është shpërfillur." + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "s’është caktuar numër për %s: %s" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "lidhja s’ka titull: %s" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "numfig_format i pavlefshëm: %s (%r)" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "numfig_format i pavlefshëm: %s" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "formësim i ri" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "formësimi ndryshoi" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "drejtoria burim ka ndryshuar" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "Ky mjedis është i papërputhshëm me montuesin e përzgjedhur, ju lutemi, zgjidhni një tjetër drejtori doctree." + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "S’u arrit të skanohen dokumente te %s: %r" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "Përkatësia %r s’është e regjistruar" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "dokumenti s’është i përfshirë në ndonjë toctree" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "shihni %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "shihni edhe %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Simbole" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "toctree përmban referencë ndaj dokumenti %r që s’ka titull: s’do të prodhohet ndonjë lidhje" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "toctree përmban referencë ndaj dokumenti %r të përjashtuar" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "toctree përmban referencë ndaj dokumenti %r që s’ekziston" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "kartelë figure jo e lexueshme: %s" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "kartelë figure %s jo e lexueshme: %s" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "kartelë shkarkimi jo e lexueshme: %s" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "shteg për te modul për te dokumenti" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "kartelë fnmatch-style dhe/ose rregullsi drejtorish për t’u përjashtuar prej prodhimit" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "drejtori ku të vendosen krejt përfundimet" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "thellësi maksimum nënmodulesh për shfaqje te TEL (parazgjedhje: 4)" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "mbishkruaj kartela ekzistuese" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "ndiq lidhje simbolike. E fuqishme, kur ndërthuret me collective.recipe.omelette." + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "xhiroje programthin pa krijuar kartela" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "vendose dokumentim për çdo modul në faqe më vete" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "përfshi modulet \"_private\"" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "emër kartele për tryezën e lëndës (parazgjedhje: modules)" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "mos krijo një kartelë tryeze lënde" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "mos krijo krye për paketat modul/paketë (për shembull, kur ato i përmban tashmë docstrings)" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "vendose dokumentimin e modulit përpara dokumentimit të nënmodulit" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "interpreto shtigje modulesh sipas specifikimeve impicite PEP-0420 për emërhapësira" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "prapashtesë kartele (parazgjedhje: rst)" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "prodho me sphinx-quickstart një projekt të plotë" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "shto module_path pas sys.path, e përdorur kur është dhënë --full" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "emër projekti (parazgjedhje: emër moduli rrënjë)" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "autor(ë) projekti, e përdorur kur është dhënë --full" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "version projekti, e përdorur kur është dhënë --full" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "hedhje në qarkullim e projektit, e përdorur kur është dhënë --full, si parazgjedhje merr --doc-version" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "mundësi zgjatimi" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "%s s’është drejtori." + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "shprehje e rregullt e pavlefshme %r te %s" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "Testimi i mbulimit te burimet përfundoi, shihni te përfundimet në %(outdir)spython.txt." + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "shprehje e rregullt %r e pavlefshme te coverage_c_regexes" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "moduli %s s’u importua dot: %s" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "mungon '+' ose '-' te mundësia '%s'." + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "'%s' s’është mundësi e vlefshme." + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "'%s' s’është mundësi pyversion e vlefshme" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "lloj TestCode i pavlefshëm" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "Testimi i doctests-eve te burimet përfundoi, shihni te përfundimet në %(outdir)s/output.txt." + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "=================== kohëzgjatjet më të ngadalta të leximit ===================" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[grafik: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[grafik]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "Urdhri LaTeX %r s’mund të xhirohet (i nevojshëm për shfaqje formulash matematikore), kontrolloni rregullimin imgmath_late" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "Urdhri %s %r s’mund të xhirohet (i nevojshëm për shfaqje formulash matematikore), kontrolloni rregullimin imgmath_%s" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "Permalidhje te ky ekuacion" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(te %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "(te %s)" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[burim]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(<<original entry>> gjendet te %s, rreshti %d.)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[dokumente]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Kod moduli" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Kod burim për %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Përmbledhje: kod moduli" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Krejt modulet për të cilët ka kod të gatshëm</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "nënshkrim i pavlefshëm për auto%s (%r)" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "gabim gjatë formatimi argumentesh për %s: %s" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "atribut %s që mungon te objekt %s" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "s’dihet cili modul të importohet për vetëdokumentim të %r (provoni të vendosni te dokumenti një direktivë \"module\" ose \"currentmodule\", ose të jepni shprehimisht një emër moduli)" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "\"::\" në emër automoduli nuk ka kuptim" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "alias i :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "S’u arrit të përtypet type_comment për %r: %s" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "s’u arrit të importohej %s" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "s’u arrit të përtypej emri %s" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "s’u arrit të importohej objekti %s" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "autosummary_generate: s’u gjet kartelë: %s" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "[vetëpërmbledhje] po shkruhet te %s" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "[vetëpërmbledhje] s’u arrit të importohej %r: %s" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "kartela burim për të cilat të krijohen kartela rST" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "drejtori ku të vendosen krejt përfundimet" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "prapashtesë parazgjedhje për kartela (parazgjedhje: %(default)s)" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "drejtori gjedhesh vetjake (parazgjedhje: %(default)s)" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "Argumente Fjalëkyçi" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "Shembull" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "Shembuj" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "Shënime" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "Parametra të Tjerë" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "Referenca" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Vëmendje" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Kujdes" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Rrezik" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Gabim" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Ndihmëz" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "E rëndësishme" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Shënim" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Shihni edhe" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Ndihmëz" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Sinjalizim" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "vazhduar nga faqja e mëparshme" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "vazhdon në faqen pasuese" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "Joalfabetike" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "Numra" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "faqe" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "Tryeza e Lëndës" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Shfaq Burimin" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Përmbledhje" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Mirë se vini! Ky është" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "dokumentimi për" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "përditësuar së fundi më" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Tregues dhe tabela:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Tryezë e Plotë e Lëndës" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "paraqet krejt ndarjet dhe nënndarjet" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "kërkoni te ky dokumentim" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Tregues Global Modulesh" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "hyrje e shpejtë te krejt modulet" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "krejt funksionet, klasat, termat" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Tregues – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Tregues i plotë në një faqe" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Faqe treguesi sipas shkronjash" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "mund të jetë i stërmadh" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Lëvizje" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Kërkoni brenda %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Mbi këto dokumente" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Të drejta kopjimi" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Të drejta kopjimi</a> %(copyright)s." + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© Të drejta kopjimi %(copyright)s." + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Përditësuar së fundi më %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Kërkoni te %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Subjekti i mëparshëm" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "kapitulli i mëparshëm" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Subjekti pasues" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "kapitulli pasues" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "kërko" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Përfundime Kërkimi" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Kërkim i shpejtë" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Kjo Faqe" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Ndryshime librarie" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Ndryshime API C" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Ndryshime të tjera" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Permalidhje te ky titull" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Permalidhje për te ky përkufizim" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Fshih Përputhje Kërkimi" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Po përgatitet kërkim..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Zgjeroje anështyllën" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Tkurre anështyllën" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Lëndë" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "Poshtëshënimi [%s] s’është në referencë." + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "Poshtëshënimi [#] s’është në referencë." + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "S’u pru dot figurë e largët: %s [%d]" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "Format i panjohur figure: %s…" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "shenja burimi të padeshifrueshme, po zëvendësohen me \"?\": %r" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "gabim leximi: %s, %s" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "gabim shkrimi: %s, %s" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "Format i pavlefshëm datash. Quote the string by single quote Nëse doni të jepet drejtpërsëdrejti, përdorni për vargun thonjëza njëshe: %s" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "s’u gjet rol parazgjedhje %s" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "numfig_format s’është i përcaktuar për %s" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "Çfarëdo ID-sh jo të përshoqëruara për nyjën %s" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Permalidhje te kjo tabelë" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Permalidhje te ky kod" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Permalidhje te kjo figurë" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "Permalidhje te kjo toctree" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "S’u mor dot madhësi figure. Mundësia :scale: u shpërfill." + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "toplevel_sectioning %r i panjohur për klasën %r" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr ":maxdepth: shumë i madh, u shpërfill." + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "titulli i dokumentit s’është nyje njëshe Teksti" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "u has nyje titulli jo në ndarje, temë, tabelë, paralajmërim ose anështyllë" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Poshtëshënime" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "njësia e përmasave %s është e pavlefshme. U shpërfill." + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[figurë: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[figurë]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "titull jo brenda një figure." + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "lloj nyjeje i pasendërtuar: %r" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "lloj i panjohur nyjeje: %r" diff --git a/sphinx/sphinx/locale/sr/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/sr/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..d1b310c --- /dev/null +++ b/sphinx/sphinx/locale/sr/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "sr", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0458\u0430", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "", "Table of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "\u043d\u0430\u0440\u0435\u0434\u043d\u0430 \u0433\u043b\u0430\u0432\u0430", "previous chapter": "\u043f\u0440\u0435\u0442\u0445\u043e\u0434\u043d\u0430 \u0433\u043b\u0430\u0432\u0430", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/sr/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/sr/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..0aa8cef --- /dev/null +++ b/sphinx/sphinx/locale/sr/LC_MESSAGES/sphinx.po @@ -0,0 +1,3466 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Risto Pejasinovic <risto.pejasinovic@gmail.com>, 2019 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Serbian (http://www.transifex.com/sphinx-doc/sphinx-1/language/sr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: sr\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "Конфигурациони директоријум не садржи conf.py датотеку (%s)." + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "Нема изворног директоријума (%s)" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "Изворни и одредишни директоријум не могу бити једнаки" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "Покрећем Sphinx v%s" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "Овај пројекат захтева верзију Sphinx v%s или већу, не може се изградити инсталираном верзијом." + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "Готово" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "Неуспешно: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "Успешно" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Табела %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Навигација" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "претходна глава" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "наредна глава" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/sr@latin/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/sr@latin/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..58a89c7 --- /dev/null +++ b/sphinx/sphinx/locale/sr@latin/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "sr", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "", "Table of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/sr@latin/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/sr@latin/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..4b92f65 --- /dev/null +++ b/sphinx/sphinx/locale/sr@latin/LC_MESSAGES/sphinx.po @@ -0,0 +1,3465 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Serbian (Latin) (http://www.transifex.com/sphinx-doc/sphinx-1/language/sr@latin/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: sr@latin\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/sr_RS/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/sr_RS/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..ae9570f --- /dev/null +++ b/sphinx/sphinx/locale/sr_RS/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "sr_Cyrl_RS", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "", "Table of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/sr_RS/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/sr_RS/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..1def132 --- /dev/null +++ b/sphinx/sphinx/locale/sr_RS/LC_MESSAGES/sphinx.po @@ -0,0 +1,3465 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Serbian (Serbia) (http://www.transifex.com/sphinx-doc/sphinx-1/language/sr_RS/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: sr_RS\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/sv/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/sv/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..aed941f --- /dev/null +++ b/sphinx/sphinx/locale/sv/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "sv", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "Om dessa dokument", "Automatically generated list of changes in version %(version)s": "Automatiskt genererad lista \u00f6ver f\u00f6r\u00e4ndringar i version %(version)s", "C API changes": "F\u00f6r\u00e4ndringar i C-API", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "D\u00f6lj sidolist", "Complete Table of Contents": "Komplett Inneh\u00e5llsf\u00f6rteckning", "Contents": "Inneh\u00e5ll", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Skapad med <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Expandera sidolist", "Full index on one page": "Hela inneh\u00e5llsf\u00f6rteckningen p\u00e5 en sida", "General Index": "Huvudindex", "Global Module Index": "Global Modulindex", "Go": "G\u00e5", "Hide Search Matches": "D\u00f6lj S\u00f6kresultat", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Inneh\u00e5llsf\u00f6rteckning per inledande bokstav", "Indices and tables:": "Index och tabeller", "Last updated on %(last_updated)s.": "Senast uppdaterad %(last_updated)s.", "Library changes": "F\u00f6r\u00e4ndringar i bibliotek", "Navigation": "Navigation", "Next topic": "N\u00e4sta titel", "Other changes": "\u00d6vriga f\u00f6r\u00e4ndringar", "Overview": "\u00d6versikt", "Permalink to this definition": "Permalink till denna definition", "Permalink to this headline": "Permalink till denna rubrik", "Please activate JavaScript to enable the search\n functionality.": "Var god aktivera JavaScript f\u00f6r s\u00f6kfunktionalitet.", "Preparing search...": "", "Previous topic": "F\u00f6reg\u00e5ende titel", "Quick search": "Snabbs\u00f6k", "Search": "S\u00f6k", "Search Page": "S\u00f6ksida", "Search Results": "S\u00f6kresultat", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "S\u00f6k bland %(docstitle)s", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Visa k\u00e4llfil", "Table of Contents": "", "This Page": "Denna Sida", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "alla funktioner, klasser, villkor", "can be huge": "kan bli stort", "last updated": "", "lists all sections and subsections": "lista \u00f6ver alla paragrafer och underparagrafer", "next chapter": "N\u00e4sta kapitel", "previous chapter": "F\u00f6reg\u00e5ende kapitel", "quick access to all modules": "genv\u00e4g till alla moduler", "search": "s\u00f6k", "search this documentation": "s\u00f6k i det h\u00e4r dokumentet", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/sv/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/sv/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..32a7612 --- /dev/null +++ b/sphinx/sphinx/locale/sv/LC_MESSAGES/sphinx.po @@ -0,0 +1,3465 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Swedish (http://www.transifex.com/sphinx-doc/sphinx-1/language/sv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Inbyggda" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Modulnivå" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "(i " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Huvudindex" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "index" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "nästa" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "föregående" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Index" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Utgåva" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Sektionsförfattare" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Modulförfattare" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Källkodsförfattare" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Upphovsman:" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parametrar" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Returnerar" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Returtyp" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C-funktion)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C-medlem)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C-makro)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C-typ)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C-variabel)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "funktion" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "medlem" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "makro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "typ" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "variabel" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Nyheter i version %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Förändrat i version %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Ersatt sedan version %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Kastar" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "klass" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (inbyggd funktion)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s metod)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (klass)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (global variabel eller konstant)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s attribut)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Argument" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (modul)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "metod" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "data" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "attribut" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "modul" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "nyckelord" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "operator" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "objekt" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "undantag" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "uttryck" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "inbyggda funktioner" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Variabler" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Väcker" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (i modul %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (inbyggd variabel)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (i modul %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (inbyggd klass)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (klass i %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s metod)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s statisk metod)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s statisk metod)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (%s.%s klassmetod)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (%s klassmetod)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s attribut)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Python Modulindex" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "moduler" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Ersatt" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "klassmetod" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "statisk metod" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (direktiv)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (roll)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "direktiv" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "roll" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "miljövariabel; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "ordlista" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "grammatisk token" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "referensetikett" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "miljövariabel" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "programväxel" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Modulindex" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Söksida" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "se %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "se även %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[source]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Att göra" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "ursprungsvärde" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[docs]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Modulkällkod" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>Källkod för %s</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Översikt: modulkällkod" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Alla moduler där källkod finns</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "alias för :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Uppmärksamma" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Varning" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Risk" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Fel" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Råd" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Viktigt" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Observera" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Se även" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Tips" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Varning" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "fortsättning från föregående sida" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Sök" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Gå" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Visa källfil" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Översikt" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Index och tabeller" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Komplett Innehållsförteckning" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "lista över alla paragrafer och underparagrafer" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "sök i det här dokumentet" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Global Modulindex" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "genväg till alla moduler" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "alla funktioner, klasser, villkor" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Index – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Hela innehållsförteckningen på en sida" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Innehållsförteckning per inledande bokstav" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "kan bli stort" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Navigation" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Sök bland %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Om dessa dokument" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Copyright" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Senast uppdaterad %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Skapad med <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Sök %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Föregående titel" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "Föregående kapitel" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Nästa titel" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "Nästa kapitel" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Var god aktivera JavaScript för sökfunktionalitet." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "sök" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Sökresultat" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Snabbsök" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Denna Sida" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Automatiskt genererad lista över förändringar i version %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Förändringar i bibliotek" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "Förändringar i C-API" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Övriga förändringar" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Permalink till denna rubrik" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Permalink till denna definition" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Dölj Sökresultat" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Expandera sidolist" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Dölj sidolist" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Innehåll" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Fotnoter" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[image]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/ta/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/ta/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..b5a1a80 --- /dev/null +++ b/sphinx/sphinx/locale/ta/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "ta", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "", "Table of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/ta/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/ta/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..1cab45c --- /dev/null +++ b/sphinx/sphinx/locale/ta/LC_MESSAGES/sphinx.po @@ -0,0 +1,3466 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Julien Malard <julien.malard@mail.mcgill.ca>, 2019 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Tamil (http://www.transifex.com/sphinx-doc/sphinx-1/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.8.0\n" +"Language: ta\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "%d கண்டு ப்பிடித்த விட்டது" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "அடுத்த" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/te/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/te/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..6de6a68 --- /dev/null +++ b/sphinx/sphinx/locale/te/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "te", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "", "Table of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/te/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/te/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..e96c885 --- /dev/null +++ b/sphinx/sphinx/locale/te/LC_MESSAGES/sphinx.po @@ -0,0 +1,3465 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Telugu (http://www.transifex.com/sphinx-doc/sphinx-1/language/te/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: te\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/tr/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/tr/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..984176f --- /dev/null +++ b/sphinx/sphinx/locale/tr/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "tr", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Telif hakk\u0131</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Telif hakk\u0131 %(copyright)s.", ", in ": ", \u015funun i\u00e7inde:", "About these documents": "Bu belgeler hakk\u0131nda", "Automatically generated list of changes in version %(version)s": "%(version)s s\u00fcr\u00fcm\u00fcndeki de\u011fi\u015fikliklerin otomatik olarak \u00fcretilmi\u015f listesi", "C API changes": "C API'sindeki de\u011fi\u015fiklikler", "Changes in Version %(version)s — %(docstitle)s": "S\u00fcr\u00fcm %(version)s — %(docstitle)s i\u00e7indeki De\u011fi\u015fiklikler", "Collapse sidebar": "Yan \u00e7ubu\u011fu daralt", "Complete Table of Contents": "Tam \u0130\u00e7indekiler", "Contents": "\u0130\u00e7indekiler", "Copyright": "Telif hakk\u0131", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s kullan\u0131larak olu\u015fturuldu.", "Expand sidebar": "Yan \u00e7ubu\u011fu geni\u015flet", "Full index on one page": "Tek sayfada tam dizin", "General Index": "Genel Dizin", "Global Module Index": "Genel Mod\u00fcl Dizini", "Go": "Git", "Hide Search Matches": "Arama E\u015fle\u015fmelerini Gizle", "Index": "Dizin", "Index – %(key)s": "Dizin – %(key)s", "Index pages by letter": "Harfe g\u00f6re dizin sayfalar\u0131", "Indices and tables:": "Dizinler ve tablolar:", "Last updated on %(last_updated)s.": "Son g\u00fcncelleme: %(last_updated)s.", "Library changes": "K\u00fct\u00fcphane de\u011fi\u015fiklikleri", "Navigation": "Gezinti", "Next topic": "Sonraki konu", "Other changes": "Di\u011fer de\u011fi\u015fiklikler", "Overview": "Genel Bak\u0131\u015f", "Permalink to this definition": "Bu tan\u0131m i\u00e7in kal\u0131c\u0131 ba\u011flant\u0131", "Permalink to this headline": "Bu ba\u015fl\u0131k i\u00e7in kal\u0131c\u0131 ba\u011flant\u0131", "Please activate JavaScript to enable the search\n functionality.": "Arama i\u015flevini kullanabilmek i\u00e7in l\u00fctfen JavaScript'i\n etkinle\u015ftirin.", "Preparing search...": "Aramaya haz\u0131rlan\u0131yor...", "Previous topic": "\u00d6nceki konu", "Quick search": "H\u0131zl\u0131 Arama", "Search": "Ara", "Search Page": "Arama Sayfas\u0131", "Search Results": "Arama Sonu\u00e7lar\u0131", "Search finished, found %s page(s) matching the search query.": "Arama tamamland\u0131. Sorguyu i\u00e7eren %s sayfa bulundu.", "Search within %(docstitle)s": "%(docstitle)s i\u00e7inde ara", "Searching": "Aran\u0131yor", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Kayna\u011f\u0131 G\u00f6ster", "Table of Contents": "\u0130\u00e7indekiler", "This Page": "Bu Sayfa", "Welcome! This is": "Ho\u015f Geldiniz! Kar\u015f\u0131n\u0131zda", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Arama sonucunda herhangi bir belge bulunamad\u0131. B\u00fct\u00fcn kelimeleri do\u011fru yazd\u0131\u011f\u0131n\u0131zdan ve gerekli b\u00fct\u00fcn kategorileri se\u00e7ti\u011finizden emin olun.", "all functions, classes, terms": "t\u00fcm i\u015flevler, s\u0131n\u0131flar, terimler", "can be huge": "\u00e7ok b\u00fcy\u00fck olabilir", "last updated": "son g\u00fcncelleme", "lists all sections and subsections": "t\u00fcm b\u00f6l\u00fcmleri ve alt b\u00f6l\u00fcmleri listeler", "next chapter": "sonraki b\u00f6l\u00fcm", "previous chapter": "\u00f6nceki b\u00f6l\u00fcm", "quick access to all modules": "t\u00fcm mod\u00fcllere h\u0131zl\u0131 eri\u015fim", "search": "ara", "search this documentation": "bu belgelendirmeyi ara", "the documentation for": "belgelendirme konusu: "}, "plural_expr": "(n > 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/tr/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/tr/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..2acf255 --- /dev/null +++ b/sphinx/sphinx/locale/tr/LC_MESSAGES/sphinx.po @@ -0,0 +1,3468 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# BouRock, 2020 +# Fırat Özgül <ozgulfirat@gmail.com>, 2013-2016 +# FIRST AUTHOR <EMAIL@ADDRESS>, 2011 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-21 09:56+0000\n" +"Last-Translator: BouRock\n" +"Language-Team: Turkish (http://www.transifex.com/sphinx-doc/sphinx-1/language/tr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: tr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "config dizini bir conf.py dosyası içermiyor (%s)" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "Kaynak dizin bulunamıyor (%s)" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "Kaynak dizin ve hedef dizin aynı olamaz" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "Sphinx s%s çalışıyor" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "Güvenlik nedeni ile macOS ve python 3.8 ve üzerinde paralel kip etkisizleştirildi. Daha fazla bilgi için lütfen https://github.com/sphinx-doc/sphinx/issues/6803 adresindekileri okuyun" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "Bu proje en az Sphinx s%s gerektirir ve bu nedenle bu sürüm ile oluşturulamaz." + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "çıktı dizini yapılıyor" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "%s uzantısı ayarlanırken:" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "Şu anda conf.py dosyasında tanımlanan 'kurulum' çağrılabilir bir Python değil. Lütfen tanımını çağrılabilir bir işlev yapmak için değiştirin. Bunun, Sphinx uzantısı gibi davranması için conf.py dosyasına ihtiyacı vardır." + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "çeviriler yükleniyor [%s]... " + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "bitti" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "yerleşik iletiler için kullanılamaz" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "salamura ortamı yükleniyor" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "başarısız olan: %s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "Seçilen oluşturucu yok, varsayılan kullanılıyor: html" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "başarılı oldu" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "sorunlarla tamamlandı" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "yapım %s, %s uyarı (hata olarak kabul edilen uyarılarla)." + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "yapım %s, %s uyarı (hatalar olarak kabul edilen uyarılarla)." + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "yapım %s, %s uyarı." + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "yapım %s, %s uyarı." + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "yapım %s." + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "düğüm sınıfı %r zaten kayıtlı, ziyaretçileri geçersiz kılınacaktır" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "yönerge %r zaten kayıtlı, geçersiz kılınacaktır" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "rol %r zaten kayıtlı, geçersiz kılınacaktır" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "%s uzantısı paralel okuma için güvenli olup olmadığını bildirmez, olmadığını varsayarak - lütfen uzantıyı hazırlayandan gözden geçirmesini ve açık hale getirmesini isteyin" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "%s uzantısı paralel okuma için güvenli değil" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "%s uzantısı paralel yazma için güvenli olup olmadığını bildirmez, olmadığını varsayarak - lütfen uzantıyı hazırlayandan gözden geçirmesini ve açık hale getirmesini isteyin" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "%s uzantısı paralel yazma için güvenli değil" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "%s seri nosu yapılıyor" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "sözlük yapılandırma ayarı %r geçersiz kılınamaz, yoksayılıyor (tek tek öğeleri ayarlamak için %r kullanın)" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "geçersiz sayı %r; yapılandırma değeri %r için; yoksayılıyor" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "desteklenmeyen tür ile yapılandırma ayarı %r geçersiz kılınamaz, yoksayılıyor" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "geçersiz kılmada bilinmeyen yapılandırma değeri %r, yoksayılıyor" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "Böyle bir yapılandırma değeri yok: %s" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "Yapılandırma değeri %r zaten mevcut" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "Yapılandırma dosyanızda bir sözdizimi hatası var: %s\n" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "Yapılandırma dosyası (veya içe aktarılan modüllerden biri) sys.exit() olarak adlandırılır" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "Yapılandırma dosyanızda programlanabilir bir hata var:\n\n%s" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "'source_suffix' yapılandırma değeri bir dizgi, dizgiler listesi ya da sözlük bekler. Ama '%r' verilir." + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "Bölüm %s" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "Şekil %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "Tablo %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "Listeleme %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "`{name}` yapılandırma değeri, {candidates} geğerlrinden biri olmak zorundadır, ancak `{current}` değeridir." + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "`{name}' yapılandırma değeri `{current.__name__}' türüne sahip; beklenen {permitted}." + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "`{name}' yapılandırma değeri `{current.__name__}' türüne sahip, vassayılanları `{default.__name__}'." + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "Yapılandırma değeri %r, ASCII olmayan karakterlere sahip bir dizgiye ayarlı; bu, Evrensel kod hatalarını meydana gertirmesine neden olabilir. Lütfen Evrensel kod dizgilerini kullanın, örn. %r." + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "primary_domain %r bulunamadı, yoksayıldı." + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "s2.0 sürümünden bu yana, Sphinxi varsayılanı master_doc olarak \"index\" kullanır. Lütfen conf.py dosyanıza \"master_doc = 'contents'\" parametresini ekleyin." + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "Olay %r zaten mevcut" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "Bilinmeyen olay adı: %s" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "%s uzantısı needs_extensions ayarları tarafından gereklidir, ancak yüklü değildir." + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "Bu projenin %s uzantısına ve en az %s sürümüne ihtiyacı vardır ve bu nedenle yüklenen sürümle oluşturulamaz (%s)." + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "Pygments lexer adı %r bilinmiyor" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "\"%s\" olarak literal_block lex yapılamadı. Vurgulama atlandı." + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "belge okunabilir değil. Yoksayıldı." + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "Oluşturucu sınıfı %s \"ad\" özniteliğine sahip değil" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "Oluşturucu %r zaten mevcut (%s modülünde)" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "Oluşturucu adı %s kayıtlı veya giriş noktası aracılığıyla kullanılabilir değil" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "Oluşturucu adı %s kayıtlı değil" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "etki alanı %s zaten kayıtlı" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "etki alanı %s henüz kayıtlı değil" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "%r yönergesi zaten %s etki alanına kayıtlı" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "%r rolü zaten %s etki alanına kayıtlı" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "%r dizini zaten %s etki alanına kayıtlı" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "%r object_type zaten kayıtlı" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "%r crossref_type zaten kayıtlı" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "source_suffix %r zaten kayıtlı" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "%r için source_parser zaten kayıtlı" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "%s için kaynak ayrıştırıcı kayıtlı değil" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "%r için çevirmen zaten mevcut" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "add_node() için kwargs bir (visit, depart) tanımlama grubu işlevi olmak zorundadır: %r=%r" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "enumerable_node %r zaten kayıtlı" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "matematik işleyici %s zaten kayıtlı" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "%r uzantısı zaten %s sürümünden bu yana Sphinx ile birleştirildi; bu uzantı yoksayıldı." + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "Özgün özel durumu:\n" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr " %s uzantısı içe aktarılamadı" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "%r uzantısı setup() işlevine sahip değil; bu gerçekten bir Sphinx uzantısı modülü mü?" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "Bu proje tarafından kullanılan %s uzantısının en az Sphinx s%s sürümüne ihtiyacı var; bu nedenle bu sürümle oluşturulamaz." + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "%r uzantısı, setup() işlevinden desteklenmeyen bir nesne döndürdü; Hiçbir şey veya üstveri sözlüğü döndürmeli" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Geliştirme Önerileri; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "%r temasının \"theme\" ayarı yok" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "%r temasının \"inherit\" ayarı yok" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "%r adında bulunan tema yok, %r tarafından devralındı" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "%s.%s ayarı, aranan tema yapılandırmalarının hiçbirinde meydana gelmiyor" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "desteklenmeyen tema seçeneği %r verildi" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "tema yolundaki %r dosyası geçerli bir zip dosyası değil ya da hiç tema içermiyor" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "sphinx_rtd_theme, 1.4.0 sürümünden bu yana artık zorunlu bir bağımlılık değil. Lütfen el ile yükleyin. (pip install sphinx_rtd_theme)" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "%r adında bulunan tema yok (eksik theme.conf?)" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "%s oluşturucu için uygun bir resim bulunamadı: %s (%s)" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "%s oluşturucu için uygun bir resim bulunamadı: %s" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "[mo] oluşturuluyor: " + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "çıktı yazılıyor..." + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "%d po dosyasının tümü" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "belirtilen %d po dosyası için hedefler" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "güncel olmayan %d po dosyası için hedefler" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "tüm kaynak dosyaları" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "komut satırında verilen %r dosyası kaynak dizinin altında değil, yoksayılıyor" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "komut satırında verilen %r dosyası mevcut değil, yoksayılıyor" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "komut satırında verilen %d kaynak dosyası" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "güncel olmayan %d kaynak dosyası için hedefler" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "[%s] oluşturuluyor:" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "şimdi güncel olmayan dosyalar aranıyor..." + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "%d tane bulundu" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "hiç bulunamadı" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "ortam temizleniyor" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "tutarlılık denetleniyor" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "hiçbir hedef güncel değil." + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "güncellenen ortam:" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "%s eklendi, %s değiştirildi, %s kaldırıldı" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "kaynaklar okunuyor..." + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "çalışanlar için bekleniyor..." + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "yazmak için belge adları: %s" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "belgeler hazırlanıyor" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "kopyalanmış ToC girişi bulundu: %s" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "resimler kopyalanıyor..." + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "resim dosyası %r okunamıyor: bunun yerine kopyalanıyor" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "resim dosyası %r kopyalanamıyor: %s" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "resim dosyası %r yazılamıyor: %s" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "Yastık bulunamadı - resim dosyaları kopyalanıyor" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "%s dosyası yazılıyor..." + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "%s için bilinmeyen mime türü, yoksayılıyor" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "Genel bakış dosyası %(outdir)s içinde." + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "%s sürümünde değişiklik yok." + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "özet dosyası yazılıyor..." + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Yerleşikler" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Modül seviyesi" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "kaynak dosyalar kopyalanıyor..." + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "değişiklikler günlüğü oluşturma için %r okunamadı" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "Taklit oluşturucu hiçbir dosya oluşturmaz." + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "ePub dosyası %(outdir)s içinde." + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "yapılandırma değeri \"epub_language\" (veya \"language\"), EPUB3 için boş olmamalıdır" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "yapılandırma değeri \"epub_uid\", EPUB3 için XML NAME olmalıdır" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "yapılandırma değeri \"epub_title\" (veya \"html_title\"), EPUB3 için boş olmamalıdır" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "yapılandırma değeri \"epub_author\", EPUB3 için boş olmamalıdır" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "yapılandırma değeri \"epub_contributor\", EPUB3 için boş olmamalıdır" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "yapılandırma değeri \"epub_description\", EPUB3 için boş olmamalıdır" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "yapılandırma değeri \"epub_publisher\", EPUB3 için boş olmamalıdır" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "yapılandırma değeri \"epub_copyright\" (veya \"copyright\"), EPUB3 için boş olmamalıdır" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "yapılandırma değeri \"epub_identifier\", EPUB3 için boş olmamalıdır" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "yapılandırma değeri \"version\", EPUB3 için boş olmamalıdır" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "geçersiz css_file: %r, yoksayıldı" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "İleti katalogları %(outdir)s içinde." + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "%d şablon dosyası için hedefler" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "şablonlar okunuyor..." + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "ileti katalogları yazılıyor..." + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "Yukarıdaki çıktıda veya %(outdir)s/output.txt içinde herhangi bir hata arayın" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "Bağlayıcı '%s' bulunamadı" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "bozuk bağlantı: %s (%s)" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "Rehber sayfaları %(outdir)s içinde." + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "hiçbir \"man_pages\" yapılandırma değeri bulunamadı; hiçbir rehber sayfası yazılmayacaktır" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "yazılıyor" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "\"man_pages\" yapılandırma değeri bilinmeyen %s belgesine başvurur" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "HTML sayfası %(outdir)s içinde." + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "tek bir belgede toplanıyor" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "ilave dosyalar yazılıyor" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "Texinfo dosyaları %(outdir)s içinde." + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "\nMakeinfo aracılığıyla bunları çalıştırmak için bu dizinde 'make' komutunu çalıştırın\n(bunu otomatik olarak yapmak için burada 'make info' komutunu kullanın)." + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "hiçbir \"texinfo_documents\" yapılandırma değeri bulunamadı; hiçbir belge yazılmayacaktır" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "\"texinfo_documents\" yapılandırma değeri bilinmeyen %s belgesine başvurur" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "%s işleniyor" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "başvurular çözümleniyor..." + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (şurada: " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "Texinfo destek dosyaları kopyalanıyor..." + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "Makefile dosyası yazılırken hata oldu: %s" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "Metin dosyaları %(outdir)s içinde." + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "%s dosyası yazılırken hata oldu: %s" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "XML dosyaları %(outdir)s içinde." + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "Pseudo-XML dosyaları %(outdir)s içinde." + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "oluşturma bilgisi dosyası bozuldu: %r" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "HTML sayfaları %(outdir)s içinde." + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "oluşturma bilgisi dosyasını okuma başarısız: %r" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d %b %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "html_use_opensearch yapılandırma değeri artık bir dizgi olmak zorundadır" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Genel Dizin" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "dizin" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "sonraki" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "önceki" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "dizinler oluşturuluyor" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "ilave sayfalar yazılıyor" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "indirilebilir dosyalar kopyalanıyor..." + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "indirilebilir dosya %r kopyalanamıyor: %s" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "sabit dosyalar kopyalanıyor..." + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "sabit dosya %r kopyalanamıyor" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "fazladan dosyalar kopyalanıyor" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "fazladan dosya %r kopyalanamıyor..." + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "oluşturma bilgisi dosyasını yazma başarısız: %r" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "arama dizini yüklenemedi, ancak tüm belgeler oluşturulmayacaktır: dizin tamamlanmamış olacaktır." + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "sayfa %s html_sidebars içinde iki desenle eşleşiyor: %r ve %r" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "%s sayfasını işlerken bir Evrensel kod hatası meydana geldi. Lütfen ASCII olmayan içerik içeren tüm yapılandırma değerlerinin Evrensel kod dizgiler olduğundan emin olun." + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "%s sayfasını işlerken bir hata oldu.\nSebep: %r" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "nesne envanteri dökümleniyor" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "%s içinde arama dizini dökümleniyor" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "geçersiz js_file: %r, yoksayıldı" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "Birçok math_renderers kayıtlı. Ama hiç math_renderer seçilmedi." + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "Bilinmeyen math_renderer %r verildi." + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "html_extra_path girişi %r mevcut değil" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "html_extra_path girişi %r, çıktı dizini içine yerleştirildi" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "html_static_path girişi %r mevcut değil" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "html_static_path girişi %r, çıktı dizini içine yerleştirildi" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "logo dosyası %r mevcut değil" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "favicon dosyası %r mevcut değil" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s belgelendirmesi" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "LaTeX dosyaları %(outdir)s içinde." + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "\n(pdf)latex aracılığıyla bunları çalıştırmak için bu dizinde 'make' komutunu çalıştırın\n(bunu otomatik olarak yapmak için burada 'make latexpdf' komutunu kullanın)." + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "hiçbir \"latex_documents\" yapılandırma değeri bulunamadı; hiçbir belge yazılmayacaktır" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "\"latex_documents\" yapılandırma değeri bilinmeyen %s belgesine başvurur" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Dizin" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Yayım" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "%r dili için bilinen hiç Babel seçeneği yok" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "TeX destek dosyaları kopyalanıyor" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "TeX destek dosyaları kopyalanıyor..." + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "ilave dosyalar kopyalanıyor" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "Bilinmeyen yapılandırma anahtarı: latex_elements[%r], yoksayıldı." + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "%r, \"theme\" ayarına sahip değil" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "%r, \"%s\" ayarına sahip değil" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "Oluşturulurken meydana gelen özel durum, hata ayıklayıcı başlatılıyor:" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "Yarıda kesildi!" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "reST biçimlendirme hatası:" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "Kodlama hatası:" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "Sorunu geliştiricilere bildirmek istiyorsanız, tam geri izleme %s içine kaydedildi." + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "Tekrarlama hatası:" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "Bu, çok büyük veya çok fazla iç içe girmiş kaynak dosyaları ile olabilir. Varsayılan Python tekrarlama sınırını conf.py dosyasında şu örnekle 1000'e kadar dikkatlice artırabilirsiniz:" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "Özel durum meydana geldi:" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "Bir dahaki sefere daha iyi bir hata iletisi sağlanabilmesi için lütfen bunu bir kullanıcı hatasıysa da bildirin." + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "Bir hata raporu <https://github.com/sphinx-doc/sphinx/issues> adresindeki izleyicide dosyalanabilir. Teşekkürler!" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "iş numarası pozitif bir sayı olmalıdır" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "Daha fazla bilgi için <http://sphinx-doc.org/> sitesini ziyaret edin." + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "\nKaynak dosyalardan belgelendirme oluşturun.\n\nsphinx-build, SOURCEDIR içindeki dosyalardan belgelendirme oluşturur ve OUTPUTDIR\niçine yerleştirir. Yapılandırma ayarları için SOURCEDIR içinde 'conf.py' dosyasını arar. 'sphinx-quickstart'' aracı, şablon dosyaları oluşturmak için kullanılabilir,\n'conf.py' dosyası dahil olmak üzere\n\nsphinx-build, farklı biçimlerde belgelendirme oluşturabilir. Komut satırında oluşturucu adı belirtilerek bir biçim seçilir; HTML varsayılandır.\nOluşturucular, belgelendirme işlemeyle ilgili diğer görevleri de\ngerçekleştirebilir.\n\nVarsayılan olarak, güncel olmayan her şey oluşturulur. Sadece seçilen\ndosyalar için çıktı, tek tek dosya adları belirtilerek oluşturulabilir.\n" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "belgelendirme kaynak dosyaları için yol" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "çıktı dizini için yol" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "yeniden oluşturmak için belirli dosyaların listesi. Belirtildiyse yoksayıldı" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "genel seçenekler" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "kullanmak için oluşturucu (varsayılan: html)" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "tüm dosyaları yaz (varsayılan: sadece yeni ve değiştirilmiş dosyaları yaz)" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "kaydedilmiş bir ortam kullanma, her zaman tüm dosyaları oku" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "önbelleklenen ortam ve doctree dosyaları için yol (varsayılan: OUTPUTDIR/.doctrees)" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "mümkünse N işlem ile paralel olarak oluştur (özel değer \"auto\" N miktarını cpu-count değerine ayarlayacak)" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "yapılandırma dosyasının (conf.py) bulunduğu yol (varsayılan: SOURCEDIR ile aynı)" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "hiç yapılandırma dosyası kullanmadan, sadece -D seçenekleri" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "yapılandırma dosyasındaki bir ayarı geçersiz kıl" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "HTML şablonlarına bir değer geçir" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "etiketi tanımla: \"sadece\" TAG'li blokları dahil et" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "nit-picky kipi, tüm eksik kaynaklar hakkında uyar" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "konsol çıktısı seçenekleri" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "ayrıntı seviyesini artır (tekrarlanabilir)" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "stdout üzerinde çıktı yok, stderr üzerinde sadece uyarılar" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "hiç çıktı yok, hatta uyarılarda bile" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "renkli çıktı yayımı yap (varsayılan: otomatik algıla)" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "renkli çıktı yayımı yapma (varsayılan: otomatik algıla)" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "verilen dosyaya uyarıları (ve hataları) yaz" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "uyarıları hatalara dönüştür" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "-W ile, uyarıları alırken devam et" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "özel durumda tam geri izleme göster" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "özel durumda Pdb çalıştır" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "%r dosyaları bulunamıyor" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "-a seçeneği ve dosya adları birleştirilemiyor" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "uyarı dosyası %r açılamıyor: %s" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "-D seçeneği bağımsız değişkeni ad=değer biçiminde olmak zorundadır" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "-A seçeneği bağımsız değişkeni ad=değer biçiminde olmak zorundadır" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "modüllerden otomatik olarak docstrings ekle" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "doctest bloklarında kod parçacıklarını otomatik olarak dene" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "farklı projelerin Sphinx begelendirmeleri arasında bağlantıla" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "oluşturmada gösterilebilen veya gizlenebilen \"yapılacaklar\" girişlerini yaz" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "belgelendirme kapsamı için denetlemeler" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "PNG veya SVG resimleri olarak işleneni, matematiği dahil et" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "MathJax ile tarayıcıda işleneni, matematiği dahil et" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "yapılandırma değerlerine dayalı içeriğin koşullu olarak eklenmesi" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "belgelenmiş Python nesnelerinin kaynak koduna bağlantıları dahil et" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "belgeyi GitHub sayfalarında yayımlamak için .nojekyll dosyası oluştur" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "Lütfen geçerli bir yol adı girin." + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "Lütfen biraz metin girin." + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "Lütfen %s seçeneklerinden birini girin." + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "Lütfen ya 'y' ya da 'n' girin." + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "Lütfen bir dosya soneki girin, örn. '.rst' veya '.txt'." + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "* Not: ASCII olmayan karakterler girildi ve terminal kodlama bilinmiyor -- UTF-8 veya Latin-1 varsayılıyor." + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "Sphinx %s hızlı başlangıç yardımcı uygulamasına hoş geldiniz." + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "Lütfen aşağıdaki ayarlar için değerleri girin (parantez içinde verilirse\nvarsayılan değeri kabul etmek için yalnızca Enter tuşuna basın)." + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "Seçilen kök dizin yolu: %s" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "Belgelendirme için kök dizin yolunu girin." + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "Belgelendirme için kök dizin yolu" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "Hata: seçilen kök dizin yolunda varolan bir conf.py bulundu." + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "sfenks-quickstart varolan Sphinx projelerinin üzerine yazmayacak." + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "Lütfen yeni bir kök dizin yolu girin (ya da çıkmak için yalnızca Enter'a basın)" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "Sphinx çıktısının oluşturma dizinini yerleştirmek için iki seçeneğiniz var.\nYa, kök dizin yolu içinde bir \"_build\" dizini kullanın, ya da kök dizin yolu\niçinde \"source\" ve \"build\" dizinlerini ayırın." + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "Source ve build dizinlerini ayır (y/n)" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "Kök dizinin içinde, iki dizin daha oluşturulacaktır; özel HTML şablonları için \"_templates\"\nve özel stil sayfaları ve diğer sabit dosyalar için \"_static\".\nAlt çizgi yerine başka bir önek (\".\" gibi) girebilirsiniz." + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "Templates ve static dizinleri için ad öneki" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "Proje adı, oluşturulan belgelendirmedeki çeşitli yerlerde oluşacak." + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "Proje adı" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "Hazırlayan ad(ları)ı" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "Sphinx, yazılım için bir \"sürüm\" ve bir \"yayım\" kavramına sahiptir.\nHer sürümün birden çok yayımı olabilir. Örneğin, Python için\nsürüm 2.5 veya 3.0 gibi bir şeydir, yayım ise 2.5.1 veya 3.0a1 gibi\nbir şeydir. Eğer bu çift yapıya ihtiyacınız yoksa, her ikisini de aynı\ndeğere ayarlayın." + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "Proje sürümü" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "Proje yayımı" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "Eğer belgeler İngilizce dışında bir dilde yazıldıysa, bunun dil koduna\ngöre burada bir dil seçebilirsiniz. Sphinx daha sonra, ürettiği metni o\ndile çevirecektir.\n\nDesteklenen kodların listesi için\nhttps://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language adresine bakın." + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "Proje dili" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "Kaynak dosyalar için dosya adı soneki. Genellikle, bu ya \".txt\" ya da\n\".rst\"dir. Sadece bu soneki içeren dosyalar belgeler olarak kabul edilir." + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "Kaynak dosya soneki" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "Bir belge, \"içindekiler ağacı\"nın üst düğümü olarak kabul edilmesi, yani\nbelgelerin hiyerarşik yapısının kökü olması açısından özeldir.\nNormalde bu \"dizin\"dir, ancak \"dizin\" belgeniz özel bir şablonsa,\nbunu başka bir dosya adına da ayarlayabilirsiniz." + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "Asıl belgenizin adı (sonek olmadan)" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "Hata: %s asıl dosyası zaten seçilen kök dizin yolunda bulundu." + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "sfenks-quickstart varolan dosyanın üzerine yazmayacak." + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "Lütfen yeni bir dosya adı girin ya da varolan dosyayı yeniden adlandırın ve Enter tuşuna basın" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "Aşağıdaki Sphinx uzantılarından hangisinin etkinleştirilmesi gerektiğini gösterir:" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "Not: imgmath ve mathjax aynı anda etkinleştirilemez. imgmath seçimi kaldırıldı." + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "Makefile ve Windows komut dosyası sizin için oluşturulabilir,\nböylece doğrudan örn. sphinx-build çağırmak yerine sadece\n`make html' komutu çalıştırılmak zorundadır." + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "Makefile oluşturulsun mu? (y/n)" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "Windows komut satırı oluşturulsun mu? (y/n)" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "%s dosyası oluşturuluyor." + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "%s dosyası zaten var, atlanıyor." + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "Tamamlandı: İlk dizin yapısı oluşturuldu." + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "Artık %s asıl dosyanızı doldurmalı ve diğer belgelendirme kaynak dosyalarını\noluşturmalısınız." + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "Belgeleri oluşturmak için Makefile'ı kullanın, aşağıdaki gibi:\n make builder" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "Belgeleri oluşturmak için sphinx-build komutunu kullanın, aşağıdaki gibi:\n sphinx-build -b builder %s %s" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "\"builder\" burada desteklenen oluşturuculardan biridir, örn. html, latex veya linkcheck." + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "\nBir Sphinx projesi için gerekli dosyaları oluşturun.\n\nsphinx-quickstart, projeniz hakkında bazı sorular soran ve ardından tam bir\nbelgelendirme dizini ve örnek oluşturan etkileşimli bir araçtır\nMakefile, sphinx-build ile kullanılır.\n" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "sessiz kipi" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "proje kök dizini" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "Yapı seçenekleri" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "eğer belirtildiyse, kaynak ve oluşturma dizinlerini ayırın" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "_templates vb. içinde nokta için değiştirme" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "Proje temel seçenekleri" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "proje adı" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "hazırlayan adları" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "projenin sürümü" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "projenin yayımı" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "belge dili" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "kaynak dosya soneki" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "asıl belge adı" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "epub kullan" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "Uzantı seçenekleri" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "%s uzantısını etkinleştir" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "rasgele uzantıları etkinleştir" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "Makefile ve Batchfile oluşturma" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "makefile oluştur" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "makefile oluşturma" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "batchfile oluştur" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "batchfile oluşturma" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "Makefile/make.bat için make-mode kullan" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "Makefile/make.bat için make-mode kullanma" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "Proje şablonlama" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "şablon dosyaları için şablon dizini" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "bir şablon değişkeni tanımla" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "\"sessiz\" belirtilmiş, ancak herhangi bir \"proje\" veya \"hazırlayan\" belirtilmemiş." + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "Hata: belirtilen yol bir dizin değil ya da sphinx dosyaları zaten var." + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "sfenks-quickstart sadece boş bir dizin içine oluşturur. Lütfen yeni bir kök dizin yolu belirtin." + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "Geçersiz şablon değişkeni: %s" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "Aşırı alıkoyma algılandı" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "Geçersiz resim yazısı: %s" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "satır numarası özellikleri aralık dışında (1-%d): %r" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "Hem \"%s\" hem de \"%s\" seçeneği kullanılamıyor" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "Dahil edilen %r dosyası bulunamadı ya da dosyayı okuma başarısız oldu" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "%r kodlamasının kullanıldığı, dahil edilen %r dosyasını okuma yanlış gibi görünüyor, bir :encoding: seçeneği vermeyi deneyin" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "%r adlı nesne, dahil edilen %r dosyasında bulunamadı" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "Ayrık bir \"satır\" kümesiyle \"lineno-match\" kullanılamıyor" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "Satır özelliği %r: dahil edilen %r dosyasından çekilen hiç satır yok" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Bölümü hazırlayan: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Modülü hazırlayan: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Kodu hazırlayan: " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Hazırlayan: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Parametreler" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Dönüşler" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Dönüş türü" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C işlevi)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C üyesi)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C makrosu)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C türü)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C değişkeni)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "işlevi" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "üyesi" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "makrosu" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "türü" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "değişkeni" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "%s kopya C nesnesi açıklaması, %s içindeki diğer örnek, bunlardan biri için :noindex: kullanın" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "%s sürümünde geldi" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "%s sürümünde değişti" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "%s sürümünden beri kullanım dışı" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "%s kopya alıntısı, %s içindeki diğer örnek" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "Alıntı [%s] kaynak gösterilmedi." + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "Kopya bildiri, ayrıca '%s' içinde tanımlı.\nBildiri '%s'." + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "Şablon Parametreleri" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Şunu verir: " + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "%s (C++ %s)" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "sınıfı" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "birliği" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "kavramı" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "enum" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "numaralandırıcı" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "Kopya bildiri, ayrıca '%s' içinde tanımlı.\nBildirinin adı '%s'." + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (yerleşik işlev)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s yöntemi)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (sınıf)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (genel değişken veya sabit)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s özniteliği)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Bağımsız Değişkenler" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (modül)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "yöntemi" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "verisi" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "özniteliği" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "modülü" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "kopya %s açıklamasına ait %s, diğer %s, %s içinde" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "%s denkleminin kopya etiketi, %s içindeki diğer örnek" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "Geçersiz math_eqref_format: %r" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "anahtar kelime" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "işleç" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "nesne" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "özel durum" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "ifade" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "yerleşik işlev" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Değişkenler" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Harekete geçirir" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (%s modülü içinde)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (yerleşik değişken)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (%s modülü içinde)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (yerleşik sınıf)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (%s içindeki sınıf)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s yöntemi)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s sabit yöntemi)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s sabit yöntemi)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (%s.%s sınıf yöntemi)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (%s sınıf yöntemi)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s özniteliği)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "%s() (%s özelliği)" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Python Modül Dizini" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "modülleri" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Kullanım dışı" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "sınıf yöntemi" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "sabit yöntemi" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "%s kopya nesne açıklaması, %s içindeki diğer örnek, bunlardan biri için :noindex: kullanın" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "çapraz referans %r için birden fazla hedef bulundu: %s" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (kullanım dışı)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (yönerge)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr ":%s: (yönerge seçeneği)" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (rol)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "yönergesi" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "yönerge seçeneği" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "rolü" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "%s %s kopya açıklaması, %s içindeki diğer örnek" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "ortam değişkeni; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "Hatalı biçimlendirilmiş seçenek açıklaması %r, \"opt\", \"-opt args\", \"--opt args\", \"/opt args\" veya \"+opt args\" şeklinde görünmelidir" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "%s komut satırı seçeneği" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "komut satırı seçeneği" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "sözlük teriminden önce boş satır gelmek zorundadır" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "sözlük terimleri boş satırlarla ayrılmamak zorundadır" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "sözlük yanlış biçimlendirilmiş gibi görünüyor, girintiyi gözden geçirin" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "sözlük terimi" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "dilbilgisi belirteci" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "başvuru etiketi" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "ortam değişkeni" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "program seçeneği" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "belge" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Modül Dizini" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Arama Sayfası" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "%s kopya etiketi, %s içindeki diğer örnek" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "kopya %s açıklamasına ait %s, %s içindeki diğer örnek " + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "numfig etkisizleştirildi. :numref: yoksayıldı." + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "%s için atanan numara yok: %s" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "bağlantının resim yazısı yok: %s" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "geçersiz numfig_format: %s (%r)" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "geçersiz numfig_format: %s" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "yeni yapılandırma" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "yapılandırma değişti" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "uzantılar değişti" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "yapım ortamı sürümü şu anki değil" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "kaynak dizin değişti" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "Bu ortam seçilen oluşturucuyla uyumsuzdur, lütfen başka bir belge ağacı dizini seçin." + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "%s içinde belgeleri tarama başarısız oldu: %r" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "Etki alanı %r kayıtlı değil" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "kendinden kaynaklı toctree bulundu. Yoksayıldı." + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "belge herhangi bir toctree içine dahil değil" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "bakınız %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "ayrıca bakınız %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "bilinmeyen dizin girişi türü %r" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Semboller" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "dairesel toctree kaynakları algılandı, yoksayılan: %s <- %s" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[grafik: %s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[grafik]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "Bu denklem için kalıcı bağlantı" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(%s v%s içinde)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "(%s içinde)" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[kaynak]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Yapılacaklar" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<original entry>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(<<original entry>>, %s içinde, %d. satırda bulunur.)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "özgün giriş" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[belgeler]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "Modül kodu" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>%s öğesinin kaynak kodu</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "Genel bakış: modül kodu" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>Kodları mevcut bütün modüller</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "şunun takma adı: :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "Örnek" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "Örnekler" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "Notlar" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "Diğer Parametreler" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "Kaynaklar" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "Uyarılar" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "Getiriler" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Dikkat" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Uyarı" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Tehlike" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Hata" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "İpucu" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Önemli" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Not" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Ayrıca bakınız" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Tüyo" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Uyarı" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "önceki sayfadan devam" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "sonraki sayfaya devam" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "Alfabetik olmayan" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "Numaralar" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "sayfa" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "İçindekiler" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Ara" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Git" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Kaynağı Göster" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Genel Bakış" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Hoş Geldiniz! Karşınızda" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "belgelendirme konusu: " + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "son güncelleme" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Dizinler ve tablolar:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Tam İçindekiler" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "tüm bölümleri ve alt bölümleri listeler" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "bu belgelendirmeyi ara" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Genel Modül Dizini" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "tüm modüllere hızlı erişim" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "tüm işlevler, sınıflar, terimler" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Dizin – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Tek sayfada tam dizin" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Harfe göre dizin sayfaları" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "çok büyük olabilir" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Gezinti" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "%(docstitle)s içinde ara" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Bu belgeler hakkında" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Telif hakkı" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Telif hakkı</a> %(copyright)s." + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© Telif hakkı %(copyright)s." + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Son güncelleme: %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s kullanılarak oluşturuldu." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "%(docstitle)s ara" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Önceki konu" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "önceki bölüm" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Sonraki konu" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "sonraki bölüm" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Arama işlevini kullanabilmek için lütfen JavaScript'i\n etkinleştirin." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "ara" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Arama Sonuçları" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "Arama sonucunda herhangi bir belge bulunamadı. Bütün kelimeleri doğru yazdığınızdan ve gerekli bütün kategorileri seçtiğinizden emin olun." + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Hızlı Arama" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Bu Sayfa" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Sürüm %(version)s — %(docstitle)s içindeki Değişiklikler" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "%(version)s sürümündeki değişikliklerin otomatik olarak üretilmiş listesi" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Kütüphane değişiklikleri" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "C API'sindeki değişiklikler" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Diğer değişiklikler" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Bu başlık için kalıcı bağlantı" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Bu tanım için kalıcı bağlantı" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Arama Eşleşmelerini Gizle" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "Aranıyor" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "Aramaya hazırlanıyor..." + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "Arama tamamlandı. Sorguyu içeren %s sayfa bulundu." + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", şunun içinde:" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "Yan çubuğu genişlet" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "Yan çubuğu daralt" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "İçindekiler" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "Bilinmeyen resim biçimi: %s..." + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "atlandı" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "başarısız oldu" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "okuma hatası: %s, %s" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "yazma hatası: %s, %s" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "varsayılan rol %s bulunamadı" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "Bu tablonun kalıcı bağlantısı" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "Bu kodun kalıcı bağlantısı" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "Bu resmin kalıcı bağlantısı" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "Bu içindekiler tablosunun kalıcı bağlantısı" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "Dipnotlar" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[resim: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[resim]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..48b4cac --- /dev/null +++ b/sphinx/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "uk_UA", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "\u041f\u0440\u043e \u0446\u0456 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438", "Automatically generated list of changes in version %(version)s": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0437\u0433\u0435\u043d\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u043c\u0456\u043d \u0432 \u0432\u0435\u0440\u0441\u0456\u0457 %(version)s", "C API changes": "\u0437\u043c\u0456\u043d\u0438 C API", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "\u041f\u043e\u0432\u043d\u0438\u0439 \u0417\u043c\u0456\u0441\u0442", "Contents": "", "Copyright": "\u0410\u0432\u0442\u043e\u0440\u0441\u044c\u043a\u0456 \u043f\u0440\u0430\u0432\u0430", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u0421\u0442\u0432\u043e\u0440\u0435\u043d\u043e \u0437 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u044f\u043c <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "", "Full index on one page": "\u041f\u043e\u0432\u043d\u0438\u0439 \u0456\u043d\u0434\u0435\u043a\u0441 \u043d\u0430 \u043e\u0434\u043d\u0456\u0439 \u0441\u0442\u043e\u0440\u0456\u043d\u0446\u0456", "General Index": "\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0438\u0439 \u0456\u043d\u0434\u0435\u043a\u0441", "Global Module Index": "\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0438\u0439 \u0456\u043d\u0434\u0435\u043a\u0441 \u043c\u043e\u0434\u0443\u043b\u0456\u0432", "Go": "\u0412\u043f\u0435\u0440\u0435\u0434", "Hide Search Matches": "\u041f\u0440\u0438\u0445\u043e\u0432\u0430\u0442\u0438 \u0441\u043f\u0456\u0432\u043f\u0430\u0434\u0456\u043d\u043d\u044f \u043f\u043e\u0448\u0443\u043a\u0443", "Index": "\u0406\u043d\u0434\u0435\u043a\u0441", "Index – %(key)s": "\u0406\u043d\u0434\u0435\u043a\u0441 – %(key)s", "Index pages by letter": "\u0406\u043d\u0434\u0435\u043a\u0441\u043d\u0456 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438 \u043f\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c", "Indices and tables:": "\u0406\u043d\u0434\u0435\u043a\u0441\u0438 \u0442\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0456:", "Last updated on %(last_updated)s.": "\u0412\u043e\u0441\u0442\u0430\u043d\u043d\u0454 \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043e %(last_updated)s.", "Library changes": "\u0417\u043c\u0456\u043d\u0438 \u0432 \u0431\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u0446\u0456", "Navigation": "\u041d\u0430\u0432\u0456\u0433\u0430\u0446\u0456\u044f", "Next topic": "\u041d\u0430\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u0435\u043c\u0430", "Other changes": "\u0406\u043d\u0448\u0456 \u0437\u043c\u0456\u043d\u0438", "Overview": "\u041e\u0433\u043b\u044f\u0434", "Permalink to this definition": "\u041f\u043e\u0441\u0442\u0456\u0439\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0446\u0435 \u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f", "Permalink to this headline": "\u041f\u043e\u0441\u0442\u0456\u0439\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0446\u0435\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", "Please activate JavaScript to enable the search\n functionality.": "\u0411\u0443\u0434\u044c-\u043b\u0430\u0441\u043a\u0430 \u0432\u0456\u043c\u043a\u043d\u0456\u0442\u044c \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u043a\u0443 JavaScript, \u0449\u043e\u0431 \u0432\u0432\u0456\u043a\u043d\u0443\u0442\u0438\n\"\n\" \u043f\u043e\u0448\u0443\u043a.", "Preparing search...": "", "Previous topic": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u0440\u043e\u0437\u0434\u0456\u043b", "Quick search": "\u0428\u0432\u0438\u0434\u043a\u0438\u0439 \u043f\u043e\u0448\u0443\u043a", "Search": "\u041f\u043e\u0448\u0443\u043a", "Search Page": "\u0421\u0442\u043e\u0440\u0456\u043d\u043a\u0430 \u043f\u043e\u0448\u0443\u043a\u0443", "Search Results": "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0438 \u043f\u043e\u0448\u0443\u043a\u0443", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "\u0428\u0443\u043a\u0430\u0442\u0438 \u0432 %(docstitle)s", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "\u0412\u0456\u0434\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0438 \u0432\u0438\u0445\u0456\u0434\u043d\u0438\u0439 \u0442\u0435\u043a\u0441\u0442", "Table of Contents": "", "This Page": "\u0426\u044f \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0430", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "\u0432\u0441\u0456 \u0444\u0443\u043d\u043a\u0446\u0456\u0457, \u043a\u043b\u0430\u0441\u0438, \u0442\u0435\u0440\u043c\u0456\u043d\u0438", "can be huge": "\u043c\u043e\u0436\u0435 \u0431\u0443\u0442\u0438 \u0432\u0435\u043b\u0438\u0447\u0435\u0437\u043d\u0438\u043c", "last updated": "", "lists all sections and subsections": "\u043f\u0435\u0440\u0435\u043b\u0456\u0447\u0438\u0442\u0438 \u0432\u0441\u0456 \u0441\u0435\u043a\u0446\u0456\u0457 \u0442\u0430 \u043f\u0456\u0434\u0441\u0435\u043a\u0446\u0456\u0457", "next chapter": "\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0438\u0439 \u0440\u043e\u0437\u0434\u0456\u043b", "previous chapter": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u0440\u043e\u0437\u0434\u0456\u043b", "quick access to all modules": "\u0448\u0432\u0438\u0434\u043a\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0432\u0441\u0456\u0445 \u043c\u043e\u0434\u0443\u043b\u0456\u0432", "search": "\u043f\u043e\u0448\u0443\u043a", "search this documentation": "\u0448\u0443\u043a\u0430\u0442\u0438 \u0446\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0456\u044e", "the documentation for": ""}, "plural_expr": "(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..050a1a5 --- /dev/null +++ b/sphinx/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po @@ -0,0 +1,3466 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Petro Sasnyk <petro@sasnyk.name>, 2009 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/sphinx-doc/sphinx-1/language/uk_UA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: uk_UA\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Вбудовані елементи" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Рівень модуля" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (в " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Загальний індекс" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "індекс" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "наступний" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "попередній" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "Індекс" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "Реліз" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Автор секції: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Автор модуля: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Автор: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Параметри" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Повертає" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Тип повернення" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (С функція)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C член)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C макрос)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C тип)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C змінна)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "функція" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "член" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "макрос" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "тип" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Нове в версії %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Змінено в версії %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Застаріло починаючи з версії %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "клас" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (вбудована функція)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s метод)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (клас)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s атрибут)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (модуль)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "атрибут" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "модуль" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "ключове слово" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "оператор" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "об'єкт" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "виняткова ситуація" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "вираз" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "вбудована функція" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Викликає" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (в модулі %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (вбудована змінна)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (в модулі %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (вбудований клас)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (клас в %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s метод)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s статичний метод)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s статичний метод)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s атрибут)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "модулі" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Застарілий" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "статичний метод" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (застарілий)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "змінна оточення; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "змінна оточення" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "Індекс модулів" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "Сторінка пошуку" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Доробити" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "синонім :class:`%s`" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Увага" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Застереження" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Небезпека" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Помилка" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Підказка" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Важливо" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Примітка" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Дивись також" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Порада" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Попередження" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Пошук" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Вперед" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Відобразити вихідний текст" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Огляд" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Індекси та таблиці:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Повний Зміст" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "перелічити всі секції та підсекції" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "шукати цю документацію" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Загальний індекс модулів" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "швидкий доступ до всіх модулів" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "всі функції, класи, терміни" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Індекс – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Повний індекс на одній сторінці" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Індексні сторінки по символам" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "може бути величезним" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Навігація" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Шукати в %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Про ці документи" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Авторські права" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Востаннє оновлено %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Створено з використанням <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Пошук %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Попередній розділ" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "Попередній розділ" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Наступна тема" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "наступний розділ" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Будь-ласка вімкніть підтримку JavaScript, щоб ввікнути\n\"\n\" пошук." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "пошук" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "Результати пошуку" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "Швидкий пошук" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "Ця сторінка" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "Автоматичного згенерований список змін в версії %(version)s" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "Зміни в бібліотеці" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "зміни C API" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "Інші зміни" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "Постійне посилання на цей заголовок" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "Постійне посилання на це визначення" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "Приховати співпадіння пошуку" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/ur/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/ur/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..d97879d --- /dev/null +++ b/sphinx/sphinx/locale/ur/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "ur", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "", "Table of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/ur/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/ur/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..b4a3e3b --- /dev/null +++ b/sphinx/sphinx/locale/ur/LC_MESSAGES/sphinx.po @@ -0,0 +1,3465 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Urdu (http://www.transifex.com/sphinx-doc/sphinx-1/language/ur/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/vi/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/vi/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..6fc9de9 --- /dev/null +++ b/sphinx/sphinx/locale/vi/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "vi", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "V\u1ec1 c\u00e1c t\u00e0i li\u1ec7u n\u00e0y", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "M\u1ee5c L\u1ee5c \u0110\u1ea7y \u0110\u1ee7", "Contents": "N\u1ed9i dung", "Copyright": "B\u1ea3n quy\u1ec1n", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u0110\u01b0\u1ee3c t\u1ea1o nh\u1edd <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "", "Full index on one page": "To\u00e0n b\u1ed9 ch\u1ec9 m\u1ee5c tr\u00ean m\u1ed9t trang", "General Index": "Ch\u1ec9 m\u1ee5c chung", "Global Module Index": "Ch\u1ec9 M\u1ee5c M\u00f4-\u0111un To\u00e0n C\u1ee5c", "Go": "Th\u1ef1c hi\u1ec7n", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "Ch\u1ec9 m\u1ee5c – %(key)s", "Index pages by letter": "C\u00e1c trang ch\u1ec9 m\u1ee5c theo ch\u1eef c\u00e1i", "Indices and tables:": "C\u00e1c ch\u1ec9 m\u1ee5c v\u00e0 b\u1ea3ng bi\u1ec3u:", "Last updated on %(last_updated)s.": "C\u1eadp nh\u1eadt m\u1edbi nh\u1ea5t v\u00e0o %(last_updated)s.", "Library changes": "", "Navigation": "\u0110i\u1ec1u h\u01b0\u1edbng", "Next topic": "Ch\u1ee7 \u0111\u1ec1 ti\u1ebfp", "Other changes": "", "Overview": "T\u1ed5ng quan", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "H\u00e3y b\u1eadt JavaScript \u0111\u1ec3 d\u00f9ng t\u00ednh n\u0103ng\nt\u00ecm ki\u1ebfm.", "Preparing search...": "", "Previous topic": "Ch\u1ee7 \u0111\u1ec1 tr\u01b0\u1edbc", "Quick search": "", "Search": "T\u00ecm Ki\u1ebfm", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "T\u00ecm ki\u1ebfm trong %(docstitle)s", "Searching": "", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "Hi\u1ec3n th\u1ecb m\u00e3 ngu\u1ed3n", "Table of Contents": "", "This Page": "", "Welcome! This is": "Ch\u00e0o m\u1eebng! \u0110\u00e2y l\u00e0", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "t\u1ea5t c\u1ea3 c\u00e1c h\u00e0m, l\u1edbp, thu\u1eadt ng\u1eef", "can be huge": "c\u00f3 th\u1ec3 r\u1ea5t nhi\u1ec1u", "last updated": "c\u1eadp nh\u1eadt m\u1edbi nh\u1ea5t", "lists all sections and subsections": "li\u1ec7t k\u00ea t\u1ea5t c\u1ea3 c\u00e1c m\u1ee5c v\u00e0 m\u1ee5c con", "next chapter": "ch\u01b0\u01a1ng ti\u1ebfp", "previous chapter": "ch\u01b0\u01a1ng tr\u01b0\u1edbc ", "quick access to all modules": "truy c\u1eadp nhanh t\u1ea5t c\u1ea3 c\u00e1c m\u00f4-\u0111un", "search": "", "search this documentation": "t\u00ecm ki\u1ebfm trong t\u00e0i li\u1ec7u n\u00e0y", "the documentation for": "t\u00e0i li\u1ec7u cho"}, "plural_expr": "0"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/vi/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/vi/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..0e2821a --- /dev/null +++ b/sphinx/sphinx/locale/vi/LC_MESSAGES/sphinx.po @@ -0,0 +1,3466 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Hoat Le Van <hoatlevan@gmail.com>, 2014 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Vietnamese (http://www.transifex.com/sphinx-doc/sphinx-1/language/vi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: vi\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Các đề nghị nâng cao Python; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "Dựng sẵn" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "Mức mô-đun" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "(trong" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%d/%m/%Y" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "Chỉ mục chung" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "chỉ mục" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "xem tiếp" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "xem lại" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "Tài liệu %s %s" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "Tác giả mục:" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "Tác giả mô-đun:" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "Tác giả mã lệnh:" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "Tác giả:" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "Tham số" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "Trả về" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "Kiểu trả về" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (hàm C)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (thuộc tính C)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (macro C)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (kiểu C)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (biến C)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "hàm" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "thuộc tính" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "macro" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "kiểu" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "biến" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "Mới từ phiên bản %s" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "Thay đổi trong phiên bản %s" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "Sắp loại bỏ từ phiên bản %s" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "Ném" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "lớp" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (hàm dựng sẵn)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (phương thức %s)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (lớp)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (biến toàn cục hoặc hằng số)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (thuộc tính %s)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "Đối số" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (mô-đun)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "phương thức" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "dữ liệu" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "thuộc tính" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "mô-đun" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "từ khoá" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "toán tử" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "đối tượng" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "ngoại lệ" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "câu lệnh" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "hàm dựng sẵn" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "Các biến" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "Đưa ra" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (trong mô-đun %s)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (biến dựng sẵn)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (trong mô-đun %s)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (lớp dựng sẵn)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (lớp trong %s)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (phương thức %s.%s) " + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (phương thức tĩnh %s.%s)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (phương thức tĩnh %s)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (phương thức lớp %s.%s)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (phương thức lớp %s)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (thuộc tính %s.%s)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Chỉ Mục Mô-đun Python" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "các mô-đun" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "Sắp loại bỏ" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "phương thức lớp" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "phương thức tĩnh" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "(sắp loại bỏ)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (chỉ thị)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (vai trò)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "chỉ thị" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "vai trò" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "các biến môi trường; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "chú giải thuật ngữ" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "xem %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "nên xem %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "Biểu tượng" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "Các ví dụ" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "Chú ý" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "Cảnh báo" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "Nguy hiểm" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "Lỗi" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "Gợi ý" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "Quan trọng" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "Ghi chú" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "Xem thêm" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "Mẹo" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "Cảnh báo" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "Tìm Kiếm" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "Thực hiện" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "Hiển thị mã nguồn" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "Tổng quan" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "Chào mừng! Đây là" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "tài liệu cho" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "cập nhật mới nhất" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "Các chỉ mục và bảng biểu:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "Mục Lục Đầy Đủ" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "liệt kê tất cả các mục và mục con" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "tìm kiếm trong tài liệu này" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "Chỉ Mục Mô-đun Toàn Cục" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "truy cập nhanh tất cả các mô-đun" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "tất cả các hàm, lớp, thuật ngữ" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "Chỉ mục – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "Toàn bộ chỉ mục trên một trang" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "Các trang chỉ mục theo chữ cái" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "có thể rất nhiều" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "Điều hướng" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "Tìm kiếm trong %(docstitle)s" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "Về các tài liệu này" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "Bản quyền" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Cập nhật mới nhất vào %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "Được tạo nhờ <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s." + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "Tìm %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "Chủ đề trước" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "chương trước " + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "Chủ đề tiếp" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "chương tiếp" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "Hãy bật JavaScript để dùng tính năng\ntìm kiếm." + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "Nội dung" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..d5973ca --- /dev/null +++ b/sphinx/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "zh_Hans_CN", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\"> \u7248\u6743\u6240\u6709</a> %(copyright)s.", "© Copyright %(copyright)s.": "© \u7248\u6743\u6240\u6709 %(copyright)s.", ", in ": "\uff0c \u5728 ", "About these documents": "\u5173\u4e8e\u8fd9\u4e9b\u6587\u6863", "Automatically generated list of changes in version %(version)s": "\u81ea\u52a8\u751f\u6210\u7684 %(version)s \u7248\u672c\u4e2d\u7684\u66f4\u6539\u5217\u8868", "C API changes": "C API \u66f4\u6539", "Changes in Version %(version)s — %(docstitle)s": "\u66f4\u6539\u53d1\u751f\u5728\u7248\u672c %(version)s— %(docstitle)s", "Collapse sidebar": "\u6298\u53e0\u8fb9\u680f", "Complete Table of Contents": "\u5b8c\u6574\u7684\u5185\u5bb9\u8868", "Contents": "\u76ee\u5f55", "Copyright": "\u7248\u6743\u6240\u6709", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u7531 <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s \u521b\u5efa\u3002", "Expand sidebar": "\u5c55\u5f00\u8fb9\u680f", "Full index on one page": "\u4e00\u9875\u7684\u5168\u90e8\u7d22\u5f15", "General Index": "\u603b\u76ee\u5f55", "Global Module Index": "\u5168\u5c40\u6a21\u5757\u7d22\u5f15", "Go": "\u8f6c\u5411", "Hide Search Matches": "\u9690\u85cf\u641c\u7d22\u7ed3\u679c", "Index": "\u7d22\u5f15", "Index – %(key)s": "\u7d22\u5f15 – %(key)s", "Index pages by letter": "\u6309\u7167\u5b57\u6bcd\u7684\u7d22\u5f15\u9875", "Indices and tables:": "\u7d22\u5f15\u548c\u8868\u683c\uff1a", "Last updated on %(last_updated)s.": "\u6700\u540e\u66f4\u65b0\u4e8e %(last_updated)s.", "Library changes": "\u5e93\u66f4\u6539", "Navigation": "\u5bfc\u822a", "Next topic": "\u4e0b\u4e00\u4e2a\u4e3b\u9898", "Other changes": "\u5176\u4ed6\u66f4\u6539", "Overview": "\u6982\u8ff0", "Permalink to this definition": "\u6c38\u4e45\u94fe\u63a5\u81f3\u76ee\u6807", "Permalink to this headline": "\u6c38\u4e45\u94fe\u63a5\u81f3\u6807\u9898", "Please activate JavaScript to enable the search\n functionality.": "\u8bf7\u6fc0\u6d3b JavaScript \u4ee5\u5f00\u542f\u641c\u7d22\u529f\u80fd\u3002", "Preparing search...": "\u51c6\u5907\u641c\u7d22\u2026\u2026", "Previous topic": "\u4e0a\u4e00\u4e2a\u4e3b\u9898", "Quick search": "\u5feb\u901f\u641c\u7d22", "Search": "\u641c\u7d22", "Search Page": "\u641c\u7d22\u9875\u9762", "Search Results": "\u641c\u7d22\u7ed3\u679c", "Search finished, found %s page(s) matching the search query.": "\u641c\u7d22\u5b8c\u6210\uff0c\u6709 %s \u4e2a\u9875\u9762\u5339\u914d\u3002", "Search within %(docstitle)s": "\u5728 %(docstitle)s \u4e2d\u641c\u7d22", "Searching": "\u641c\u7d22\u4e2d", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "\u663e\u793a\u6e90\u4ee3\u7801", "Table of Contents": "\u76ee\u5f55", "This Page": "\u672c\u9875", "Welcome! This is": "\u6b22\u8fce\uff01\u8fd9\u662f", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u6ca1\u6709\u4efb\u4f55\u6587\u6863\u5339\u914d\u60a8\u7684\u641c\u7d22\u3002\u8bf7\u786e\u4fdd\u4f60\u8f93\u5165\u7684\u8bcd\u62fc\u5199\u6b63\u786e\u5e76\u9009\u62e9\u4e86\u5408\u9002\u7684\u5206\u7c7b\u3002", "all functions, classes, terms": "\u6240\u7684\u51fd\u6570\uff0c\u7c7b\uff0c\u672f\u8bed", "can be huge": "\u53ef\u80fd\u4f1a\u5f88\u591a", "last updated": "\u6700\u540e\u66f4\u65b0\u4e8e", "lists all sections and subsections": "\u5217\u51fa\u6240\u6709\u7684\u7ae0\u8282\u548c\u90e8\u5206", "next chapter": "\u4e0b\u4e00\u7ae0", "previous chapter": "\u4e0a\u4e00\u7ae0", "quick access to all modules": "\u5feb\u901f\u67e5\u770b\u6240\u6709\u7684\u6a21\u5757", "search": "\u641c\u7d22", "search this documentation": "\u641c\u7d22\u6587\u6863", "the documentation for": "\u8fd9\u4efd\u6587\u6863\u662f"}, "plural_expr": "0"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..22fd15f --- /dev/null +++ b/sphinx/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po @@ -0,0 +1,3477 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Yinian Chin <yinian1992@live.com>, 2015,2017-2018 +# Hsiaoming Yang <me@lepture.com>, 2018 +# Jian Dai <daijian1@qq.com>, 2020 +# Nomaka <nomakacyx@gmail.com>, 2018 +# Lenville Leo <lenville@gmail.com>, 2013 +# Lenville Leo <lenville@gmail.com>, 2013 +# Nomaka <nomakacyx@gmail.com>, 2018 +# Ryekee Zhong <ryekee@gmail.com>, 2013 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2019 +# Tower Joo<zhutao.iscas@gmail.com>, 2009 +# Yinian Chin <yinian1992@live.com>, 2013,2018 +# Yinian Chin <yinian1992@live.com>, 2013 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Chinese (China) (http://www.transifex.com/sphinx-doc/sphinx-1/language/zh_CN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "配置目录中缺少 conf.py 文件 (%s)" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "无法找到源码目录 (%s)" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "源文件目录和目标目录不能是同一目录" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "正在运行 Sphinx v%s" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "该项目需要 Sphinx v%s 及以上版本,使用现有版本不能构建文档。" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "创建输出目录" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "同时设置扩展名 %s:" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "当前 conf.py 中定义的 'setup' 不是一个可调用的 Python 对象。请把其定义改为一个可调用的函数。Sphinx 扩展的 conf.py 必须这样配置。" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "正在加载翻译 [%s]... " + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "完成" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "没有内置信息的翻译" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "加载 pickled环境" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "失败:%s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "未选择构建程序,默认使用:html" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "成功" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "完成但存在问题" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "构建 %s, %s 警告。" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "构建 %s." + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "节点类 %r 已注册,其访问者将被覆盖" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "指令 %r 已注册,将被覆盖" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "角色 %r 已注册,将被覆盖" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "扩展 %s 没有声明是否并行读取安全,默认假定为否 - 请联系扩展作者检查是否支持该特性并显式声明" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "%s 扩展没有声明是否并行写入安全,默认假定为否 - 请联系扩展作者检查是否支持该特性并显式声明" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "执行顺序 %s" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "不能覆盖字典配置项 %r,已忽略 (请用 %r 设置单个字典元素)" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "无效的数值 %r 用于配置项 %r,已忽略" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "配置项 %r 覆盖值类型不支持,已忽略" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "覆盖中包含未知配置项 %r ,已忽略" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "不存在的配置项:%s" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "配置项 %r 已存在" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "配置文件中存在语法错误: %s\n" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "配置文件(或配置文件导入的模块)调用了 sys.exit()" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "配置文件中有程序上的错误:\n\n%s" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "配置值\"source_后缀\"需要字符串、字符串列表或字典。但给出\"%r\"。" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "节 %s" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "图 %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "表 %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "列表 %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "配置项 `{name}` 必须设置为 {candidates} 之一,但现在是 `{current}` 。" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "配置值\"[name]\"的类型为\"[当前._name];但\"当前\"为\"当前\"。\"当前\"为\"当前\"。\"当前\"为\"当前\"。=================================预期 [允许]。" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "配置项 `{name}' 的类型是 `{current.__name__}',默认为 `{default.__name__}'。" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "配置项 %r 的值包含了非 ASCII 字符,这会导致 Unicode 错误。请使用 Unicode 字符串,例如 %r。" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "未找到 primary_domain %r,已忽略。" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "自 v2.0 以来,Sphinx 默认使用\"索引\"作为主文档。请在conf.py中添加\"master_doc = \"内容\"。" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "事件 %r 已存在" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "未知事件名称:%s" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "未能加载 needs_extensions 配置项所需的 %s。" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "该项目所需扩展 %s 最低要求版本 %s ,当前加载版本 (%s) 无法构建文档。" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "未知的 Pygments 词法分析器 %r" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "无法按照“%s”语言的词法解析代码块,跳过语法高亮。" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "无法读取文档,已忽略。" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "构建程序类 %s 未包含 \"name\" 属性" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "构建程序 %r 已存在 (见模块 %s)" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "构建程序 %s 未注册或在入口点不可用" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "构建程序 %s 未注册" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "域 %s 已注册" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "域 %s 尚未注册" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "%r 指令已注册到域 %s" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "%r 角色已注册到域 %s" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "%r 索引已注册到域 %s" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "对象类型 %r 已注册" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "交叉引用类型 %r 已注册" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "源文件扩展名 %r 已注册" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "%r 的 source_parser 已注册" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "未注册 %s 的源代码语法分析器" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "翻译已存在 %r" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "add_node() 的关键字参数必须是 (visit, depart) 形式的函数元组:%r=%r" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "可数节点 %r 已注册" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "公式渲染器 %s 已注册" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "扩展 %r 已合并至 Sphinx (自版本 %s 开始);该扩展被忽略。" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "原始异常:\n" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "无法导入扩展 %s" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "扩展 %r 未包含setup() 函数;它确实是一个 Sphinx 扩展模块吗?" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "该项目所用扩展 %s 需要 Sphinx 版本 %s 以上;当前版本无法构建文档。" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "扩展 %r 在其 setup() 函数中返回了一个不支持的对象;该函数应返回 None 或一个元数据字典" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python 提高建议; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "主题 %r 未包含 \"theme\" 配置" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "主题 %r 未包含 \"inherit\" 配置" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "未找到主题 %r,则从 %r 继承" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "配置项 %s.%s 在所有已找到主题配置中均未出现" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "不支持的主题选项 %r" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "主题路径指定的文件 %r 是一个无效的或不包含主题的 zip 文件" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "sphinx_rtd_theme 从 1.4.0 版本开始不再作为强依赖。请手动安装。(pip install sphinx_rtd_theme)" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "主题 %r 未找到 (缺少 theme.conf?)" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "没有找到适合 %s 构建器的图像:%s (%s)" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "没有找到适合 %s 构建器的图像:%s" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "构建 [mo]: " + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "写入输出... " + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "所有的 %d po 文件" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "指定了 %d 个 po 文件的目标文件" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "%d 个 po 文件的目标文件已过期" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "所有源文件" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "源文件目录下没有命令行给出的 %r 文件,将被忽略" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "命令行给出的 %r 文件不存在,将被忽略" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "命令行给出了 %d 个源文件" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "%d 个源文件的目标文件已过期" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "构建 [%s]: " + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "查找当前已过期的文件... " + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "找到 %d 个" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "没有找到" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "pickling环境" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "检查一致性" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "没有过期的目标文件。" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "更新环境: " + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "已添加 %s,%s 已更改,%s 已移除" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "阅读源... " + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "等待工作线程……" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "写入文档:%s" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "准备文件" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "找到重复的ToC条目: %s" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "复制图像... " + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "无法读取图像文件 %r:直接复制" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "无法复制图像文件 %r:%s" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "无法写入图像文件 %r:%s" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "未找到Pillow - 复制图像文件" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "正在写入 %s 文件……" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "%s 的 MIME 类型未知,将被忽略" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "概览文件保存在 %(outdir)s 目录 。" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "%s 版本中没有做出修改。" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "写入摘要文件..." + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "内置" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "模块级别" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "复制源文件……" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "创建变更记录时无法读取 %r" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "伪构建器不生成文件。" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "ePub文件保存在 %(outdir)s。" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "对于 EPUB3 格式,配置项“epub_language”(或“language”)不能为空" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "对于 EPUB3 格式,配置项“epub_uid”应为 XML 名称" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "对于 EPUB3 格式,配置项“epub_title”(或“html_title”)不能为空" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "对于 EPUB3 格式,配置项“epub_author”不能为空" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "对于 EPUB3 格式,配置项“epub_contributor”不能为空" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "对于 EPUB3 格式,配置项“epub_description”不能为空" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "对于 EPUB3 格式,配置项“epub_publisher”不能为空" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "对于 EPUB3 格式,配置项“epub_copyright”(或“copyright”)不能为空" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "对于 EPUB3 格式,配置项“epub_identifier”不能为空" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "对于 EPUB3 格式,配置项“version”不能为空" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "无效的 css_file:%r,已忽略" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "消息目录保存在 %(outdir)s 目录。" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "%d 个模板文件的目标文件" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "读取模板... " + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "写入消息目录... " + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "在上述输出或 %(outdir)s/output.txt 中检查错误" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "锚点“%s”未找到" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "损坏的链接:%s(%s)" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "手册页保存在 %(outdir)s 目录。" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "未找到“man_pages”配置项,不会写入手册页" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "写作" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "\"man_pages\"配置值引用未知文档 %s" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "HTML 页面保存在 %(outdir)s 目录。" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "组装单一文档" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "写入其他文件" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "Texinfo 文件保存在 %(outdir)s 目录。" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "\n在该目录下运行“make”命令以通过 makeinfo 运行这些 Texinfo文件\n(在此处用“make info”即可自动执行)。" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "未找到“texinfo_documents”配置项,不会写入文档" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "配置项“texinfo_documents”引用了未知文档 %s" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "处理 %s" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "解析引用……" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr " (在 " + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "复制 Texinfo 支持文件" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "错误写入文件 Makefile: %s" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "文本文件保存在 %(outdir)s 目录。" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "写入文件 %s 时发生错误:%s" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "XML 文件保存在 %(outdir)s 目录。" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "伪 XML 文件保存在 %(outdir)s。" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "构建信息文件损坏:%r" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "HTML 页面保存在 %(outdir)s 目录。" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "读取构建信息文件失败:%r" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%Y 年 %m 月 %d 日" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "配置项 html_user_opensearch 必须为字符串" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "总目录" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "索引" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "下一页" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "上一页" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "复制可下载文件... " + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "无法复制可下载文件 %r:%s" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "复制静态文件... " + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "无法复制静态文件 %r" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "无法复制额外文件 %r" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "写入构建信息文件失败:%r" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "无法加载搜索索引,不会构建所有文档:索引将不完整。" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "页面 %s 匹配了 html_sidebars 中的两条规则:%r 和 %r" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "渲染页面 %s 时发生了 Unicode 错误。请确保所有包含非 ASCII 字符的配置项是 Unicode 字符串。" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "渲染页面 %s 时发生了错误。\n原因:%r" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "无效的 js_file:%r,已忽略" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "注册了多个 math_renderers。但没有选择任何 math_renderer。" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "给定了未知的 math_renderer %r。" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "html_extra_path 指向的 %r 不存在" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "html_static_path 指向的 %r 不存在" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "logo文件 %r 不存在" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "网站图标 文件 %r 不存在" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s 文档" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "LaTex 文件保存在 %(outdir)s 目录。" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "\n在该目录下运行“make”以通过 (pdf)latex 运行这些 LaTex 文件\n(在此处用“make latexpdf”即可自动执行)。" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "未找到“latex_documents”配置项,不会写入文档" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "配置项“latex_documents”引用了未知文档 %s" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "索引" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "发布" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "没有语种 %r 的 Babel 选项" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "复制 TeX 支持文件" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "复制 TeX 支持文件……" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "复制其他文件" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "构建时抛出异常,启动调试器:" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "reST 标记错误:" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "编码错误:" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "如果你想向开发者报告问题,可以查阅已经保存在 %s 的完整 Traceback 信息 。" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "递归错误:" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "在源文件过大或嵌套层数过深时会出现此错误。你可以在 conf.py 中增大默认的Python 递归 1000 层限制,像这样:" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "抛出异常:" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "如果此处抛出了用户的错误,也请向我们报告,这样以后可以显示更友好、更详细的错误信息。" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "请向 Bug 追踪系统 <https://github.com/sphinx-doc/sphinx/issues> 投递 Bug 报告。谢谢!" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "工作编号应为正值" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "更多信息请访问 <http://sphinx-doc.org/>。" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "\n从源文件生成文档。\n\nsphinx-build 从 SOURCEDIR 中的文件生成文档,并保存在 OUTPUTDIR。\n它从 SOURCEDIR 的“conf.py” 中读取配置。“sphinx-quickstart”工具可以生\n成包括“conf.py”在内的模板文件。\n\nsphinx-build 可以生成多种格式的文档。在命令行中指定构建器名称即可\n选择文档格式,默认是 HTML。构建器也可以执行文档处理相关的其他\n任务。\n\n默认只会重新构建过期内容。如果指定了文件名,那么只会产生这些文件\n的输出。\n" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "文档源文件的路径" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "输出目录的路径" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "指定重新构建的文件列表。如果指定了 -a 参数,则忽略此项" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "通用选项" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "构建器(默认:html)" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "写入所有文件(默认:只写入新文件和修改过的文件)" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "不使用已保存的环境,始终读取全部文件" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "缓存环境和 doctree 文件路径(默认:OUTPUTDIR/.doctrees)" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "如果可能,用 N 个进程并行构建文档(如果指定为“auto”,则 N 为 CPU 数量)" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "配置文件(conf.py)所在目录路径(默认:与 SOURCEDIR 相同)" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "只用 -D 选项时,不会采用任何配置文件" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "覆盖配置文件中的配置项" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "向 HTML 模板传值" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "定义标签,用于把涉及此 TAG 的“only”块的内容包含进来" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "挑刺模式,在引用失败时报警" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "控制台输出选项" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "输出更详细的日志(甚至可能重复)" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "不输出到 stdout,只在 stderr 上输出报警" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "无任何输出,报警也不会输出" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "着色输出(默认:自动检测)" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "不着色输出(默认:自动检测)" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "把警告(包含错误)信息写入给定的文件" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "把警告视为错误" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "发生异常时显示完整回溯信息" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "发生异常时运行 Pdb" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "无法找到文件 %r" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "-a 选项和文件名不能同时使用" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "无法打开警告信息文件 %r:%s" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "-D 选项的参数必须是 name=value 形式" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "-A 选项的参数必须是 name=value 形式" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "自动插入模块中的 Docstring" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "自动测试 doctest 块中的测试代码片段" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "链接不同项目的 Sphinx 文档" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "编写在构建时可以选择显示、隐藏的“todo”条目" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "检查文档覆盖率" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "支持数学公式,渲染成 PNG 或 SVG 图像" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "支持数学公式,用 MathJax 在浏览器中渲染" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "基于配置值控制是否在构建中包含文档内容" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "支持链接到文档涉及的 Python 对象的源码" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "创建 .nojekyll 文件,用于在 GitHub Pages 服务发布文档" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "请输入有效的路径名。" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "请输入文本。" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "请输入 %s 之一。" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "请输入“y”或“n”。" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "请输入文件后缀,例如:“.rst”或者“.txt”。" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "* 提示:输入了非 ASCII 字符并且终端编码未知——假定为 UTF-8 或 Latin-1。" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "欢迎使用 Sphinx %s 快速配置工具。" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "文档的根路径" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "错误:选择的根路径中已存在 conf.py 文件。" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "sphinx-quickstart 不会覆盖已有的 Sphinx 项目。" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "请输入新的根路径(或按回车退出)" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "独立的源文件和构建目录(y/n)" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "模板目录名和静态目录名的前缀" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "项目名称" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "作者名称" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "项目版本" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "项目发行版本" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "项目语种" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "源文件后缀" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "主文档文件名(不含后缀)" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "错误:选择的根目录下已存在主文档文件 %s。" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "sphinx-quickstart 不会覆盖已有的文件。" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "请输入新文件名,若要重命名现有文件请按回车" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "启用 Sphinx 扩展:" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "注意:imgmath 和 mathjax 不能同时启用。已取消选择 imgmath。" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "创建 Makefile?(y/n)" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "创建 Windows 批处理文件?(y/n)" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "创建文件 %s。" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "文件 %s 已存在,跳过。" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "完成:已创建初始目录结构。" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "\n生成 Sphinx 项目的必需文件。\n\nsphinx-quickstart 是一个交互式工具,询问一些关于项目的问题,生成\n完整的文档目录和用于 sphinx-build 的示例 Makefile。\n" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "静默模式" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "文档结构参数" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "如果指定了此选项,将使用独立的源文件目录和构建目录" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "用点替代下划线,“ _templates”。" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "项目基本参数" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "项目名称" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "作者名称" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "项目版本" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "项目发行版本" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "项目语种" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "源文件后缀" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "主文档名" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "启用 ePub 支持" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "扩展程序选项" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "启用 %s 扩展" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "启用多个扩展" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "创建 Makefile 和批处理文件" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "创建 Makefile" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "不创建 Makefile" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "创建批处理文件" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "不创建批处理文件" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "使用用于 Makefile/make.bat 的 Make 模式" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "不使用用于 Makefile/make.bat 的 Make 模式" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "项目模板" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "放置模板文件的模板目录" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "定义一个模板变量" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "指定了“quiet”,但是没有指定“project”和“author”。" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "错误:指定的路径不是一个目录,或是 Sphinx 文件已存在。" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "sphinx-quickstart 只会在空目录中生成文件。请指定一个新的根路径。" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "无效模板变量:%s" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "检测到过度的去缩进" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "无效的标题:%s" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "指定的行号超出范围(1-%d):%r" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "\"%s\" 和 \"%s\" 选项不能同时使用" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "包含的文件 %r 不存在或读取失败" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "用于读取包含文件 %r 的编码 %r 不正确,请重新给定 :encoding: 选项" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "对象 %r 在包含文件 %r 中不存在" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "不能在互斥的 \"lines\" 集合上使用 \"lineno-match\" 选项" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "行规范 %r:未能从包含文件 %r 中拉取行" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "节作者: " + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "模块作者: " + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "代码作者: " + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "作者: " + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "参数" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "返回" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "返回类型" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C 函数)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C 成员)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C 宏)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C 类型)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C 变量)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "函数" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "成员" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "宏" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "类型" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "变量" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "%s 新版功能" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "在 %s 版更改" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "%s 版后已移除" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "重复的引文 %s,已有引文出现在 %s" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "引文 [%s] 没有被引用过。" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "重复的声明,已经在“%s”处定义。\n定义为“%s”。" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "模板参数" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "抛出" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "%s (C++ %s)" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "类" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "联合体" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "概念" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "枚举" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "枚举子" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "重复的声明,已经在“%s”处定义。\n声明名称为“%s”。" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (內置函数)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s 方法)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (类)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (全局变量或常量)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s 属性)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "参数" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (模块)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "方法" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "数据" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "属性" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "模块" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "重复的公式标签 %s,另一实例出现在 %s" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "无效的 math_eqref_format:%r" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "关键字" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "运算符" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "对象" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "例外" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "语句" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "內置函数" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "变量" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "引发" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (在 %s 模块中)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (內置变量)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s() (在 %s 模块中)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (內置类)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (%s 中的类)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s 方法)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s 静态方法)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s 静态方法)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (%s.%s 类方法)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (%s 类方法)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s 属性)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Python 模块索引" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "模块" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "已移除" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "类方法" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "静态方法" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "交叉引用 %r 找到了多个目标:%s" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr " (已移除)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (指令)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (角色)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "指令" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "角色" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "环境变量; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "畸形的选项描述 %r,应是“opt”、“-opt args”、“--opt args”、“/opt args”或“+opt args”形式" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "术语" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "语法记号" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "引用标签" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "环境变量" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "程序选项" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "文档" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "模块索引" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "搜索页面" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "重复的标签 %s,已有标签出现在 %s" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "numfig 已禁用,忽略 :numref:。" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "没有给 %s 分配标号:%s" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "链接没有标题:%s" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "无效的 numfig_format:%s (%r)" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "无效的 numfig_format:%s" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "新配置" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "配置有变化" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "扩展有变化" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "构建环境版本与当前环境不符" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "源文件目录已变化" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "本环境与选择的构建器不兼容,请选择其他的文档树目录。" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "在 %s 中扫描文档失败:%r" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "没有注册 %r 域" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "目录树存在自引用,已忽略。" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "文档没有加入到任何目录树中" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "见 %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "参见 %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "未知的索引条目类型 %r" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "符号" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "在文档树中检测到循环引用,已忽略:%s <- %s" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "目录树引用的文档 %r 缺少标题:不会生成链接" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "toctree已包含对排除文档的引用 %r" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "目录树引用的文档 %r 不存在" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "无法读取图像文件:%s" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "无法读取图像文件 %s:%s" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "无法读取下载文件:%s" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "已经给 %s 分配了章节编号(嵌套的带编号文档树?)" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "将会创建文件 %s。" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "\n在 <MODULE_PATH> 中递归查找 Python 模块和包,然后在 <OUTPUT_PATH> 中为每个使用了\nautomodule 指令的包创建一个 reST 文件。\n\n<EXCLUDE_PATTERN> 可以排除生成符合规则的文件/目录的文档。\n\n提示:本脚本默认不会覆盖已有文件。" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "要生成文档的模块路径" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "排除的文件/目录,fnmatch 风格的规则" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "输出的目录" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "在目录树中显示的子模块最大深度(默认:4)" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "覆盖已有文件" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "遵循符号链接。配合 collective.recipe.omelette 使用尤其奏效。" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "运行脚本,但不创建文件" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "模块有各自的文档页" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "包含“_private”模块" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "目录文件名 (默认: 模块)" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "不创建目录文件" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "不创建模块/包的标题(比如当 Docstring 中已经有标题时,可以使用这个选项)" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "模块文档先于子模块文档" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "根据 PEP-0420 隐式命名空间规范解释模块路径" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "文件后缀(默认:rst)" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "用 sphinx-quickstart 生成完整项目" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "当指定了 --full 选项,把 module_path 附加到 sys.path" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "项目名称(默认:根模块名)" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "项目作者,指定了 --full 选项时使用" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "项目版本,指定了 --full 选项时使用" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "项目发行版本,指定了 --full 选项时使用,默认与 --doc-version 等同" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "扩展选项" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "%s 不是一个目录。" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "无效的正则表达式 %r 在 %s" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "已完成源文件的覆盖率测试,请在 %(outdir)s/python.txt 中查看结果。" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "coverage_c_regexes 中有无效的正则表达式 %r" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "无法导入模块 %s:%s" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "'%s' 选项中缺少 '+' 或 '-'。" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "'%s' 不是一个有效选项。" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "'%s' 不是一个有效的 pyversion 选项" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "无效的 TestCode 类型" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "已完成源文件的文档测试,请在 %(outdir)s/output.txt 中查看结果。" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "块 %s 没有代码或没有输出,出现在 %s:%s" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "y已忽略无效的文档代码:%r" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "Graphviz 指令不能同时指定内容和文件名参数" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "外部 Graphviz 文件 %r 不存在或读取失败" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "已忽略无内容的 \"graphviz 指令。" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "dot没有生成输出文件:\n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "无法运行 Dot 命令 %r (Graphviz 输出所需),请检查 graphviz_dot 配置" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "点退出错误:\n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "graphviz_output_format 必须是 'png' 或 'svg' 中之一,现为 %r" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "点 代码 %r: %s" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[图表:%s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[图表]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "转换退出时出错:\n[stderr]\n%r\n[stdout]\n%r" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "无法运行 LaTeX 命令 %r (数学公式显示必需),请检查 imgmath_latex 设置" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "无法运行 %s 命令 %r (数学公式显示必需),请检查 imgmath_%s 设置" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "显示 LaTeX %r:%s" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "内联 LaTeX %r:%s" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "公式的永久链接" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "intersphinx库存已被移动: %s -> %s" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "从中加载intersphinx库存 %s..." + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "遇到了一些库存问题,但他们有其他工作方式:" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "访问对象清单时报错:" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(在 %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "(在 %s)" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "跨 Sphinx 标识 %r 不是字符串,已忽略" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[源代码]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "待处理" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "已发现 TODO 条目:%s" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<original entry>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(<<original entry>> 见 %s,第 %d 行。)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "原始记录" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "突出显示模块代码... " + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[文档]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "模块代码" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>%s 源代码</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "概览:模块代码" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>代码可用的所有模块</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "无效的 auto%s 签名(%r)" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "格式化 %s 参数时报错:%s" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "属性 %s 不存在,在对象 %s 上" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "无法判断导入哪个模块来自动生成文档 %r(尝试在文档中使用“module”或“currentmodule”指令,或者显式给定模块名)" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "automodule 名中的“::”无意义" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "automodule %s 给定了函数签名参数或返回类型标注" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "__all__ 应是一个字符串列表,而不是 %r (出现在模块 %s 中) -- 已忽略__all__" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr ":members: 或 __all__ 提及的属性不存在:模块 %s,属性 %s" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "基类:%s" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr ":class:`%s` 的别名" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "无法导入 %s" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "无法解析名称 %s" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "无法导入对象 %s" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "autosummary 内部生成 .rst 文件,但是 source_suffix 中不包含 .rst,已跳过。" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "[autosummary] 生成 autosummary:%s" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "[autosummary] 写入 %s" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "\n用 autosummary 指令生成 ReStructuredText\n\nsphinx-autogen 是 sphinx.ext.autosummary.generate 的前端,它根据给定\n的输入文件中的 autosummary 指令生成 reStructuredText  文件\n\nautosummary 指令的格式见 Python 模块 ``sphinx.ext.autosummary`` 的文\n档,并且可以这样调出文档阅读::\n\n pydoc sphinx.ext.autosummary\n" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "用于生成 rST 文件的源文件" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "输出目录" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "默认的文件名后缀(默认:%(default)s)" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "自定义模板目录(默认:%(default)s)" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "文档导入的成员(默认:%(default)s)" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "关键字参数" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "示例" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "实际案例" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "提示" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "其他参数" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "引用" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "警告" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "生成器" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "注意" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "警告" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "危险" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "错误" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "提示" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "重要" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "注解" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "参见" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "小技巧" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "警告" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "续上页" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "下页继续" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "非字母" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "数值" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "页" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "目录" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "搜索" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "转向" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "显示源代码" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "概述" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "欢迎!这是" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "这份文档是" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "最后更新于" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "索引和表格:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "完整的内容表" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "列出所有的章节和部分" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "搜索文档" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "全局模块索引" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "快速查看所有的模块" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "所的函数,类,术语" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "索引 – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "一页的全部索引" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "按照字母的索引页" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "可能会很多" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "导航" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "在 %(docstitle)s 中搜索" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "关于这些文档" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "版权所有" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\"> 版权所有</a> %(copyright)s." + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© 版权所有 %(copyright)s." + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "最后更新于 %(last_updated)s." + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "由 <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s 创建。" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "搜索 %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "上一个主题" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "上一章" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "下一个主题" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "下一章" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "请激活 JavaScript 以开启搜索功能。" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "搜索" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "搜索结果" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "没有任何文档匹配您的搜索。请确保你输入的词拼写正确并选择了合适的分类。" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "快速搜索" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "本页" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "更改发生在版本 %(version)s— %(docstitle)s" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "自动生成的 %(version)s 版本中的更改列表" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "库更改" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "C API 更改" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "其他更改" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "永久链接至标题" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "永久链接至目标" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "隐藏搜索结果" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "搜索中" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "准备搜索……" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "搜索完成,有 %s 个页面匹配。" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr ", 在 " + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "展开边栏" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "折叠边栏" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "目录" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "发现使用了 4 列布局的索引页。可能是你所用的扩展出现了 Bug:%r" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "脚注 [%s] 没有被引用过。" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "脚注 [#] 没有被引用过。" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "译文中的脚注引用与原文不一致。原始为:{0},翻译后为:{1}" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "译文中的引用与原文不一致。原始为:{0},翻译后为:{1}" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "译文中的引文引用与原文不一致。原始为:{0},翻译后为:{1}" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "译文中的术语引用与原文不一致。原始为:{0},翻译后为:{1}" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "找到了多个目标 'any' 交叉引用的目标不唯一 %r: 可能是 %s" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "%s:%s 引用目标不存在:%%(target)s" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "%r 引用目标不存在:%%(target)s" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "无法获取远程图像:%s [%d]" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "无法获取远程图像:%s [%s]" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "未知的图像格式:%s……" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "源码中存在编码无法识别的字符,已经替换为“?”:%r" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "跳过" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "失败" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "读取时发生错误:%s,%s" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "写入时发生错误:%s,%s" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "无效的日期格式。如果你想直接输出日期字符串,请用单引号:%s" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "目录树引用的文件 %r 不存在" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "only 指令表达式求值时抛出异常:%s" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "对评估 Python 2 语法的支持已弃用,将在狮身人面像 4.0 中删除。将 %s 转换为 Python 3 语法。" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "默认角色 %s 未找到" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "未定义 %s 的 numfig_format" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "没有给 %s 节点分配 ID" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "永久链接至表格" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "永久链接至代码" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "永久链接至图片" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "永久链接至目录树" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "无法获取图像尺寸,已忽略 :scale: 选项。" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "未知的 %r toplevel_sectioning,用于 %r 类" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "过大的 :mathdepth:,已忽略。" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "文档标题不是一个单纯文本节点" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "在节、话题、表格、警示或边栏以外的位置发现标题节点" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "脚注" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "给出了表格列和 :width:选项。:宽度:被忽略。" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "无效的量纲单位 %s,已忽略。" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "发现未知的索引条目类型 %s" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[图片: %s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[图片]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "在图示之外发现了图示标题。" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "未实现的节点类型:%r" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "未知节点类型:%r" diff --git a/sphinx/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js b/sphinx/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js new file mode 100644 index 0000000..1a33982 --- /dev/null +++ b/sphinx/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "zh_Hant_TW", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">\u7248\u6b0a\u6240\u6709</a> %(copyright)s\u3002", "© Copyright %(copyright)s.": "© \u7248\u6b0a\u6240\u6709 %(copyright)s\u3002", ", in ": " \u65bc ", "About these documents": "\u95dc\u65bc\u9019\u4e9b\u6587\u4ef6", "Automatically generated list of changes in version %(version)s": "\u81ea\u52d5\u7522\u751f\u7684 %(version)s \u7248\u672c\u6539\u8b8a\u5217\u8868", "C API changes": "C API \u6539\u8b8a", "Changes in Version %(version)s — %(docstitle)s": "\u65bc %(version)s \u7248\u672c\u4e2d\u7684\u6240\u6709\u66f4\u8b8a — %(docstitle)s", "Collapse sidebar": "\u6536\u5408\u5074\u908a\u6b04", "Complete Table of Contents": "\u5b8c\u6574\u76ee\u9304", "Contents": "\u5167\u5bb9", "Copyright": "\u7248\u6b0a\u6240\u6709", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u4f7f\u7528 <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s \u5275\u5efa\u3002", "Expand sidebar": "\u5c55\u958b\u5074\u908a\u6b04", "Full index on one page": "\u55ae\u9801\u5b8c\u6574\u7d22\u5f15", "General Index": "\u7e3d\u7d22\u5f15", "Global Module Index": "\u5168\u57df\u6a21\u7d44\u7d22\u5f15", "Go": "\u641c", "Hide Search Matches": "\u96b1\u85cf\u7b26\u5408\u641c\u5c0b", "Index": "\u7d22\u5f15", "Index – %(key)s": "\u7d22\u5f15 – %(key)s", "Index pages by letter": "\u7d22\u5f15\u9801\u9762\u6309\u5b57\u6bcd", "Indices and tables:": "\u7d22\u5f15\u8207\u8868\u683c\uff1a", "Last updated on %(last_updated)s.": "\u6700\u5f8c\u66f4\u65b0\u65bc %(last_updated)s\u3002", "Library changes": "\u7a0b\u5f0f\u5eab\u7684\u6539\u8b8a", "Navigation": "\u700f\u89bd", "Next topic": "\u4e0b\u500b\u4e3b\u984c", "Other changes": "\u5176\u4ed6\u6539\u8b8a", "Overview": "\u6982\u8981", "Permalink to this definition": "\u672c\u5b9a\u7fa9\u7684\u6c38\u4e45\u9023\u7d50", "Permalink to this headline": "\u672c\u6a19\u984c\u7684\u6c38\u4e45\u9023\u7d50", "Please activate JavaScript to enable the search\n functionality.": "\u8acb\u555f\u7528 Javascript \u4ee5\u958b\u555f\u641c\u5c0b\u529f\u80fd\u3002", "Preparing search...": "\u6e96\u5099\u641c\u5c0b\u4e2d\u2026", "Previous topic": "\u4e0a\u500b\u4e3b\u984c", "Quick search": "\u5feb\u901f\u641c\u5c0b", "Search": "\u641c\u5c0b", "Search Page": "\u641c\u5c0b\u9801\u9762", "Search Results": "\u641c\u5c0b\u7d50\u679c", "Search finished, found %s page(s) matching the search query.": "\u641c\u5c0b\u5b8c\u6210\uff0c\u5171\u627e\u5230 %s \u9801\u9762\u6eff\u8db3\u641c\u5c0b\u689d\u4ef6\u3002", "Search within %(docstitle)s": "\u5728 %(docstitle)s \u4e2d\u641c\u5c0b", "Searching": "\u641c\u5c0b\u4e2d", "Searching for multiple words only shows matches that contain\n all words.": "", "Show Source": "\u986f\u793a\u539f\u59cb\u78bc", "Table of Contents": "", "This Page": "\u672c\u9801", "Welcome! This is": "\u6b61\u8fce\uff01\u672c", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u4f60\u7684\u641c\u5c0b\u627e\u4e0d\u5230\u4efb\u4f55\u6eff\u8db3\u689d\u4ef6\u7684\u6587\u4ef6\u3002\u8acb\u78ba\u5b9a\u662f\u5426\u6240\u6709\u7684\u641c\u5c0b\u8a5e\u90fd\u6b63\u78ba\u5730\u62fc\u5beb\u4e14\u4f60\u5df2\u9078\u64c7\u8db3\u5920\u7684\u5206\u985e\u3002", "all functions, classes, terms": "\u6240\u6709\u51fd\u5f0f\u3001\u985e\u5225\u3001\u8853\u8a9e", "can be huge": "\u53ef\u80fd\u6703\u5f88\u5927", "last updated": "\u6700\u5f8c\u66f4\u65b0\u65bc", "lists all sections and subsections": "\u5217\u51fa\u6240\u6709\u6bb5\u843d\u8207\u5b50\u6bb5\u843d", "next chapter": "\u4e0b\u4e00\u7ae0", "previous chapter": "\u4e0a\u4e00\u7ae0", "quick access to all modules": "\u5feb\u901f\u524d\u5f80\u6240\u6709\u7684\u6a21\u7d44", "search": "\u641c\u5c0b", "search this documentation": "\u641c\u5c0b\u672c\u8aaa\u660e\u6587\u4ef6", "the documentation for": "\u8aaa\u660e\u6587\u4ef6\u4ecb\u7d39"}, "plural_expr": "0"}); \ No newline at end of file diff --git a/sphinx/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po b/sphinx/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po new file mode 100644 index 0000000..fc603b6 --- /dev/null +++ b/sphinx/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po @@ -0,0 +1,3471 @@ +# Translations template for Sphinx. +# Copyright (C) 2020 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +# Adrian Liaw <adrianliaw2000@gmail.com>, 2018 +# Fred Lin <gasolin@gmail.com>, 2008 +# Game Arming <fleasw@yahoo.com.tw>, 2017 +# Hsiaoming Yang <me@lepture.com>, 2018 +# Liang-Bo Wang <me@liang2.tw>, 2016 +# Liang-Bo Wang <me@liang2.tw>, 2016-2017 +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2020-03-14 19:50+0900\n" +"PO-Revision-Date: 2020-03-14 10:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Chinese (Taiwan) (http://www.transifex.com/sphinx-doc/sphinx-1/language/zh_TW/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: sphinx/application.py:159 +#, python-format +msgid "config directory doesn't contain a conf.py file (%s)" +msgstr "" + +#: sphinx/application.py:163 +#, python-format +msgid "Cannot find source directory (%s)" +msgstr "" + +#: sphinx/application.py:167 +msgid "Source directory and destination directory cannot be identical" +msgstr "" + +#: sphinx/application.py:198 +#, python-format +msgid "Running Sphinx v%s" +msgstr "" + +#: sphinx/application.py:202 +msgid "" +"For security reason, parallel mode is disabled on macOS and python3.8 and " +"above. For more details, please read https://github.com/sphinx-" +"doc/sphinx/issues/6803" +msgstr "" + +#: sphinx/application.py:226 +#, python-format +msgid "" +"This project needs at least Sphinx v%s and therefore cannot be built with " +"this version." +msgstr "本專案需要 Sphinx v%s 版本以上,故無法以現版本編譯。" + +#: sphinx/application.py:246 +msgid "making output directory" +msgstr "" + +#: sphinx/application.py:251 sphinx/registry.py:399 +#, python-format +msgid "while setting up extension %s:" +msgstr "" + +#: sphinx/application.py:257 +msgid "" +"'setup' as currently defined in conf.py isn't a Python callable. Please " +"modify its definition to make it a callable function. This is needed for " +"conf.py to behave as a Sphinx extension." +msgstr "目前在 conf.py 裡指定的 'setup' 並非一個 Python 的可呼叫物件。請修改它並使它成為一個可呼叫的函式。若要使 conf.py 以 Sphinx 擴充套件的方式運作,這個修改是必須的。" + +#: sphinx/application.py:282 +#, python-format +msgid "loading translations [%s]... " +msgstr "" + +#: sphinx/application.py:296 sphinx/util/__init__.py:646 +msgid "done" +msgstr "完成" + +#: sphinx/application.py:298 +msgid "not available for built-in messages" +msgstr "" + +#: sphinx/application.py:308 +msgid "loading pickled environment" +msgstr "" + +#: sphinx/application.py:313 +#, python-format +msgid "failed: %s" +msgstr "失敗:%s" + +#: sphinx/application.py:321 +msgid "No builder selected, using default: html" +msgstr "沒有指定 builder,使用預設:html" + +#: sphinx/application.py:349 +msgid "succeeded" +msgstr "成功" + +#: sphinx/application.py:350 +msgid "finished with problems" +msgstr "完成問題" + +#: sphinx/application.py:354 +#, python-format +msgid "build %s, %s warning (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:356 +#, python-format +msgid "build %s, %s warnings (with warnings treated as errors)." +msgstr "" + +#: sphinx/application.py:359 +#, python-format +msgid "build %s, %s warning." +msgstr "" + +#: sphinx/application.py:361 +#, python-format +msgid "build %s, %s warnings." +msgstr "" + +#: sphinx/application.py:365 +#, python-format +msgid "build %s." +msgstr "" + +#: sphinx/application.py:554 +#, python-format +msgid "node class %r is already registered, its visitors will be overridden" +msgstr "" + +#: sphinx/application.py:628 +#, python-format +msgid "directive %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:646 sphinx/application.py:664 +#, python-format +msgid "role %r is already registered, it will be overridden" +msgstr "" + +#: sphinx/application.py:1124 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel reading, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1128 +#, python-format +msgid "the %s extension is not safe for parallel reading" +msgstr "" + +#: sphinx/application.py:1131 +#, python-format +msgid "" +"the %s extension does not declare if it is safe for parallel writing, " +"assuming it isn't - please ask the extension author to check and make it " +"explicit" +msgstr "" + +#: sphinx/application.py:1135 +#, python-format +msgid "the %s extension is not safe for parallel writing" +msgstr "" + +#: sphinx/application.py:1143 sphinx/application.py:1147 +#, python-format +msgid "doing serial %s" +msgstr "" + +#: sphinx/config.py:191 +#, python-format +msgid "" +"cannot override dictionary config setting %r, ignoring (use %r to set " +"individual elements)" +msgstr "" + +#: sphinx/config.py:200 +#, python-format +msgid "invalid number %r for config value %r, ignoring" +msgstr "" + +#: sphinx/config.py:205 +#, python-format +msgid "cannot override config setting %r with unsupported type, ignoring" +msgstr "" + +#: sphinx/config.py:233 +#, python-format +msgid "unknown config value %r in override, ignoring" +msgstr "" + +#: sphinx/config.py:250 +#, python-format +msgid "No such config value: %s" +msgstr "" + +#: sphinx/config.py:274 +#, python-format +msgid "Config value %r already present" +msgstr "" + +#: sphinx/config.py:321 +#, python-format +msgid "There is a syntax error in your configuration file: %s\n" +msgstr "" + +#: sphinx/config.py:324 +msgid "" +"The configuration file (or one of the modules it imports) called sys.exit()" +msgstr "" + +#: sphinx/config.py:331 +#, python-format +msgid "" +"There is a programmable error in your configuration file:\n" +"\n" +"%s" +msgstr "" + +#: sphinx/config.py:357 +#, python-format +msgid "" +"The config value `source_suffix' expects a string, list of strings, or " +"dictionary. But `%r' is given." +msgstr "" + +#: sphinx/config.py:364 +#, python-format +msgid "Section %s" +msgstr "段落 %s" + +#: sphinx/config.py:365 +#, python-format +msgid "Fig. %s" +msgstr "圖 %s" + +#: sphinx/config.py:366 +#, python-format +msgid "Table %s" +msgstr "表 %s" + +#: sphinx/config.py:367 +#, python-format +msgid "Listing %s" +msgstr "程式 %s" + +#: sphinx/config.py:404 +msgid "" +"The config value `{name}` has to be a one of {candidates}, but `{current}` " +"is given." +msgstr "" + +#: sphinx/config.py:422 +msgid "" +"The config value `{name}' has type `{current.__name__}'; expected " +"{permitted}." +msgstr "" + +#: sphinx/config.py:435 +msgid "" +"The config value `{name}' has type `{current.__name__}', defaults to " +"`{default.__name__}'." +msgstr "" + +#: sphinx/config.py:453 +#, python-format +msgid "" +"the config value %r is set to a string with non-ASCII characters; this can " +"lead to Unicode errors occurring. Please use Unicode strings, e.g. %r." +msgstr "" + +#: sphinx/config.py:461 +#, python-format +msgid "primary_domain %r not found, ignored." +msgstr "找不到 primary_domain:%r,略過。" + +#: sphinx/config.py:473 +msgid "" +"Since v2.0, Sphinx uses \"index\" as master_doc by default. Please add " +"\"master_doc = 'contents'\" to your conf.py." +msgstr "" + +#: sphinx/events.py:71 +#, python-format +msgid "Event %r already present" +msgstr "" + +#: sphinx/events.py:77 +#, python-format +msgid "Unknown event name: %s" +msgstr "" + +#: sphinx/extension.py:51 +#, python-format +msgid "" +"The %s extension is required by needs_extensions settings, but it is not " +"loaded." +msgstr "" + +#: sphinx/extension.py:56 +#, python-format +msgid "" +"This project needs the extension %s at least in version %s and therefore " +"cannot be built with the loaded version (%s)." +msgstr "" + +#: sphinx/highlighting.py:121 +#, python-format +msgid "Pygments lexer name %r is not known" +msgstr "" + +#: sphinx/highlighting.py:147 +#, python-format +msgid "Could not lex literal_block as \"%s\". Highlighting skipped." +msgstr "" + +#: sphinx/project.py:61 +msgid "document not readable. Ignored." +msgstr "" + +#: sphinx/registry.py:126 +#, python-format +msgid "Builder class %s has no \"name\" attribute" +msgstr "" + +#: sphinx/registry.py:128 +#, python-format +msgid "Builder %r already exists (in module %s)" +msgstr "" + +#: sphinx/registry.py:141 +#, python-format +msgid "Builder name %s not registered or available through entry point" +msgstr "" + +#: sphinx/registry.py:148 +#, python-format +msgid "Builder name %s not registered" +msgstr "" + +#: sphinx/registry.py:155 +#, python-format +msgid "domain %s already registered" +msgstr "" + +#: sphinx/registry.py:178 sphinx/registry.py:191 sphinx/registry.py:202 +#, python-format +msgid "domain %s not yet registered" +msgstr "" + +#: sphinx/registry.py:182 +#, python-format +msgid "The %r directive is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:194 +#, python-format +msgid "The %r role is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:205 +#, python-format +msgid "The %r index is already registered to domain %s" +msgstr "" + +#: sphinx/registry.py:229 +#, python-format +msgid "The %r object_type is already registered" +msgstr "" + +#: sphinx/registry.py:249 +#, python-format +msgid "The %r crossref_type is already registered" +msgstr "" + +#: sphinx/registry.py:256 +#, python-format +msgid "source_suffix %r is already registered" +msgstr "" + +#: sphinx/registry.py:266 +#, python-format +msgid "source_parser for %r is already registered" +msgstr "" + +#: sphinx/registry.py:275 +#, python-format +msgid "Source parser for %s not registered" +msgstr "" + +#: sphinx/registry.py:301 +#, python-format +msgid "Translator for %r already exists" +msgstr "" + +#: sphinx/registry.py:313 +#, python-format +msgid "kwargs for add_node() must be a (visit, depart) function tuple: %r=%r" +msgstr "" + +#: sphinx/registry.py:374 +#, python-format +msgid "enumerable_node %r already registered" +msgstr "" + +#: sphinx/registry.py:383 +#, python-format +msgid "math renderer %s is already registred" +msgstr "" + +#: sphinx/registry.py:393 +#, python-format +msgid "" +"the extension %r was already merged with Sphinx since version %s; this " +"extension is ignored." +msgstr "" + +#: sphinx/registry.py:404 +msgid "Original exception:\n" +msgstr "" + +#: sphinx/registry.py:405 +#, python-format +msgid "Could not import extension %s" +msgstr "無法引入擴充套件 %s" + +#: sphinx/registry.py:409 +#, python-format +msgid "" +"extension %r has no setup() function; is it really a Sphinx extension " +"module?" +msgstr "" + +#: sphinx/registry.py:418 +#, python-format +msgid "" +"The %s extension used by this project needs at least Sphinx v%s; it " +"therefore cannot be built with this version." +msgstr "" + +#: sphinx/registry.py:426 +#, python-format +msgid "" +"extension %r returned an unsupported object from its setup() function; it " +"should return None or a metadata dictionary" +msgstr "" + +#: sphinx/roles.py:221 sphinx/roles.py:271 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "Python Enhancement Proposals; PEP %s" + +#: sphinx/theming.py:78 +#, python-format +msgid "theme %r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/theming.py:80 +#, python-format +msgid "theme %r doesn't have \"inherit\" setting" +msgstr "" + +#: sphinx/theming.py:86 +#, python-format +msgid "no theme named %r found, inherited by %r" +msgstr "" + +#: sphinx/theming.py:109 +#, python-format +msgid "setting %s.%s occurs in none of the searched theme configs" +msgstr "" + +#: sphinx/theming.py:128 +#, python-format +msgid "unsupported theme option %r given" +msgstr "" + +#: sphinx/theming.py:228 +#, python-format +msgid "file %r on theme path is not a valid zipfile or contains no theme" +msgstr "" + +#: sphinx/theming.py:243 +msgid "" +"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " +"install it manually.(pip install sphinx_rtd_theme)" +msgstr "" + +#: sphinx/theming.py:247 +#, python-format +msgid "no theme named %r found (missing theme.conf?)" +msgstr "" + +#: sphinx/builders/__init__.py:195 +#, python-format +msgid "a suitable image for %s builder not found: %s (%s)" +msgstr "" + +#: sphinx/builders/__init__.py:199 +#, python-format +msgid "a suitable image for %s builder not found: %s" +msgstr "" + +#: sphinx/builders/__init__.py:219 +msgid "building [mo]: " +msgstr "" + +#: sphinx/builders/__init__.py:220 sphinx/builders/__init__.py:539 +#: sphinx/builders/__init__.py:565 +msgid "writing output... " +msgstr "" + +#: sphinx/builders/__init__.py:228 +#, python-format +msgid "all of %d po files" +msgstr "" + +#: sphinx/builders/__init__.py:246 +#, python-format +msgid "targets for %d po files that are specified" +msgstr "" + +#: sphinx/builders/__init__.py:253 +#, python-format +msgid "targets for %d po files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:260 +msgid "all source files" +msgstr "" + +#: sphinx/builders/__init__.py:273 +#, python-format +msgid "" +"file %r given on command line is not under the source directory, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:277 +#, python-format +msgid "file %r given on command line does not exist, ignoring" +msgstr "" + +#: sphinx/builders/__init__.py:288 +#, python-format +msgid "%d source files given on command line" +msgstr "" + +#: sphinx/builders/__init__.py:298 +#, python-format +msgid "targets for %d source files that are out of date" +msgstr "" + +#: sphinx/builders/__init__.py:307 sphinx/builders/gettext.py:267 +#, python-format +msgid "building [%s]: " +msgstr "" + +#: sphinx/builders/__init__.py:314 +msgid "looking for now-outdated files... " +msgstr "" + +#: sphinx/builders/__init__.py:319 +#, python-format +msgid "%d found" +msgstr "" + +#: sphinx/builders/__init__.py:321 +msgid "none found" +msgstr "" + +#: sphinx/builders/__init__.py:326 +msgid "pickling environment" +msgstr "" + +#: sphinx/builders/__init__.py:332 +msgid "checking consistency" +msgstr "" + +#: sphinx/builders/__init__.py:336 +msgid "no targets are out of date." +msgstr "" + +#: sphinx/builders/__init__.py:375 +msgid "updating environment: " +msgstr "" + +#: sphinx/builders/__init__.py:396 +#, python-format +msgid "%s added, %s changed, %s removed" +msgstr "" + +#: sphinx/builders/__init__.py:434 sphinx/builders/__init__.py:461 +msgid "reading sources... " +msgstr "" + +#: sphinx/builders/__init__.py:466 sphinx/builders/__init__.py:575 +msgid "waiting for workers..." +msgstr "" + +#: sphinx/builders/__init__.py:517 +#, python-format +msgid "docnames to write: %s" +msgstr "" + +#: sphinx/builders/__init__.py:526 sphinx/builders/singlehtml.py:155 +msgid "preparing documents" +msgstr "" + +#: sphinx/builders/_epub_base.py:211 +#, python-format +msgid "duplicated ToC entry found: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:395 sphinx/builders/html/__init__.py:688 +#: sphinx/builders/latex/__init__.py:416 sphinx/builders/texinfo.py:178 +msgid "copying images... " +msgstr "" + +#: sphinx/builders/_epub_base.py:402 +#, python-format +msgid "cannot read image file %r: copying it instead" +msgstr "" + +#: sphinx/builders/_epub_base.py:408 sphinx/builders/html/__init__.py:696 +#: sphinx/builders/latex/__init__.py:424 sphinx/builders/texinfo.py:187 +#, python-format +msgid "cannot copy image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:425 +#, python-format +msgid "cannot write image file %r: %s" +msgstr "" + +#: sphinx/builders/_epub_base.py:435 +msgid "Pillow not found - copying image files" +msgstr "" + +#: sphinx/builders/_epub_base.py:467 sphinx/builders/_epub_base.py:479 +#: sphinx/builders/_epub_base.py:513 sphinx/builders/_epub_base.py:694 +#: sphinx/builders/_epub_base.py:726 sphinx/builders/epub3.py:173 +#, python-format +msgid "writing %s file..." +msgstr "" + +#: sphinx/builders/_epub_base.py:539 +#, python-format +msgid "unknown mimetype for %s, ignoring" +msgstr "" + +#: sphinx/builders/changes.py:36 +#, python-format +msgid "The overview file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/changes.py:62 +#, python-format +msgid "no changes in version %s." +msgstr "" + +#: sphinx/builders/changes.py:64 +msgid "writing summary file..." +msgstr "" + +#: sphinx/builders/changes.py:80 +msgid "Builtins" +msgstr "內建" + +#: sphinx/builders/changes.py:82 +msgid "Module level" +msgstr "模組層次" + +#: sphinx/builders/changes.py:126 +msgid "copying source files..." +msgstr "" + +#: sphinx/builders/changes.py:133 +#, python-format +msgid "could not read %r for changelog creation" +msgstr "" + +#: sphinx/builders/dummy.py:22 +msgid "The dummy builder generates no files." +msgstr "" + +#: sphinx/builders/epub3.py:65 +#, python-format +msgid "The ePub file is in %(outdir)s." +msgstr "" + +#: sphinx/builders/epub3.py:200 +msgid "conf value \"epub_language\" (or \"language\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:204 +msgid "conf value \"epub_uid\" should be XML NAME for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:207 +msgid "conf value \"epub_title\" (or \"html_title\") should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:211 +msgid "conf value \"epub_author\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:214 +msgid "conf value \"epub_contributor\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:217 +msgid "conf value \"epub_description\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:220 +msgid "conf value \"epub_publisher\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:223 +msgid "conf value \"epub_copyright\" (or \"copyright\")should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:227 +msgid "conf value \"epub_identifier\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:230 +msgid "conf value \"version\" should not be empty for EPUB3" +msgstr "" + +#: sphinx/builders/epub3.py:244 sphinx/builders/html/__init__.py:1060 +#, python-format +msgid "invalid css_file: %r, ignored" +msgstr "" + +#: sphinx/builders/gettext.py:246 +#, python-format +msgid "The message catalogs are in %(outdir)s." +msgstr "" + +#: sphinx/builders/gettext.py:268 +#, python-format +msgid "targets for %d template files" +msgstr "" + +#: sphinx/builders/gettext.py:272 +msgid "reading templates... " +msgstr "" + +#: sphinx/builders/gettext.py:300 +msgid "writing message catalogs... " +msgstr "" + +#: sphinx/builders/linkcheck.py:78 +#, python-format +msgid "Look for any errors in the above output or in %(outdir)s/output.txt" +msgstr "" + +#: sphinx/builders/linkcheck.py:150 +#, python-format +msgid "Anchor '%s' not found" +msgstr "" + +#: sphinx/builders/linkcheck.py:259 +#, python-format +msgid "broken link: %s (%s)" +msgstr "" + +#: sphinx/builders/manpage.py:40 +#, python-format +msgid "The manual pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/manpage.py:47 +msgid "no \"man_pages\" config value found; no manual pages will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:292 sphinx/builders/manpage.py:58 +#: sphinx/builders/singlehtml.py:163 sphinx/builders/texinfo.py:111 +msgid "writing" +msgstr "" + +#: sphinx/builders/manpage.py:69 +#, python-format +msgid "\"man_pages\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/singlehtml.py:36 +#, python-format +msgid "The HTML page is in %(outdir)s." +msgstr "" + +#: sphinx/builders/singlehtml.py:158 +msgid "assembling single document" +msgstr "" + +#: sphinx/builders/singlehtml.py:176 +msgid "writing additional files" +msgstr "" + +#: sphinx/builders/texinfo.py:47 +#, python-format +msgid "The Texinfo files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/texinfo.py:49 +msgid "" +"\n" +"Run 'make' in that directory to run these through makeinfo\n" +"(use 'make info' here to do that automatically)." +msgstr "" + +#: sphinx/builders/texinfo.py:77 +msgid "no \"texinfo_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/texinfo.py:85 +#, python-format +msgid "\"texinfo_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:275 sphinx/builders/texinfo.py:107 +#, python-format +msgid "processing %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:343 sphinx/builders/texinfo.py:154 +msgid "resolving references..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:353 sphinx/builders/texinfo.py:163 +msgid " (in " +msgstr "(於" + +#: sphinx/builders/texinfo.py:192 +msgid "copying Texinfo support files" +msgstr "" + +#: sphinx/builders/texinfo.py:196 +#, python-format +msgid "error writing file Makefile: %s" +msgstr "" + +#: sphinx/builders/text.py:30 +#, python-format +msgid "The text files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:1013 sphinx/builders/text.py:77 +#: sphinx/builders/xml.py:96 +#, python-format +msgid "error writing file %s: %s" +msgstr "" + +#: sphinx/builders/xml.py:40 +#, python-format +msgid "The XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/xml.py:108 +#, python-format +msgid "The pseudo-XML files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:144 +#, python-format +msgid "build info file is broken: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:176 +#, python-format +msgid "The HTML pages are in %(outdir)s." +msgstr "" + +#: sphinx/builders/html/__init__.py:344 +#, python-format +msgid "Failed to read build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:430 sphinx/builders/latex/__init__.py:192 +#: sphinx/transforms/__init__.py:116 sphinx/writers/manpage.py:112 +#: sphinx/writers/texinfo.py:237 +#, python-format +msgid "%b %d, %Y" +msgstr "%Y 年 %m 月 %d 日" + +#: sphinx/builders/html/__init__.py:439 +msgid "html_use_opensearch config value must now be a string" +msgstr "" + +#: sphinx/builders/html/__init__.py:445 sphinx/themes/basic/defindex.html:29 +msgid "General Index" +msgstr "總索引" + +#: sphinx/builders/html/__init__.py:445 +msgid "index" +msgstr "索引" + +#: sphinx/builders/html/__init__.py:509 +msgid "next" +msgstr "下一頁" + +#: sphinx/builders/html/__init__.py:518 +msgid "previous" +msgstr "上一頁" + +#: sphinx/builders/html/__init__.py:612 +msgid "generating indices" +msgstr "" + +#: sphinx/builders/html/__init__.py:627 +msgid "writing additional pages" +msgstr "" + +#: sphinx/builders/html/__init__.py:706 +msgid "copying downloadable files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:714 +#, python-format +msgid "cannot copy downloadable file %r: %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:762 +msgid "copying static files... " +msgstr "" + +#: sphinx/builders/html/__init__.py:778 +#, python-format +msgid "cannot copy static file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:783 +msgid "copying extra files" +msgstr "" + +#: sphinx/builders/html/__init__.py:789 +#, python-format +msgid "cannot copy extra file %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:796 +#, python-format +msgid "Failed to write build info file: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:844 +msgid "" +"search index couldn't be loaded, but not all documents will be built: the " +"index will be incomplete." +msgstr "" + +#: sphinx/builders/html/__init__.py:913 +#, python-format +msgid "page %s matches two patterns in html_sidebars: %r and %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:996 +#, python-format +msgid "" +"a Unicode error occurred when rendering the page %s. Please make sure all " +"config values that contain non-ASCII content are Unicode strings." +msgstr "" + +#: sphinx/builders/html/__init__.py:1001 +#, python-format +msgid "" +"An error happened in rendering the page %s.\n" +"Reason: %r" +msgstr "" + +#: sphinx/builders/html/__init__.py:1030 +msgid "dumping object inventory" +msgstr "" + +#: sphinx/builders/html/__init__.py:1035 +#, python-format +msgid "dumping search index in %s" +msgstr "" + +#: sphinx/builders/html/__init__.py:1077 +#, python-format +msgid "invalid js_file: %r, ignored" +msgstr "" + +#: sphinx/builders/html/__init__.py:1118 +msgid "Many math_renderers are registered. But no math_renderer is selected." +msgstr "" + +#: sphinx/builders/html/__init__.py:1121 +#, python-format +msgid "Unknown math_renderer %r is given." +msgstr "" + +#: sphinx/builders/html/__init__.py:1129 +#, python-format +msgid "html_extra_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1133 +#, python-format +msgid "html_extra_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1142 +#, python-format +msgid "html_static_path entry %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1146 +#, python-format +msgid "html_static_path entry %r is placed inside outdir" +msgstr "" + +#: sphinx/builders/html/__init__.py:1153 sphinx/builders/latex/__init__.py:428 +#, python-format +msgid "logo file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1160 +#, python-format +msgid "favicon file %r does not exist" +msgstr "" + +#: sphinx/builders/html/__init__.py:1179 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s 說明文件" + +#: sphinx/builders/latex/__init__.py:115 +#, python-format +msgid "The LaTeX files are in %(outdir)s." +msgstr "" + +#: sphinx/builders/latex/__init__.py:117 +msgid "" +"\n" +"Run 'make' in that directory to run these through (pdf)latex\n" +"(use `make latexpdf' here to do that automatically)." +msgstr "" + +#: sphinx/builders/latex/__init__.py:154 +msgid "no \"latex_documents\" config value found; no documents will be written" +msgstr "" + +#: sphinx/builders/latex/__init__.py:162 +#, python-format +msgid "\"latex_documents\" config value references unknown document %s" +msgstr "" + +#: sphinx/builders/latex/__init__.py:199 sphinx/domains/std.py:586 +#: sphinx/templates/latex/latex.tex_t:68 +#: sphinx/themes/basic/genindex-single.html:19 +#: sphinx/themes/basic/genindex-single.html:36 +#: sphinx/themes/basic/genindex-split.html:10 +#: sphinx/themes/basic/genindex-split.html:13 +#: sphinx/themes/basic/genindex.html:19 sphinx/themes/basic/genindex.html:22 +#: sphinx/themes/basic/genindex.html:44 sphinx/themes/basic/layout.html:51 +#: sphinx/writers/texinfo.py:502 +msgid "Index" +msgstr "索引" + +#: sphinx/builders/latex/__init__.py:202 sphinx/templates/latex/latex.tex_t:55 +msgid "Release" +msgstr "發佈" + +#: sphinx/builders/latex/__init__.py:209 sphinx/writers/latex.py:388 +#, python-format +msgid "no Babel option known for language %r" +msgstr "" + +#: sphinx/builders/latex/__init__.py:374 +msgid "copying TeX support files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:394 +msgid "copying TeX support files..." +msgstr "" + +#: sphinx/builders/latex/__init__.py:407 +msgid "copying additional files" +msgstr "" + +#: sphinx/builders/latex/__init__.py:489 +#, python-format +msgid "Unknown configure key: latex_elements[%r], ignored." +msgstr "" + +#: sphinx/builders/latex/theming.py:79 +#, python-format +msgid "%r doesn't have \"theme\" setting" +msgstr "" + +#: sphinx/builders/latex/theming.py:81 +#, python-format +msgid "%r doesn't have \"%s\" setting" +msgstr "" + +#: sphinx/cmd/build.py:34 +msgid "Exception occurred while building, starting debugger:" +msgstr "" + +#: sphinx/cmd/build.py:44 +msgid "Interrupted!" +msgstr "" + +#: sphinx/cmd/build.py:46 +msgid "reST markup error:" +msgstr "" + +#: sphinx/cmd/build.py:52 +msgid "Encoding error:" +msgstr "" + +#: sphinx/cmd/build.py:55 sphinx/cmd/build.py:70 +#, python-format +msgid "" +"The full traceback has been saved in %s, if you want to report the issue to " +"the developers." +msgstr "" + +#: sphinx/cmd/build.py:59 +msgid "Recursion error:" +msgstr "" + +#: sphinx/cmd/build.py:62 +msgid "" +"This can happen with very large or deeply nested source files. You can " +"carefully increase the default Python recursion limit of 1000 in conf.py " +"with e.g.:" +msgstr "" + +#: sphinx/cmd/build.py:67 +msgid "Exception occurred:" +msgstr "" + +#: sphinx/cmd/build.py:73 +msgid "" +"Please also report this if it was a user error, so that a better error " +"message can be provided next time." +msgstr "" + +#: sphinx/cmd/build.py:76 +msgid "" +"A bug report can be filed in the tracker at <https://github.com/sphinx-" +"doc/sphinx/issues>. Thanks!" +msgstr "" + +#: sphinx/cmd/build.py:92 +msgid "job number should be a positive number" +msgstr "" + +#: sphinx/cmd/build.py:100 sphinx/cmd/quickstart.py:478 +#: sphinx/ext/apidoc.py:350 sphinx/ext/autosummary/generate.py:434 +msgid "For more information, visit <http://sphinx-doc.org/>." +msgstr "" + +#: sphinx/cmd/build.py:101 +msgid "" +"\n" +"Generate documentation from source files.\n" +"\n" +"sphinx-build generates documentation from the files in SOURCEDIR and places it\n" +"in OUTPUTDIR. It looks for 'conf.py' in SOURCEDIR for the configuration\n" +"settings. The 'sphinx-quickstart' tool may be used to generate template files,\n" +"including 'conf.py'\n" +"\n" +"sphinx-build can create documentation in different formats. A format is\n" +"selected by specifying the builder name on the command line; it defaults to\n" +"HTML. Builders can also perform other tasks related to documentation\n" +"processing.\n" +"\n" +"By default, everything that is outdated is built. Output only for selected\n" +"files can be built by specifying individual filenames.\n" +msgstr "" + +#: sphinx/cmd/build.py:122 +msgid "path to documentation source files" +msgstr "" + +#: sphinx/cmd/build.py:124 +msgid "path to output directory" +msgstr "" + +#: sphinx/cmd/build.py:126 +msgid "a list of specific files to rebuild. Ignored if -a is specified" +msgstr "" + +#: sphinx/cmd/build.py:129 +msgid "general options" +msgstr "" + +#: sphinx/cmd/build.py:132 +msgid "builder to use (default: html)" +msgstr "" + +#: sphinx/cmd/build.py:134 +msgid "write all files (default: only write new and changed files)" +msgstr "" + +#: sphinx/cmd/build.py:137 +msgid "don't use a saved environment, always read all files" +msgstr "" + +#: sphinx/cmd/build.py:140 +msgid "" +"path for the cached environment and doctree files (default: " +"OUTPUTDIR/.doctrees)" +msgstr "" + +#: sphinx/cmd/build.py:143 +msgid "" +"build in parallel with N processes where possible (special value \"auto\" " +"will set N to cpu-count)" +msgstr "" + +#: sphinx/cmd/build.py:147 +msgid "" +"path where configuration file (conf.py) is located (default: same as " +"SOURCEDIR)" +msgstr "" + +#: sphinx/cmd/build.py:150 +msgid "use no config file at all, only -D options" +msgstr "" + +#: sphinx/cmd/build.py:153 +msgid "override a setting in configuration file" +msgstr "" + +#: sphinx/cmd/build.py:156 +msgid "pass a value into HTML templates" +msgstr "" + +#: sphinx/cmd/build.py:159 +msgid "define tag: include \"only\" blocks with TAG" +msgstr "" + +#: sphinx/cmd/build.py:161 +msgid "nit-picky mode, warn about all missing references" +msgstr "" + +#: sphinx/cmd/build.py:164 +msgid "console output options" +msgstr "" + +#: sphinx/cmd/build.py:166 +msgid "increase verbosity (can be repeated)" +msgstr "" + +#: sphinx/cmd/build.py:168 sphinx/ext/apidoc.py:373 +msgid "no output on stdout, just warnings on stderr" +msgstr "" + +#: sphinx/cmd/build.py:170 +msgid "no output at all, not even warnings" +msgstr "" + +#: sphinx/cmd/build.py:173 +msgid "do emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:176 +msgid "do not emit colored output (default: auto-detect)" +msgstr "" + +#: sphinx/cmd/build.py:179 +msgid "write warnings (and errors) to given file" +msgstr "" + +#: sphinx/cmd/build.py:181 +msgid "turn warnings into errors" +msgstr "" + +#: sphinx/cmd/build.py:183 +msgid "with -W, keep going when getting warnings" +msgstr "" + +#: sphinx/cmd/build.py:185 +msgid "show full traceback on exception" +msgstr "" + +#: sphinx/cmd/build.py:187 +msgid "run Pdb on exception" +msgstr "" + +#: sphinx/cmd/build.py:219 +#, python-format +msgid "cannot find files %r" +msgstr "" + +#: sphinx/cmd/build.py:222 +msgid "cannot combine -a option and filenames" +msgstr "" + +#: sphinx/cmd/build.py:241 +#, python-format +msgid "cannot open warning file %r: %s" +msgstr "" + +#: sphinx/cmd/build.py:251 +msgid "-D option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/build.py:258 +msgid "-A option argument must be in the form name=value" +msgstr "" + +#: sphinx/cmd/quickstart.py:49 +msgid "automatically insert docstrings from modules" +msgstr "" + +#: sphinx/cmd/quickstart.py:50 +msgid "automatically test code snippets in doctest blocks" +msgstr "" + +#: sphinx/cmd/quickstart.py:51 +msgid "link between Sphinx documentation of different projects" +msgstr "" + +#: sphinx/cmd/quickstart.py:52 +msgid "write \"todo\" entries that can be shown or hidden on build" +msgstr "" + +#: sphinx/cmd/quickstart.py:53 +msgid "checks for documentation coverage" +msgstr "" + +#: sphinx/cmd/quickstart.py:54 +msgid "include math, rendered as PNG or SVG images" +msgstr "" + +#: sphinx/cmd/quickstart.py:55 +msgid "include math, rendered in the browser by MathJax" +msgstr "" + +#: sphinx/cmd/quickstart.py:56 +msgid "conditional inclusion of content based on config values" +msgstr "" + +#: sphinx/cmd/quickstart.py:57 +msgid "include links to the source code of documented Python objects" +msgstr "" + +#: sphinx/cmd/quickstart.py:58 +msgid "create .nojekyll file to publish the document on GitHub pages" +msgstr "" + +#: sphinx/cmd/quickstart.py:100 +msgid "Please enter a valid path name." +msgstr "" + +#: sphinx/cmd/quickstart.py:110 +msgid "Please enter some text." +msgstr "" + +#: sphinx/cmd/quickstart.py:117 +#, python-format +msgid "Please enter one of %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:124 +msgid "Please enter either 'y' or 'n'." +msgstr "" + +#: sphinx/cmd/quickstart.py:130 +msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." +msgstr "" + +#: sphinx/cmd/quickstart.py:153 +msgid "" +"* Note: non-ASCII characters entered and terminal encoding unknown -- " +"assuming UTF-8 or Latin-1." +msgstr "" + +#: sphinx/cmd/quickstart.py:227 +#, python-format +msgid "Welcome to the Sphinx %s quickstart utility." +msgstr "" + +#: sphinx/cmd/quickstart.py:229 +msgid "" +"Please enter values for the following settings (just press Enter to\n" +"accept a default value, if one is given in brackets)." +msgstr "" + +#: sphinx/cmd/quickstart.py:234 +#, python-format +msgid "Selected root path: %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:237 +msgid "Enter the root path for documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:238 +msgid "Root path for the documentation" +msgstr "" + +#: sphinx/cmd/quickstart.py:243 +msgid "Error: an existing conf.py has been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:245 +msgid "sphinx-quickstart will not overwrite existing Sphinx projects." +msgstr "" + +#: sphinx/cmd/quickstart.py:247 +msgid "Please enter a new root path (or just Enter to exit)" +msgstr "" + +#: sphinx/cmd/quickstart.py:254 +msgid "" +"You have two options for placing the build directory for Sphinx output.\n" +"Either, you use a directory \"_build\" within the root path, or you separate\n" +"\"source\" and \"build\" directories within the root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:257 +msgid "Separate source and build directories (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:261 +msgid "" +"Inside the root directory, two more directories will be created; \"_templates\"\n" +"for custom HTML templates and \"_static\" for custom stylesheets and other static\n" +"files. You can enter another prefix (such as \".\") to replace the underscore." +msgstr "" + +#: sphinx/cmd/quickstart.py:264 +msgid "Name prefix for templates and static dir" +msgstr "" + +#: sphinx/cmd/quickstart.py:268 +msgid "" +"The project name will occur in several places in the built documentation." +msgstr "" + +#: sphinx/cmd/quickstart.py:269 +msgid "Project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:271 +msgid "Author name(s)" +msgstr "" + +#: sphinx/cmd/quickstart.py:275 +msgid "" +"Sphinx has the notion of a \"version\" and a \"release\" for the\n" +"software. Each version can have multiple releases. For example, for\n" +"Python the version is something like 2.5 or 3.0, while the release is\n" +"something like 2.5.1 or 3.0a1. If you don't need this dual structure,\n" +"just set both to the same value." +msgstr "" + +#: sphinx/cmd/quickstart.py:280 +msgid "Project version" +msgstr "" + +#: sphinx/cmd/quickstart.py:282 +msgid "Project release" +msgstr "" + +#: sphinx/cmd/quickstart.py:286 +msgid "" +"If the documents are to be written in a language other than English,\n" +"you can select a language here by its language code. Sphinx will then\n" +"translate text that it generates into that language.\n" +"\n" +"For a list of supported codes, see\n" +"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." +msgstr "" + +#: sphinx/cmd/quickstart.py:292 +msgid "Project language" +msgstr "" + +#: sphinx/cmd/quickstart.py:298 +msgid "" +"The file name suffix for source files. Commonly, this is either \".txt\"\n" +"or \".rst\". Only files with this suffix are considered documents." +msgstr "" + +#: sphinx/cmd/quickstart.py:300 +msgid "Source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:304 +msgid "" +"One document is special in that it is considered the top node of the\n" +"\"contents tree\", that is, it is the root of the hierarchical structure\n" +"of the documents. Normally, this is \"index\", but if your \"index\"\n" +"document is a custom template, you can also set this to another filename." +msgstr "" + +#: sphinx/cmd/quickstart.py:308 +msgid "Name of your master document (without suffix)" +msgstr "" + +#: sphinx/cmd/quickstart.py:313 +#, python-format +msgid "" +"Error: the master file %s has already been found in the selected root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:315 +msgid "sphinx-quickstart will not overwrite the existing file." +msgstr "" + +#: sphinx/cmd/quickstart.py:317 +msgid "" +"Please enter a new file name, or rename the existing file and press Enter" +msgstr "" + +#: sphinx/cmd/quickstart.py:321 +msgid "Indicate which of the following Sphinx extensions should be enabled:" +msgstr "" + +#: sphinx/cmd/quickstart.py:329 +msgid "" +"Note: imgmath and mathjax cannot be enabled at the same time. imgmath has " +"been deselected." +msgstr "" + +#: sphinx/cmd/quickstart.py:335 +msgid "" +"A Makefile and a Windows command file can be generated for you so that you\n" +"only have to run e.g. `make html' instead of invoking sphinx-build\n" +"directly." +msgstr "" + +#: sphinx/cmd/quickstart.py:338 +msgid "Create Makefile? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:341 +msgid "Create Windows command file? (y/n)" +msgstr "" + +#: sphinx/cmd/quickstart.py:382 sphinx/ext/apidoc.py:107 +#, python-format +msgid "Creating file %s." +msgstr "" + +#: sphinx/cmd/quickstart.py:387 sphinx/ext/apidoc.py:104 +#, python-format +msgid "File %s already exists, skipping." +msgstr "" + +#: sphinx/cmd/quickstart.py:423 +msgid "Finished: An initial directory structure has been created." +msgstr "" + +#: sphinx/cmd/quickstart.py:425 +#, python-format +msgid "" +"You should now populate your master file %s and create other documentation\n" +"source files. " +msgstr "" + +#: sphinx/cmd/quickstart.py:428 +msgid "" +"Use the Makefile to build the docs, like so:\n" +" make builder" +msgstr "" + +#: sphinx/cmd/quickstart.py:431 +#, python-format +msgid "" +"Use the sphinx-build command to build the docs, like so:\n" +" sphinx-build -b builder %s %s" +msgstr "" + +#: sphinx/cmd/quickstart.py:433 +msgid "" +"where \"builder\" is one of the supported builders, e.g. html, latex or " +"linkcheck." +msgstr "" + +#: sphinx/cmd/quickstart.py:468 +msgid "" +"\n" +"Generate required files for a Sphinx project.\n" +"\n" +"sphinx-quickstart is an interactive tool that asks some questions about your\n" +"project and then generates a complete documentation directory and sample\n" +"Makefile to be used with sphinx-build.\n" +msgstr "" + +#: sphinx/cmd/quickstart.py:483 +msgid "quiet mode" +msgstr "" + +#: sphinx/cmd/quickstart.py:488 +msgid "project root" +msgstr "" + +#: sphinx/cmd/quickstart.py:490 +msgid "Structure options" +msgstr "" + +#: sphinx/cmd/quickstart.py:492 +msgid "if specified, separate source and build dirs" +msgstr "" + +#: sphinx/cmd/quickstart.py:494 +msgid "replacement for dot in _templates etc." +msgstr "" + +#: sphinx/cmd/quickstart.py:496 +msgid "Project basic options" +msgstr "" + +#: sphinx/cmd/quickstart.py:498 +msgid "project name" +msgstr "" + +#: sphinx/cmd/quickstart.py:500 +msgid "author names" +msgstr "" + +#: sphinx/cmd/quickstart.py:502 +msgid "version of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:504 +msgid "release of project" +msgstr "" + +#: sphinx/cmd/quickstart.py:506 +msgid "document language" +msgstr "" + +#: sphinx/cmd/quickstart.py:508 +msgid "source file suffix" +msgstr "" + +#: sphinx/cmd/quickstart.py:510 +msgid "master document name" +msgstr "" + +#: sphinx/cmd/quickstart.py:512 +msgid "use epub" +msgstr "" + +#: sphinx/cmd/quickstart.py:514 +msgid "Extension options" +msgstr "" + +#: sphinx/cmd/quickstart.py:518 sphinx/ext/apidoc.py:433 +#, python-format +msgid "enable %s extension" +msgstr "" + +#: sphinx/cmd/quickstart.py:520 sphinx/ext/apidoc.py:429 +msgid "enable arbitrary extensions" +msgstr "" + +#: sphinx/cmd/quickstart.py:522 +msgid "Makefile and Batchfile creation" +msgstr "" + +#: sphinx/cmd/quickstart.py:524 +msgid "create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:526 +msgid "do not create makefile" +msgstr "" + +#: sphinx/cmd/quickstart.py:528 +msgid "create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:531 +msgid "do not create batchfile" +msgstr "" + +#: sphinx/cmd/quickstart.py:534 +msgid "use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:537 +msgid "do not use make-mode for Makefile/make.bat" +msgstr "" + +#: sphinx/cmd/quickstart.py:539 sphinx/ext/apidoc.py:435 +msgid "Project templating" +msgstr "" + +#: sphinx/cmd/quickstart.py:542 sphinx/ext/apidoc.py:438 +msgid "template directory for template files" +msgstr "" + +#: sphinx/cmd/quickstart.py:545 +msgid "define a template variable" +msgstr "" + +#: sphinx/cmd/quickstart.py:578 +msgid "\"quiet\" is specified, but any of \"project\" or \"author\" is not specified." +msgstr "" + +#: sphinx/cmd/quickstart.py:592 +msgid "" +"Error: specified path is not a directory, or sphinx files already exist." +msgstr "" + +#: sphinx/cmd/quickstart.py:594 +msgid "" +"sphinx-quickstart only generate into a empty directory. Please specify a new" +" root path." +msgstr "" + +#: sphinx/cmd/quickstart.py:609 +#, python-format +msgid "Invalid template variable: %s" +msgstr "" + +#: sphinx/directives/code.py:75 +msgid "Over dedent has detected" +msgstr "" + +#: sphinx/directives/code.py:94 +#, python-format +msgid "Invalid caption: %s" +msgstr "無效標題:%s" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:284 +#: sphinx/directives/code.py:450 +#, python-format +msgid "line number spec is out of range(1-%d): %r" +msgstr "" + +#: sphinx/directives/code.py:219 +#, python-format +msgid "Cannot use both \"%s\" and \"%s\" options" +msgstr "" + +#: sphinx/directives/code.py:231 +#, python-format +msgid "Include file %r not found or reading it failed" +msgstr "" + +#: sphinx/directives/code.py:233 +#, python-format +msgid "" +"Encoding %r used for reading included file %r seems to be wrong, try giving " +"an :encoding: option" +msgstr "" + +#: sphinx/directives/code.py:268 +#, python-format +msgid "Object named %r not found in include file %r" +msgstr "" + +#: sphinx/directives/code.py:293 +msgid "Cannot use \"lineno-match\" with a disjoint set of \"lines\"" +msgstr "" + +#: sphinx/directives/code.py:298 +#, python-format +msgid "Line spec %r: no lines pulled from include file %r" +msgstr "" + +#: sphinx/directives/other.py:171 +msgid "Section author: " +msgstr "段落作者:" + +#: sphinx/directives/other.py:173 +msgid "Module author: " +msgstr "模組作者:" + +#: sphinx/directives/other.py:175 +msgid "Code author: " +msgstr "程式作者:" + +#: sphinx/directives/other.py:177 +msgid "Author: " +msgstr "作者:" + +#: sphinx/domains/__init__.py:393 +#, python-format +msgid "%s %s" +msgstr "%s %s" + +#: sphinx/domains/c.py:67 sphinx/domains/cpp.py:6410 +#: sphinx/domains/python.py:249 sphinx/ext/napoleon/docstring.py:661 +msgid "Parameters" +msgstr "參數" + +#: sphinx/domains/c.py:70 sphinx/domains/cpp.py:6419 +#: sphinx/domains/javascript.py:216 sphinx/domains/python.py:261 +msgid "Returns" +msgstr "傳回" + +#: sphinx/domains/c.py:72 sphinx/domains/javascript.py:218 +#: sphinx/domains/python.py:263 +msgid "Return type" +msgstr "傳回型態" + +#: sphinx/domains/c.py:187 +#, python-format +msgid "%s (C function)" +msgstr "%s (C 函式)" + +#: sphinx/domains/c.py:189 +#, python-format +msgid "%s (C member)" +msgstr "%s (C 成員函數)" + +#: sphinx/domains/c.py:191 +#, python-format +msgid "%s (C macro)" +msgstr "%s (C 巨集)" + +#: sphinx/domains/c.py:193 +#, python-format +msgid "%s (C type)" +msgstr "%s (C 型態)" + +#: sphinx/domains/c.py:195 +#, python-format +msgid "%s (C variable)" +msgstr "%s (C 變數)" + +#: sphinx/domains/c.py:258 sphinx/domains/cpp.py:6991 +#: sphinx/domains/javascript.py:321 sphinx/domains/python.py:1015 +msgid "function" +msgstr "函式" + +#: sphinx/domains/c.py:259 sphinx/domains/cpp.py:6992 +msgid "member" +msgstr "成員函數" + +#: sphinx/domains/c.py:260 +msgid "macro" +msgstr "巨集" + +#: sphinx/domains/c.py:261 sphinx/domains/cpp.py:6993 +msgid "type" +msgstr "類型" + +#: sphinx/domains/c.py:262 +msgid "variable" +msgstr "變數" + +#: sphinx/domains/c.py:290 +#, python-format +msgid "" +"duplicate C object description of %s, other instance in %s, use :noindex: " +"for one of them" +msgstr "" + +#: sphinx/domains/changeset.py:31 +#, python-format +msgid "New in version %s" +msgstr "%s 版新加入" + +#: sphinx/domains/changeset.py:32 +#, python-format +msgid "Changed in version %s" +msgstr "%s 版更變" + +#: sphinx/domains/changeset.py:33 +#, python-format +msgid "Deprecated since version %s" +msgstr "%s 版後已棄用" + +#: sphinx/domains/citation.py:77 +#, python-format +msgid "duplicate citation %s, other instance in %s" +msgstr "" + +#: sphinx/domains/citation.py:88 +#, python-format +msgid "Citation [%s] is not referenced." +msgstr "" + +#: sphinx/domains/cpp.py:4220 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Declaration is '%s'." +msgstr "" + +#: sphinx/domains/cpp.py:6413 +msgid "Template Parameters" +msgstr "範本參數" + +#: sphinx/domains/cpp.py:6416 sphinx/domains/javascript.py:213 +msgid "Throws" +msgstr "拋出" + +#: sphinx/domains/cpp.py:6539 +#, python-format +msgid "%s (C++ %s)" +msgstr "" + +#: sphinx/domains/cpp.py:6989 sphinx/domains/javascript.py:323 +#: sphinx/domains/python.py:1017 +msgid "class" +msgstr "類別" + +#: sphinx/domains/cpp.py:6990 +msgid "union" +msgstr "" + +#: sphinx/domains/cpp.py:6994 +msgid "concept" +msgstr "concept" + +#: sphinx/domains/cpp.py:6995 +msgid "enum" +msgstr "enum" + +#: sphinx/domains/cpp.py:6996 +msgid "enumerator" +msgstr "enumerator" + +#: sphinx/domains/cpp.py:7086 +#, python-format +msgid "" +"Duplicate declaration, also defined in '%s'.\n" +"Name of declaration is '%s'." +msgstr "" + +#: sphinx/domains/javascript.py:131 sphinx/domains/python.py:471 +#: sphinx/domains/python.py:503 +#, python-format +msgid "%s() (built-in function)" +msgstr "%s() (內建函式)" + +#: sphinx/domains/javascript.py:132 sphinx/domains/python.py:615 +#: sphinx/domains/python.py:713 +#, python-format +msgid "%s() (%s method)" +msgstr "%s() (%s 的方法)" + +#: sphinx/domains/javascript.py:134 +#, python-format +msgid "%s() (class)" +msgstr "%s() (類別)" + +#: sphinx/domains/javascript.py:136 +#, python-format +msgid "%s (global variable or constant)" +msgstr "%s (全域變數或常數)" + +#: sphinx/domains/javascript.py:138 sphinx/domains/python.py:653 +#: sphinx/domains/python.py:790 +#, python-format +msgid "%s (%s attribute)" +msgstr "%s (%s 的屬性)" + +#: sphinx/domains/javascript.py:210 +msgid "Arguments" +msgstr "引數" + +#: sphinx/domains/javascript.py:281 sphinx/domains/python.py:862 +#, python-format +msgid "%s (module)" +msgstr "%s (模組)" + +#: sphinx/domains/javascript.py:322 sphinx/domains/python.py:1019 +msgid "method" +msgstr "成員函式" + +#: sphinx/domains/javascript.py:324 sphinx/domains/python.py:1016 +msgid "data" +msgstr "data" + +#: sphinx/domains/javascript.py:325 sphinx/domains/python.py:1022 +msgid "attribute" +msgstr "屬性" + +#: sphinx/domains/javascript.py:326 sphinx/domains/python.py:60 +#: sphinx/domains/python.py:1023 +msgid "module" +msgstr "模組" + +#: sphinx/domains/javascript.py:357 +#, python-format +msgid "duplicate %s description of %s, other %s in %s" +msgstr "" + +#: sphinx/domains/math.py:69 sphinx/domains/math.py:148 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "重覆公式標籤 %s,亦出現於 %s" + +#: sphinx/domains/math.py:123 sphinx/writers/latex.py:2031 +#, python-format +msgid "Invalid math_eqref_format: %r" +msgstr "" + +#: sphinx/domains/python.py:61 +msgid "keyword" +msgstr "關鍵字" + +#: sphinx/domains/python.py:62 +msgid "operator" +msgstr "運算子" + +#: sphinx/domains/python.py:63 +msgid "object" +msgstr "物件" + +#: sphinx/domains/python.py:64 sphinx/domains/python.py:1018 +msgid "exception" +msgstr "例外" + +#: sphinx/domains/python.py:65 +msgid "statement" +msgstr "陳述式" + +#: sphinx/domains/python.py:66 +msgid "built-in function" +msgstr "內建函式" + +#: sphinx/domains/python.py:254 +msgid "Variables" +msgstr "變數" + +#: sphinx/domains/python.py:258 +msgid "Raises" +msgstr "丟出" + +#: sphinx/domains/python.py:472 sphinx/domains/python.py:501 +#: sphinx/domains/python.py:609 sphinx/domains/python.py:621 +#: sphinx/domains/python.py:634 sphinx/domains/python.py:702 +#, python-format +msgid "%s() (in module %s)" +msgstr "%s() (於 %s 模組中)" + +#: sphinx/domains/python.py:475 sphinx/domains/python.py:550 +#, python-format +msgid "%s (built-in variable)" +msgstr "%s (內建變數)" + +#: sphinx/domains/python.py:476 sphinx/domains/python.py:548 +#: sphinx/domains/python.py:647 sphinx/domains/python.py:786 +#, python-format +msgid "%s (in module %s)" +msgstr "%s (於 %s 模組中)" + +#: sphinx/domains/python.py:566 +#, python-format +msgid "%s (built-in class)" +msgstr "%s (內建類別)" + +#: sphinx/domains/python.py:567 +#, python-format +msgid "%s (class in %s)" +msgstr "%s (%s 中的類別)" + +#: sphinx/domains/python.py:613 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "%s() (%s.%s 的成員函數)" + +#: sphinx/domains/python.py:625 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "%s() (%s.%s 的靜態成員)" + +#: sphinx/domains/python.py:628 sphinx/domains/python.py:711 +#, python-format +msgid "%s() (%s static method)" +msgstr "%s() (%s 的靜態成員)" + +#: sphinx/domains/python.py:638 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "%s() (%s.%s 的類別成員)" + +#: sphinx/domains/python.py:641 sphinx/domains/python.py:707 +#, python-format +msgid "%s() (%s class method)" +msgstr "%s() (%s 的類別成員)" + +#: sphinx/domains/python.py:651 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "%s (%s.%s 的屬性)" + +#: sphinx/domains/python.py:709 +#, python-format +msgid "%s() (%s property)" +msgstr "" + +#: sphinx/domains/python.py:943 +msgid "Python Module Index" +msgstr "Python 模組索引" + +#: sphinx/domains/python.py:944 +msgid "modules" +msgstr "模組" + +#: sphinx/domains/python.py:994 +msgid "Deprecated" +msgstr "已棄用" + +#: sphinx/domains/python.py:1020 +msgid "class method" +msgstr "類別成員" + +#: sphinx/domains/python.py:1021 +msgid "static method" +msgstr "靜態成員" + +#: sphinx/domains/python.py:1070 +#, python-format +msgid "" +"duplicate object description of %s, other instance in %s, use :noindex: for " +"one of them" +msgstr "" + +#: sphinx/domains/python.py:1176 +#, python-format +msgid "more than one target found for cross-reference %r: %s" +msgstr "" + +#: sphinx/domains/python.py:1214 +msgid " (deprecated)" +msgstr "(已棄用)" + +#: sphinx/domains/rst.py:105 sphinx/domains/rst.py:166 +#, python-format +msgid "%s (directive)" +msgstr "%s (directive)" + +#: sphinx/domains/rst.py:167 sphinx/domains/rst.py:171 +#, python-format +msgid ":%s: (directive option)" +msgstr "" + +#: sphinx/domains/rst.py:200 +#, python-format +msgid "%s (role)" +msgstr "%s (role)" + +#: sphinx/domains/rst.py:209 +msgid "directive" +msgstr "directive" + +#: sphinx/domains/rst.py:210 +msgid "directive-option" +msgstr "" + +#: sphinx/domains/rst.py:211 +msgid "role" +msgstr "role" + +#: sphinx/domains/rst.py:233 +#, python-format +msgid "duplicate description of %s %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:103 sphinx/domains/std.py:120 +#, python-format +msgid "environment variable; %s" +msgstr "環境變數; %s" + +#: sphinx/domains/std.py:194 +#, python-format +msgid "" +"Malformed option description %r, should look like \"opt\", \"-opt args\", \"" +"--opt args\", \"/opt args\" or \"+opt args\"" +msgstr "" + +#: sphinx/domains/std.py:235 +#, python-format +msgid "%s command line option" +msgstr "" + +#: sphinx/domains/std.py:237 +msgid "command line option" +msgstr "" + +#: sphinx/domains/std.py:368 +msgid "glossary term must be preceded by empty line" +msgstr "" + +#: sphinx/domains/std.py:376 +msgid "glossary terms must not be separated by empty lines" +msgstr "" + +#: sphinx/domains/std.py:382 sphinx/domains/std.py:395 +msgid "glossary seems to be misformatted, check indentation" +msgstr "" + +#: sphinx/domains/std.py:545 +msgid "glossary term" +msgstr "雜項術語" + +#: sphinx/domains/std.py:546 +msgid "grammar token" +msgstr "語法單詞" + +#: sphinx/domains/std.py:547 +msgid "reference label" +msgstr "參照標籤" + +#: sphinx/domains/std.py:549 +msgid "environment variable" +msgstr "環境變數" + +#: sphinx/domains/std.py:550 +msgid "program option" +msgstr "程式選項" + +#: sphinx/domains/std.py:551 +msgid "document" +msgstr "" + +#: sphinx/domains/std.py:587 +msgid "Module Index" +msgstr "模組索引" + +#: sphinx/domains/std.py:588 sphinx/themes/basic/defindex.html:24 +msgid "Search Page" +msgstr "搜尋頁面" + +#: sphinx/domains/std.py:638 sphinx/domains/std.py:727 +#: sphinx/ext/autosectionlabel.py:53 +#, python-format +msgid "duplicate label %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:657 +#, python-format +msgid "duplicate %s description of %s, other instance in %s" +msgstr "" + +#: sphinx/domains/std.py:833 +msgid "numfig is disabled. :numref: is ignored." +msgstr "" + +#: sphinx/domains/std.py:841 +#, python-format +msgid "no number is assigned for %s: %s" +msgstr "" + +#: sphinx/domains/std.py:852 +#, python-format +msgid "the link has no caption: %s" +msgstr "" + +#: sphinx/domains/std.py:866 +#, python-format +msgid "invalid numfig_format: %s (%r)" +msgstr "" + +#: sphinx/domains/std.py:869 +#, python-format +msgid "invalid numfig_format: %s" +msgstr "" + +#: sphinx/environment/__init__.py:73 +msgid "new config" +msgstr "" + +#: sphinx/environment/__init__.py:74 +msgid "config changed" +msgstr "" + +#: sphinx/environment/__init__.py:75 +msgid "extensions changed" +msgstr "" + +#: sphinx/environment/__init__.py:202 +msgid "build environment version not current" +msgstr "" + +#: sphinx/environment/__init__.py:204 +msgid "source directory has changed" +msgstr "" + +#: sphinx/environment/__init__.py:283 +msgid "" +"This environment is incompatible with the selected builder, please choose " +"another doctree directory." +msgstr "" + +#: sphinx/environment/__init__.py:396 +#, python-format +msgid "Failed to scan documents in %s: %r" +msgstr "" + +#: sphinx/environment/__init__.py:515 +#, python-format +msgid "Domain %r is not registered" +msgstr "" + +#: sphinx/environment/__init__.py:596 +msgid "self referenced toctree found. Ignored." +msgstr "" + +#: sphinx/environment/__init__.py:636 +msgid "document isn't included in any toctree" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:80 +#, python-format +msgid "see %s" +msgstr "參考 %s" + +#: sphinx/environment/adapters/indexentries.py:84 +#, python-format +msgid "see also %s" +msgstr "也參考 %s" + +#: sphinx/environment/adapters/indexentries.py:87 +#, python-format +msgid "unknown index entry type %r" +msgstr "" + +#: sphinx/environment/adapters/indexentries.py:172 +#: sphinx/templates/latex/sphinxmessages.sty_t:11 +msgid "Symbols" +msgstr "符號" + +#: sphinx/environment/adapters/toctree.py:153 +#, python-format +msgid "circular toctree references detected, ignoring: %s <- %s" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:172 +#, python-format +msgid "" +"toctree contains reference to document %r that doesn't have a title: no link" +" will be generated" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:178 +#, python-format +msgid "toctree contains reference to excluded document %r" +msgstr "" + +#: sphinx/environment/adapters/toctree.py:180 +#, python-format +msgid "toctree contains reference to nonexisting document %r" +msgstr "" + +#: sphinx/environment/collectors/asset.py:87 +#, python-format +msgid "image file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:106 +#, python-format +msgid "image file %s not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/asset.py:132 +#, python-format +msgid "download file not readable: %s" +msgstr "" + +#: sphinx/environment/collectors/toctree.py:191 +#, python-format +msgid "%s is already assigned section numbers (nested numbered toctree?)" +msgstr "" + +#: sphinx/ext/apidoc.py:100 +#, python-format +msgid "Would create file %s." +msgstr "" + +#: sphinx/ext/apidoc.py:351 +msgid "" +"\n" +"Look recursively in <MODULE_PATH> for Python modules and packages and create\n" +"one reST file with automodule directives per package in the <OUTPUT_PATH>.\n" +"\n" +"The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be\n" +"excluded from generation.\n" +"\n" +"Note: By default this script will not overwrite already created files." +msgstr "" + +#: sphinx/ext/apidoc.py:364 +msgid "path to module to document" +msgstr "" + +#: sphinx/ext/apidoc.py:366 +msgid "" +"fnmatch-style file and/or directory patterns to exclude from generation" +msgstr "" + +#: sphinx/ext/apidoc.py:371 +msgid "directory to place all output" +msgstr "" + +#: sphinx/ext/apidoc.py:376 +msgid "maximum depth of submodules to show in the TOC (default: 4)" +msgstr "" + +#: sphinx/ext/apidoc.py:379 +msgid "overwrite existing files" +msgstr "" + +#: sphinx/ext/apidoc.py:382 +msgid "" +"follow symbolic links. Powerful when combined with " +"collective.recipe.omelette." +msgstr "" + +#: sphinx/ext/apidoc.py:385 +msgid "run the script without creating files" +msgstr "" + +#: sphinx/ext/apidoc.py:388 +msgid "put documentation for each module on its own page" +msgstr "" + +#: sphinx/ext/apidoc.py:391 +msgid "include \"_private\" modules" +msgstr "" + +#: sphinx/ext/apidoc.py:393 +msgid "filename of table of contents (default: modules)" +msgstr "" + +#: sphinx/ext/apidoc.py:395 +msgid "don't create a table of contents file" +msgstr "" + +#: sphinx/ext/apidoc.py:398 +msgid "" +"don't create headings for the module/package packages (e.g. when the " +"docstrings already contain them)" +msgstr "" + +#: sphinx/ext/apidoc.py:403 +msgid "put module documentation before submodule documentation" +msgstr "" + +#: sphinx/ext/apidoc.py:407 +msgid "" +"interpret module paths according to PEP-0420 implicit namespaces " +"specification" +msgstr "" + +#: sphinx/ext/apidoc.py:411 +msgid "file suffix (default: rst)" +msgstr "" + +#: sphinx/ext/apidoc.py:413 +msgid "generate a full project with sphinx-quickstart" +msgstr "" + +#: sphinx/ext/apidoc.py:416 +msgid "append module_path to sys.path, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:418 +msgid "project name (default: root module name)" +msgstr "" + +#: sphinx/ext/apidoc.py:420 +msgid "project author(s), used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:422 +msgid "project version, used when --full is given" +msgstr "" + +#: sphinx/ext/apidoc.py:424 +msgid "project release, used when --full is given, defaults to --doc-version" +msgstr "" + +#: sphinx/ext/apidoc.py:427 +msgid "extension options" +msgstr "" + +#: sphinx/ext/apidoc.py:460 +#, python-format +msgid "%s is not a directory." +msgstr "" + +#: sphinx/ext/coverage.py:42 +#, python-format +msgid "invalid regex %r in %s" +msgstr "" + +#: sphinx/ext/coverage.py:51 +#, python-format +msgid "" +"Testing of coverage in the sources finished, look at the results in " +"%(outdir)spython.txt." +msgstr "" + +#: sphinx/ext/coverage.py:65 +#, python-format +msgid "invalid regex %r in coverage_c_regexes" +msgstr "" + +#: sphinx/ext/coverage.py:150 +#, python-format +msgid "module %s could not be imported: %s" +msgstr "" + +#: sphinx/ext/doctest.py:131 +#, python-format +msgid "missing '+' or '-' in '%s' option." +msgstr "" + +#: sphinx/ext/doctest.py:136 +#, python-format +msgid "'%s' is not a valid option." +msgstr "" + +#: sphinx/ext/doctest.py:150 +#, python-format +msgid "'%s' is not a valid pyversion option" +msgstr "" + +#: sphinx/ext/doctest.py:219 +msgid "invalid TestCode type" +msgstr "" + +#: sphinx/ext/doctest.py:277 +#, python-format +msgid "" +"Testing of doctests in the sources finished, look at the results in " +"%(outdir)s/output.txt." +msgstr "" + +#: sphinx/ext/doctest.py:427 +#, python-format +msgid "no code/output in %s block at %s:%s" +msgstr "" + +#: sphinx/ext/doctest.py:513 +#, python-format +msgid "ignoring invalid doctest code: %r" +msgstr "" + +#: sphinx/ext/duration.py:80 +msgid "" +"====================== slowest reading durations =======================" +msgstr "" + +#: sphinx/ext/graphviz.py:132 +msgid "Graphviz directive cannot have both content and a filename argument" +msgstr "" + +#: sphinx/ext/graphviz.py:142 +#, python-format +msgid "External Graphviz file %r not found or reading it failed" +msgstr "" + +#: sphinx/ext/graphviz.py:148 +msgid "Ignoring \"graphviz\" directive without content." +msgstr "" + +#: sphinx/ext/graphviz.py:248 +#, python-format +msgid "" +"dot did not produce an output file:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:252 +#, python-format +msgid "" +"dot command %r cannot be run (needed for graphviz output), check the " +"graphviz_dot setting" +msgstr "" + +#: sphinx/ext/graphviz.py:259 +#, python-format +msgid "" +"dot exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/graphviz.py:269 +#, python-format +msgid "graphviz_output_format must be one of 'png', 'svg', but is %r" +msgstr "" + +#: sphinx/ext/graphviz.py:273 sphinx/ext/graphviz.py:324 +#: sphinx/ext/graphviz.py:361 +#, python-format +msgid "dot code %r: %s" +msgstr "" + +#: sphinx/ext/graphviz.py:374 sphinx/ext/graphviz.py:382 +#, python-format +msgid "[graph: %s]" +msgstr "[圖:%s]" + +#: sphinx/ext/graphviz.py:376 sphinx/ext/graphviz.py:384 +msgid "[graph]" +msgstr "[圖]" + +#: sphinx/ext/imgconverter.py:41 sphinx/ext/imgconverter.py:65 +#, python-format +msgid "convert command %r cannot be run, check the image_converter setting" +msgstr "" + +#: sphinx/ext/imgconverter.py:46 sphinx/ext/imgconverter.py:70 +#, python-format +msgid "" +"convert exited with error:\n" +"[stderr]\n" +"%r\n" +"[stdout]\n" +"%r" +msgstr "" + +#: sphinx/ext/imgmath.py:170 +#, python-format +msgid "" +"LaTeX command %r cannot be run (needed for math display), check the " +"imgmath_latex setting" +msgstr "" + +#: sphinx/ext/imgmath.py:184 +#, python-format +msgid "" +"%s command %r cannot be run (needed for math display), check the imgmath_%s " +"setting" +msgstr "" + +#: sphinx/ext/imgmath.py:329 +#, python-format +msgid "display latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:355 +#, python-format +msgid "inline latex %r: %s" +msgstr "" + +#: sphinx/ext/imgmath.py:362 sphinx/ext/mathjax.py:49 +msgid "Permalink to this equation" +msgstr "本公式的永久連結" + +#: sphinx/ext/intersphinx.py:173 +#, python-format +msgid "intersphinx inventory has moved: %s -> %s" +msgstr "" + +#: sphinx/ext/intersphinx.py:204 +#, python-format +msgid "loading intersphinx inventory from %s..." +msgstr "" + +#: sphinx/ext/intersphinx.py:218 +msgid "" +"encountered some issues with some of the inventories, but they had working " +"alternatives:" +msgstr "" + +#: sphinx/ext/intersphinx.py:224 +msgid "failed to reach any of the inventories with the following issues:" +msgstr "" + +#: sphinx/ext/intersphinx.py:314 +#, python-format +msgid "(in %s v%s)" +msgstr "(於 %s v%s)" + +#: sphinx/ext/intersphinx.py:316 +#, python-format +msgid "(in %s)" +msgstr "" + +#: sphinx/ext/intersphinx.py:349 +#, python-format +msgid "intersphinx identifier %r is not string. Ignored" +msgstr "" + +#: sphinx/ext/intersphinx.py:362 +#, python-format +msgid "Failed to read intersphinx_mapping[%s], ignored: %r" +msgstr "" + +#: sphinx/ext/linkcode.py:70 sphinx/ext/viewcode.py:113 +msgid "[source]" +msgstr "[原始碼]" + +#: sphinx/ext/todo.py:70 +msgid "Todo" +msgstr "Todo" + +#: sphinx/ext/todo.py:103 sphinx/ext/todo.py:130 +#, python-format +msgid "TODO entry found: %s" +msgstr "" + +#: sphinx/ext/todo.py:193 sphinx/ext/todo.py:242 +msgid "<<original entry>>" +msgstr "<<original entry>>" + +#: sphinx/ext/todo.py:195 sphinx/ext/todo.py:245 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "(<<original entry>> 見 %s ,第 %d 行)" + +#: sphinx/ext/todo.py:205 sphinx/ext/todo.py:253 +msgid "original entry" +msgstr "原始記錄" + +#: sphinx/ext/viewcode.py:153 +msgid "highlighting module code... " +msgstr "" + +#: sphinx/ext/viewcode.py:182 +msgid "[docs]" +msgstr "[文件]" + +#: sphinx/ext/viewcode.py:196 +msgid "Module code" +msgstr "模組原始碼" + +#: sphinx/ext/viewcode.py:202 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "<h1>%s 的原始碼</h1>" + +#: sphinx/ext/viewcode.py:228 +msgid "Overview: module code" +msgstr "概要:模組原始碼" + +#: sphinx/ext/viewcode.py:229 +msgid "<h1>All modules for which code is available</h1>" +msgstr "<h1>所有可得程式碼的模組</h1>" + +#: sphinx/ext/autodoc/__init__.py:298 +#, python-format +msgid "invalid signature for auto%s (%r)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:395 +#, python-format +msgid "error while formatting arguments for %s: %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:502 +#, python-format +msgid "missing attribute %s in object %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:617 +#, python-format +msgid "" +"autodoc: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:706 +#, python-format +msgid "" +"don't know which module to import for autodocumenting %r (try placing a " +"\"module\" or \"currentmodule\" directive in the document, or giving an " +"explicit module name)" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:799 +msgid "\"::\" in automodule name doesn't make sense" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:806 +#, python-format +msgid "signature arguments or return annotation given for automodule %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:837 +#, python-format +msgid "" +"__all__ should be a list of strings, not %r (in module %s) -- ignoring " +"__all__" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:852 +#, python-format +msgid "" +"missing attribute mentioned in :members: or __all__: module %s, attribute %s" +msgstr "" + +#: sphinx/ext/autodoc/__init__.py:1208 +#, python-format +msgid "Bases: %s" +msgstr "基礎類別:%s" + +#: sphinx/ext/autodoc/__init__.py:1267 +#, python-format +msgid "alias of :class:`%s`" +msgstr ":class:`%s` 的別名" + +#: sphinx/ext/autodoc/type_comment.py:132 +#, python-format +msgid "Failed to parse type_comment for %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:255 +#, python-format +msgid "autosummary references excluded document %r. Ignored." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:257 +#, python-format +msgid "" +"autosummary: stub file not found %r. Check your autosummary_generate " +"setting." +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:296 +#, python-format +msgid "failed to import %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:311 +#, python-format +msgid "failed to parse name %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:315 +#, python-format +msgid "failed to import object %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:730 +#, python-format +msgid "autosummary_generate: file not found: %s" +msgstr "" + +#: sphinx/ext/autosummary/__init__.py:738 +msgid "" +"autosummary generats .rst files internally. But your source_suffix does not " +"contain .rst. Skipped." +msgstr "" + +#: sphinx/ext/autosummary/generate.py:153 +#, python-format +msgid "" +"autosummary: failed to determine %r to be documented, the following exception was raised:\n" +"%s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:247 +#, python-format +msgid "[autosummary] generating autosummary for: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:251 +#, python-format +msgid "[autosummary] writing to %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:277 +#, python-format +msgid "[autosummary] failed to import %r: %s" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:435 +msgid "" +"\n" +"Generate ReStructuredText using autosummary directives.\n" +"\n" +"sphinx-autogen is a frontend to sphinx.ext.autosummary.generate. It generates\n" +"the reStructuredText files from the autosummary directives contained in the\n" +"given input files.\n" +"\n" +"The format of the autosummary directive is documented in the\n" +"``sphinx.ext.autosummary`` Python module and can be read using::\n" +"\n" +" pydoc sphinx.ext.autosummary\n" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:452 +msgid "source files to generate rST files for" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:456 +msgid "directory to place all output in" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:459 +#, python-format +msgid "default suffix for files (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:463 +#, python-format +msgid "custom template directory (default: %(default)s)" +msgstr "" + +#: sphinx/ext/autosummary/generate.py:467 +#, python-format +msgid "document imported members (default: %(default)s)" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:325 sphinx/ext/napoleon/docstring.py:638 +msgid "Keyword Arguments" +msgstr "關鍵字引數" + +#: sphinx/ext/napoleon/docstring.py:599 +msgid "Example" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:600 +msgid "Examples" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:651 +msgid "Notes" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:654 +msgid "Other Parameters" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:680 +msgid "References" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:714 +msgid "Warns" +msgstr "" + +#: sphinx/ext/napoleon/docstring.py:718 +msgid "Yields" +msgstr "" + +#: sphinx/locale/__init__.py:250 +msgid "Attention" +msgstr "注意" + +#: sphinx/locale/__init__.py:251 +msgid "Caution" +msgstr "警示" + +#: sphinx/locale/__init__.py:252 +msgid "Danger" +msgstr "危險" + +#: sphinx/locale/__init__.py:253 +msgid "Error" +msgstr "錯誤" + +#: sphinx/locale/__init__.py:254 +msgid "Hint" +msgstr "提示" + +#: sphinx/locale/__init__.py:255 +msgid "Important" +msgstr "重要" + +#: sphinx/locale/__init__.py:256 +msgid "Note" +msgstr "備註" + +#: sphinx/locale/__init__.py:257 +msgid "See also" +msgstr "也參考" + +#: sphinx/locale/__init__.py:258 +msgid "Tip" +msgstr "小訣竅" + +#: sphinx/locale/__init__.py:259 +msgid "Warning" +msgstr "警告" + +#: sphinx/templates/latex/longtable.tex_t:18 +#: sphinx/templates/latex/sphinxmessages.sty_t:8 +msgid "continued from previous page" +msgstr "繼續上一頁" + +#: sphinx/templates/latex/longtable.tex_t:24 +#: sphinx/templates/latex/sphinxmessages.sty_t:9 +msgid "continues on next page" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:10 +msgid "Non-alphabetical" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:12 +msgid "Numbers" +msgstr "" + +#: sphinx/templates/latex/sphinxmessages.sty_t:13 +msgid "page" +msgstr "頁" + +#: sphinx/themes/agogo/layout.html:27 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:10 sphinx/themes/scrolls/layout.html:31 +msgid "Table of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:30 sphinx/themes/basic/layout.html:52 +#: sphinx/themes/basic/search.html:10 sphinx/themes/basic/search.html:18 +msgid "Search" +msgstr "搜尋" + +#: sphinx/themes/agogo/layout.html:33 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "搜" + +#: sphinx/themes/agogo/layout.html:66 sphinx/themes/basic/sourcelink.html:14 +msgid "Show Source" +msgstr "顯示原始碼" + +#: sphinx/themes/basic/defindex.html:10 +msgid "Overview" +msgstr "概要" + +#: sphinx/themes/basic/defindex.html:14 +msgid "Welcome! This is" +msgstr "歡迎!本" + +#: sphinx/themes/basic/defindex.html:15 +msgid "the documentation for" +msgstr "說明文件介紹" + +#: sphinx/themes/basic/defindex.html:16 +msgid "last updated" +msgstr "最後更新於" + +#: sphinx/themes/basic/defindex.html:19 +msgid "Indices and tables:" +msgstr "索引與表格:" + +#: sphinx/themes/basic/defindex.html:22 +msgid "Complete Table of Contents" +msgstr "完整目錄" + +#: sphinx/themes/basic/defindex.html:23 +msgid "lists all sections and subsections" +msgstr "列出所有段落與子段落" + +#: sphinx/themes/basic/defindex.html:25 +msgid "search this documentation" +msgstr "搜尋本說明文件" + +#: sphinx/themes/basic/defindex.html:27 +msgid "Global Module Index" +msgstr "全域模組索引" + +#: sphinx/themes/basic/defindex.html:28 +msgid "quick access to all modules" +msgstr "快速前往所有的模組" + +#: sphinx/themes/basic/defindex.html:30 +msgid "all functions, classes, terms" +msgstr "所有函式、類別、術語" + +#: sphinx/themes/basic/genindex-single.html:22 +#, python-format +msgid "Index – %(key)s" +msgstr "索引 – %(key)s" + +#: sphinx/themes/basic/genindex-single.html:41 +#: sphinx/themes/basic/genindex-split.html:22 +#: sphinx/themes/basic/genindex-split.html:35 +#: sphinx/themes/basic/genindex.html:49 +msgid "Full index on one page" +msgstr "單頁完整索引" + +#: sphinx/themes/basic/genindex-split.html:15 +msgid "Index pages by letter" +msgstr "索引頁面按字母" + +#: sphinx/themes/basic/genindex-split.html:23 +msgid "can be huge" +msgstr "可能會很大" + +#: sphinx/themes/basic/layout.html:16 +msgid "Navigation" +msgstr "瀏覽" + +#: sphinx/themes/basic/layout.html:47 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "在 %(docstitle)s 中搜尋" + +#: sphinx/themes/basic/layout.html:50 +msgid "About these documents" +msgstr "關於這些文件" + +#: sphinx/themes/basic/layout.html:53 +msgid "Copyright" +msgstr "版權所有" + +#: sphinx/themes/basic/layout.html:69 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">版權所有</a> %(copyright)s。" + +#: sphinx/themes/basic/layout.html:70 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© 版權所有 %(copyright)s。" + +#: sphinx/themes/basic/layout.html:71 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "最後更新於 %(last_updated)s。" + +#: sphinx/themes/basic/layout.html:72 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "使用 <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s 創建。" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "搜尋 %(docstitle)s" + +#: sphinx/themes/basic/relations.html:10 +msgid "Previous topic" +msgstr "上個主題" + +#: sphinx/themes/basic/relations.html:12 +msgid "previous chapter" +msgstr "上一章" + +#: sphinx/themes/basic/relations.html:13 +msgid "Next topic" +msgstr "下個主題" + +#: sphinx/themes/basic/relations.html:15 +msgid "next chapter" +msgstr "下一章" + +#: sphinx/themes/basic/search.html:22 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "請啟用 Javascript 以開啟搜尋功能。" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Searching for multiple words only shows matches that contain\n" +" all words." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "search" +msgstr "搜尋" + +#: sphinx/themes/basic/search.html:36 +#: sphinx/themes/basic/static/searchtools.js:304 +msgid "Search Results" +msgstr "搜尋結果" + +#: sphinx/themes/basic/search.html:38 +#: sphinx/themes/basic/static/searchtools.js:306 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "你的搜尋找不到任何滿足條件的文件。請確定是否所有的搜尋詞都正確地拼寫且你已選擇足夠的分類。" + +#: sphinx/themes/basic/searchbox.html:11 +msgid "Quick search" +msgstr "快速搜尋" + +#: sphinx/themes/basic/sourcelink.html:11 +msgid "This Page" +msgstr "本頁" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "於 %(version)s 版本中的所有更變 — %(docstitle)s" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "自動產生的 %(version)s 版本改變列表" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "程式庫的改變" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "C API 改變" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "其他改變" + +#: sphinx/themes/basic/static/doctools.js:194 sphinx/writers/html.py:403 +#: sphinx/writers/html.py:408 sphinx/writers/html5.py:355 +#: sphinx/writers/html5.py:360 +msgid "Permalink to this headline" +msgstr "本標題的永久連結" + +#: sphinx/themes/basic/static/doctools.js:200 sphinx/writers/html.py:121 +#: sphinx/writers/html.py:130 sphinx/writers/html5.py:93 +#: sphinx/writers/html5.py:102 +msgid "Permalink to this definition" +msgstr "本定義的永久連結" + +#: sphinx/themes/basic/static/doctools.js:233 +msgid "Hide Search Matches" +msgstr "隱藏符合搜尋" + +#: sphinx/themes/basic/static/searchtools.js:136 +msgid "Searching" +msgstr "搜尋中" + +#: sphinx/themes/basic/static/searchtools.js:141 +msgid "Preparing search..." +msgstr "準備搜尋中…" + +#: sphinx/themes/basic/static/searchtools.js:308 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "搜尋完成,共找到 %s 頁面滿足搜尋條件。" + +#: sphinx/themes/basic/static/searchtools.js:362 +msgid ", in " +msgstr " 於 " + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "展開側邊欄" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "收合側邊欄" + +#: sphinx/themes/haiku/layout.html:19 +msgid "Contents" +msgstr "內容" + +#: sphinx/transforms/__init__.py:224 +#, python-format +msgid "" +"4 column based index found. It might be a bug of extensions you use: %r" +msgstr "" + +#: sphinx/transforms/__init__.py:263 +#, python-format +msgid "Footnote [%s] is not referenced." +msgstr "" + +#: sphinx/transforms/__init__.py:269 +msgid "Footnote [#] is not referenced." +msgstr "" + +#: sphinx/transforms/i18n.py:296 sphinx/transforms/i18n.py:366 +msgid "" +"inconsistent footnote references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:338 +msgid "" +"inconsistent references in translated message. original: {0}, translated: " +"{1}" +msgstr "" + +#: sphinx/transforms/i18n.py:385 +msgid "" +"inconsistent citation references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/i18n.py:405 +msgid "" +"inconsistent term references in translated message. original: {0}, " +"translated: {1}" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:139 +#, python-format +msgid "more than one target found for 'any' cross-reference %r: could be %s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:171 +#, python-format +msgid "%s:%s reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/__init__.py:174 +#, python-format +msgid "%r reference target not found: %%(target)s" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:86 +#, python-format +msgid "Could not fetch remote image: %s [%d]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:114 +#, python-format +msgid "Could not fetch remote image: %s [%s]" +msgstr "" + +#: sphinx/transforms/post_transforms/images.py:132 +#, python-format +msgid "Unknown image format: %s..." +msgstr "" + +#: sphinx/util/__init__.py:379 +#, python-format +msgid "undecodable source characters, replacing with \"?\": %r" +msgstr "" + +#: sphinx/util/__init__.py:639 +msgid "skipped" +msgstr "" + +#: sphinx/util/__init__.py:644 +msgid "failed" +msgstr "" + +#: sphinx/util/i18n.py:68 +#, python-format +msgid "reading error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:75 +#, python-format +msgid "writing error: %s, %s" +msgstr "" + +#: sphinx/util/i18n.py:260 +#, python-format +msgid "" +"Invalid date format. Quote the string by single quote if you want to output " +"it directly: %s" +msgstr "" + +#: sphinx/util/nodes.py:426 +#, python-format +msgid "toctree contains ref to nonexisting file %r" +msgstr "" + +#: sphinx/util/nodes.py:526 +#, python-format +msgid "exception while evaluating only directive expression: %s" +msgstr "" + +#: sphinx/util/pycompat.py:77 +#, python-format +msgid "" +"Support for evaluating Python 2 syntax is deprecated and will be removed in " +"Sphinx 4.0. Convert %s to Python 3 syntax." +msgstr "" + +#: sphinx/util/rst.py:74 +#, python-format +msgid "default role %s not found" +msgstr "" + +#: sphinx/writers/html.py:306 sphinx/writers/html5.py:278 +#, python-format +msgid "numfig_format is not defined for %s" +msgstr "" + +#: sphinx/writers/html.py:316 sphinx/writers/html5.py:288 +#, python-format +msgid "Any IDs not assigned for %s node" +msgstr "" + +#: sphinx/writers/html.py:412 sphinx/writers/html5.py:364 +msgid "Permalink to this table" +msgstr "本表格的永久連結" + +#: sphinx/writers/html.py:456 sphinx/writers/html5.py:408 +msgid "Permalink to this code" +msgstr "本原始碼的永久連結" + +#: sphinx/writers/html.py:458 sphinx/writers/html5.py:410 +msgid "Permalink to this image" +msgstr "本圖片的永久連結" + +#: sphinx/writers/html.py:460 sphinx/writers/html5.py:412 +msgid "Permalink to this toctree" +msgstr "本目錄的永久連結" + +#: sphinx/writers/html.py:584 sphinx/writers/html5.py:525 +msgid "Could not obtain image size. :scale: option is ignored." +msgstr "" + +#: sphinx/writers/latex.py:352 +#, python-format +msgid "unknown %r toplevel_sectioning for class %r" +msgstr "" + +#: sphinx/writers/latex.py:404 +msgid "too large :maxdepth:, ignored." +msgstr "" + +#: sphinx/writers/latex.py:653 +msgid "document title is not a single Text node" +msgstr "" + +#: sphinx/writers/latex.py:685 sphinx/writers/texinfo.py:626 +msgid "" +"encountered title node not in section, topic, table, admonition or sidebar" +msgstr "" + +#: sphinx/writers/latex.py:827 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:641 +msgid "Footnotes" +msgstr "頁尾" + +#: sphinx/writers/latex.py:879 +msgid "" +"both tabularcolumns and :widths: option are given. :widths: is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1202 +#, python-format +msgid "dimension unit %s is invalid. Ignored." +msgstr "" + +#: sphinx/writers/latex.py:1513 +#, python-format +msgid "unknown index entry type %s found" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:788 +#, python-format +msgid "[image: %s]" +msgstr "[圖片:%s]" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:789 +msgid "[image]" +msgstr "[圖片]" + +#: sphinx/writers/texinfo.py:1185 +msgid "caption not inside a figure." +msgstr "" + +#: sphinx/writers/texinfo.py:1261 +#, python-format +msgid "unimplemented node type: %r" +msgstr "" + +#: sphinx/writers/texinfo.py:1265 +#, python-format +msgid "unknown node type: %r" +msgstr "" diff --git a/sphinx/sphinx/parsers.py b/sphinx/sphinx/parsers.py new file mode 100644 index 0000000..3974d1c --- /dev/null +++ b/sphinx/sphinx/parsers.py @@ -0,0 +1,118 @@ +""" + sphinx.parsers + ~~~~~~~~~~~~~~ + + A Base class for additional parsers. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import warnings +from typing import Any, Dict, List, Union + +import docutils.parsers +import docutils.parsers.rst +from docutils import nodes +from docutils.parsers.rst import states +from docutils.statemachine import StringList +from docutils.transforms.universal import SmartQuotes + +from sphinx.deprecation import RemovedInSphinx50Warning +from sphinx.util.rst import append_epilog, prepend_prolog + +if False: + # For type annotation + from docutils.transforms import Transform # NOQA + from typing import Type # NOQA # for python3.5.1 + from sphinx.application import Sphinx + + +class Parser(docutils.parsers.Parser): + """ + A base class of source parsers. The additional parsers should inherit this class instead + of ``docutils.parsers.Parser``. Compared with ``docutils.parsers.Parser``, this class + improves accessibility to Sphinx APIs. + + The subclasses can access following objects and functions: + + self.app + The application object (:class:`sphinx.application.Sphinx`) + self.config + The config object (:class:`sphinx.config.Config`) + self.env + The environment object (:class:`sphinx.environment.BuildEnvironment`) + self.warn() + Emit a warning. (Same as :meth:`sphinx.application.Sphinx.warn()`) + self.info() + Emit a informational message. (Same as :meth:`sphinx.application.Sphinx.info()`) + + .. deprecated:: 1.6 + ``warn()`` and ``info()`` is deprecated. Use :mod:`sphinx.util.logging` instead. + .. deprecated:: 3.0 + parser.app is deprecated. + """ + + def set_application(self, app: "Sphinx") -> None: + """set_application will be called from Sphinx to set app and other instance variables + + :param sphinx.application.Sphinx app: Sphinx application object + """ + self._app = app + self.config = app.config + self.env = app.env + + @property + def app(self) -> "Sphinx": + warnings.warn('parser.app is deprecated.', RemovedInSphinx50Warning) + return self._app + + +class RSTParser(docutils.parsers.rst.Parser, Parser): + """A reST parser for Sphinx.""" + + def get_transforms(self) -> List["Type[Transform]"]: + """Sphinx's reST parser replaces a transform class for smart-quotes by own's + + refs: sphinx.io.SphinxStandaloneReader + """ + transforms = super().get_transforms() + transforms.remove(SmartQuotes) + return transforms + + def parse(self, inputstring: Union[str, StringList], document: nodes.document) -> None: + """Parse text and generate a document tree.""" + self.setup_parse(inputstring, document) # type: ignore + self.statemachine = states.RSTStateMachine( + state_classes=self.state_classes, + initial_state=self.initial_state, + debug=document.reporter.debug_flag) + + # preprocess inputstring + if isinstance(inputstring, str): + lines = docutils.statemachine.string2lines( + inputstring, tab_width=document.settings.tab_width, + convert_whitespace=True) + + inputlines = StringList(lines, document.current_source) + else: + inputlines = inputstring + + self.decorate(inputlines) + self.statemachine.run(inputlines, document, inliner=self.inliner) + self.finish_parse() + + def decorate(self, content: StringList) -> None: + """Preprocess reST content before parsing.""" + prepend_prolog(content, self.config.rst_prolog) + append_epilog(content, self.config.rst_epilog) + + +def setup(app: "Sphinx") -> Dict[str, Any]: + app.add_source_parser(RSTParser) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/project.py b/sphinx/sphinx/project.py new file mode 100644 index 0000000..f4afdad --- /dev/null +++ b/sphinx/sphinx/project.py @@ -0,0 +1,107 @@ +""" + sphinx.project + ~~~~~~~~~~~~~~ + + Utility function and classes for Sphinx projects. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import os +from glob import glob + +from sphinx.locale import __ +from sphinx.util import get_matching_files +from sphinx.util import logging +from sphinx.util import path_stabilize +from sphinx.util.matching import compile_matchers +from sphinx.util.osutil import SEP, relpath + +if False: + # For type annotation + from typing import Dict, List, Set # NOQA + + +logger = logging.getLogger(__name__) +EXCLUDE_PATHS = ['**/_sources', '.#*', '**/.#*', '*.lproj/**'] + + +class Project: + """A project is source code set of Sphinx document.""" + + def __init__(self, srcdir, source_suffix): + # type: (str, Dict[str, str]) -> None + #: Source directory. + self.srcdir = srcdir + + #: source_suffix. Same as :confval:`source_suffix`. + self.source_suffix = source_suffix + + #: The name of documents belongs to this project. + self.docnames = set() # type: Set[str] + + def restore(self, other): + # type: (Project) -> None + """Take over a result of last build.""" + self.docnames = other.docnames + + def discover(self, exclude_paths=[]): + # type: (List[str]) -> Set[str] + """Find all document files in the source directory and put them in + :attr:`docnames`. + """ + self.docnames = set() + excludes = compile_matchers(exclude_paths + EXCLUDE_PATHS) + for filename in get_matching_files(self.srcdir, excludes): # type: ignore + docname = self.path2doc(filename) + if docname: + if docname in self.docnames: + pattern = os.path.join(self.srcdir, docname) + '.*' + files = [relpath(f, self.srcdir) for f in glob(pattern)] + logger.warning(__('multiple files found for the document "%s": %r\n' + 'Use %r for the build.'), + docname, files, self.doc2path(docname), once=True) + elif os.access(os.path.join(self.srcdir, filename), os.R_OK): + self.docnames.add(docname) + else: + logger.warning(__("document not readable. Ignored."), location=docname) + + return self.docnames + + def path2doc(self, filename): + # type: (str) -> str + """Return the docname for the filename if the file is document. + + *filename* should be absolute or relative to the source directory. + """ + if filename.startswith(self.srcdir): + filename = relpath(filename, self.srcdir) + for suffix in self.source_suffix: + if filename.endswith(suffix): + filename = path_stabilize(filename) + return filename[:-len(suffix)] + + # the file does not have docname + return None + + def doc2path(self, docname, basedir=True): + # type: (str, bool) -> str + """Return the filename for the document name. + + If *basedir* is True, return as an absolute path. + Else, return as a relative path to the source directory. + """ + docname = docname.replace(SEP, os.path.sep) + basename = os.path.join(self.srcdir, docname) + for suffix in self.source_suffix: + if os.path.isfile(basename + suffix): + break + else: + # document does not exist + suffix = list(self.source_suffix)[0] + + if basedir: + return basename + suffix + else: + return docname + suffix diff --git a/sphinx/sphinx/py.typed b/sphinx/sphinx/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/sphinx/sphinx/pycode/__init__.py b/sphinx/sphinx/pycode/__init__.py new file mode 100644 index 0000000..55d5d2c --- /dev/null +++ b/sphinx/sphinx/pycode/__init__.py @@ -0,0 +1,187 @@ +""" + sphinx.pycode + ~~~~~~~~~~~~~ + + Utilities parsing and analyzing Python code. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re +import tokenize +import warnings +from importlib import import_module +from io import StringIO +from os import path +from typing import Any, Dict, IO, List, Tuple, Optional +from zipfile import ZipFile + +from sphinx.deprecation import RemovedInSphinx40Warning +from sphinx.errors import PycodeError +from sphinx.pycode.parser import Parser + + +class ModuleAnalyzer: + # cache for analyzer objects -- caches both by module and file name + cache = {} # type: Dict[Tuple[str, str], Any] + + @staticmethod + def get_module_source(modname: str) -> Tuple[Optional[str], Optional[str]]: + """Try to find the source code for a module. + + Returns ('filename', 'source'). One of it can be None if + no filename or source found + """ + try: + mod = import_module(modname) + except Exception as err: + raise PycodeError('error importing %r' % modname, err) + loader = getattr(mod, '__loader__', None) + filename = getattr(mod, '__file__', None) + if loader and getattr(loader, 'get_source', None): + # prefer Native loader, as it respects #coding directive + try: + source = loader.get_source(modname) + if source: + # no exception and not None - it must be module source + return filename, source + except ImportError: + pass # Try other "source-mining" methods + if filename is None and loader and getattr(loader, 'get_filename', None): + # have loader, but no filename + try: + filename = loader.get_filename(modname) + except ImportError as err: + raise PycodeError('error getting filename for %r' % modname, err) + if filename is None: + # all methods for getting filename failed, so raise... + raise PycodeError('no source found for module %r' % modname) + filename = path.normpath(path.abspath(filename)) + if filename.lower().endswith(('.pyo', '.pyc')): + filename = filename[:-1] + if not path.isfile(filename) and path.isfile(filename + 'w'): + filename += 'w' + elif not filename.lower().endswith(('.py', '.pyw')): + raise PycodeError('source is not a .py file: %r' % filename) + elif ('.egg' + path.sep) in filename: + pat = '(?<=\\.egg)' + re.escape(path.sep) + eggpath, _ = re.split(pat, filename, 1) + if path.isfile(eggpath): + return filename, None + + if not path.isfile(filename): + raise PycodeError('source file is not present: %r' % filename) + return filename, None + + @classmethod + def for_string(cls, string: str, modname: str, srcname: str = '<string>' + ) -> "ModuleAnalyzer": + return cls(StringIO(string), modname, srcname, decoded=True) + + @classmethod + def for_file(cls, filename: str, modname: str) -> "ModuleAnalyzer": + if ('file', filename) in cls.cache: + return cls.cache['file', filename] + try: + with tokenize.open(filename) as f: + obj = cls(f, modname, filename, decoded=True) + cls.cache['file', filename] = obj + except Exception as err: + if '.egg' + path.sep in filename: + obj = cls.cache['file', filename] = cls.for_egg(filename, modname) + else: + raise PycodeError('error opening %r' % filename, err) + return obj + + @classmethod + def for_egg(cls, filename: str, modname: str) -> "ModuleAnalyzer": + SEP = re.escape(path.sep) + eggpath, relpath = re.split('(?<=\\.egg)' + SEP, filename) + try: + with ZipFile(eggpath) as egg: + code = egg.read(relpath).decode() + return cls.for_string(code, modname, filename) + except Exception as exc: + raise PycodeError('error opening %r' % filename, exc) + + @classmethod + def for_module(cls, modname: str) -> "ModuleAnalyzer": + if ('module', modname) in cls.cache: + entry = cls.cache['module', modname] + if isinstance(entry, PycodeError): + raise entry + return entry + + try: + filename, source = cls.get_module_source(modname) + if source is not None: + obj = cls.for_string(source, modname, filename or '<string>') + elif filename is not None: + obj = cls.for_file(filename, modname) + except PycodeError as err: + cls.cache['module', modname] = err + raise + cls.cache['module', modname] = obj + return obj + + def __init__(self, source: IO, modname: str, srcname: str, decoded: bool = False) -> None: + self.modname = modname # name of the module + self.srcname = srcname # name of the source file + + # cache the source code as well + pos = source.tell() + if not decoded: + warnings.warn('decode option for ModuleAnalyzer is deprecated.', + RemovedInSphinx40Warning) + self._encoding, _ = tokenize.detect_encoding(source.readline) + source.seek(pos) + self.code = source.read().decode(self._encoding) + else: + self._encoding = None + self.code = source.read() + + # will be filled by parse() + self.annotations = None # type: Dict[Tuple[str, str], str] + self.attr_docs = None # type: Dict[Tuple[str, str], List[str]] + self.tagorder = None # type: Dict[str, int] + self.tags = None # type: Dict[str, Tuple[str, int, int]] + + def parse(self) -> None: + """Parse the source code.""" + try: + parser = Parser(self.code, self._encoding) + parser.parse() + + self.attr_docs = {} + for (scope, comment) in parser.comments.items(): + if comment: + self.attr_docs[scope] = comment.splitlines() + [''] + else: + self.attr_docs[scope] = [''] + + self.annotations = parser.annotations + self.tags = parser.definitions + self.tagorder = parser.deforders + except Exception as exc: + raise PycodeError('parsing %r failed: %r' % (self.srcname, exc)) + + def find_attr_docs(self) -> Dict[Tuple[str, str], List[str]]: + """Find class and module-level attributes and their documentation.""" + if self.attr_docs is None: + self.parse() + + return self.attr_docs + + def find_tags(self) -> Dict[str, Tuple[str, int, int]]: + """Find class, function and method definitions and their location.""" + if self.tags is None: + self.parse() + + return self.tags + + @property + def encoding(self) -> str: + warnings.warn('ModuleAnalyzer.encoding is deprecated.', + RemovedInSphinx40Warning) + return self._encoding diff --git a/sphinx/sphinx/pycode/ast.py b/sphinx/sphinx/pycode/ast.py new file mode 100644 index 0000000..fb2a715 --- /dev/null +++ b/sphinx/sphinx/pycode/ast.py @@ -0,0 +1,183 @@ +""" + sphinx.pycode.ast + ~~~~~~~~~~~~~~~~~ + + Helpers for AST (Abstract Syntax Tree). + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import sys +from typing import Dict, List, Type + +if sys.version_info > (3, 8): + import ast +else: + try: + # use typed_ast module if installed + from typed_ast import ast3 as ast + except ImportError: + import ast # type: ignore + + +OPERATORS = { + ast.Add: "+", + ast.And: "and", + ast.BitAnd: "&", + ast.BitOr: "|", + ast.BitXor: "^", + ast.Div: "/", + ast.FloorDiv: "//", + ast.Invert: "~", + ast.LShift: "<<", + ast.MatMult: "@", + ast.Mult: "*", + ast.Mod: "%", + ast.Not: "not", + ast.Pow: "**", + ast.Or: "or", + ast.RShift: ">>", + ast.Sub: "-", + ast.UAdd: "+", + ast.USub: "-", +} # type: Dict[Type[ast.AST], str] + + +def parse(code: str, mode: str = 'exec') -> "ast.AST": + """Parse the *code* using built-in ast or typed_ast. + + This enables "type_comments" feature if possible. + """ + try: + # type_comments parameter is available on py38+ + return ast.parse(code, mode=mode, type_comments=True) # type: ignore + except TypeError: + # fallback to ast module. + # typed_ast is used to parse type_comments if installed. + return ast.parse(code, mode=mode) + + +def unparse(node: ast.AST) -> str: + """Unparse an AST to string.""" + if node is None: + return None + elif isinstance(node, str): + return node + elif node.__class__ in OPERATORS: + return OPERATORS[node.__class__] + elif isinstance(node, ast.arg): + if node.annotation: + return "%s: %s" % (node.arg, unparse(node.annotation)) + else: + return node.arg + elif isinstance(node, ast.arguments): + return unparse_arguments(node) + elif isinstance(node, ast.Attribute): + return "%s.%s" % (unparse(node.value), node.attr) + elif isinstance(node, ast.BinOp): + return " ".join(unparse(e) for e in [node.left, node.op, node.right]) + elif isinstance(node, ast.BoolOp): + op = " %s " % unparse(node.op) + return op.join(unparse(e) for e in node.values) + elif isinstance(node, ast.Bytes): + return repr(node.s) + elif isinstance(node, ast.Call): + args = ([unparse(e) for e in node.args] + + ["%s=%s" % (k.arg, unparse(k.value)) for k in node.keywords]) + return "%s(%s)" % (unparse(node.func), ", ".join(args)) + elif isinstance(node, ast.Dict): + keys = (unparse(k) for k in node.keys) + values = (unparse(v) for v in node.values) + items = (k + ": " + v for k, v in zip(keys, values)) + return "{" + ", ".join(items) + "}" + elif isinstance(node, ast.Ellipsis): + return "..." + elif isinstance(node, ast.Index): + return unparse(node.value) + elif isinstance(node, ast.Lambda): + return "lambda %s: ..." % unparse(node.args) + elif isinstance(node, ast.List): + return "[" + ", ".join(unparse(e) for e in node.elts) + "]" + elif isinstance(node, ast.Name): + return node.id + elif isinstance(node, ast.NameConstant): + return repr(node.value) + elif isinstance(node, ast.Num): + return repr(node.n) + elif isinstance(node, ast.Set): + return "{" + ", ".join(unparse(e) for e in node.elts) + "}" + elif isinstance(node, ast.Str): + return repr(node.s) + elif isinstance(node, ast.Subscript): + return "%s[%s]" % (unparse(node.value), unparse(node.slice)) + elif isinstance(node, ast.UnaryOp): + return "%s %s" % (unparse(node.op), unparse(node.operand)) + elif isinstance(node, ast.Tuple): + if node.elts: + return ", ".join(unparse(e) for e in node.elts) + else: + return "()" + elif sys.version_info > (3, 6) and isinstance(node, ast.Constant): + # this branch should be placed at last + return repr(node.value) + else: + raise NotImplementedError('Unable to parse %s object' % type(node).__name__) + + +def unparse_arguments(node: ast.arguments) -> str: + """Unparse an arguments to string.""" + defaults = list(node.defaults) + positionals = len(node.args) + posonlyargs = 0 + if hasattr(node, "posonlyargs"): # for py38+ + posonlyargs += len(node.posonlyargs) # type:ignore + positionals += posonlyargs + for _ in range(len(defaults), positionals): + defaults.insert(0, None) + + kw_defaults = list(node.kw_defaults) + for _ in range(len(kw_defaults), len(node.kwonlyargs)): + kw_defaults.insert(0, None) + + args = [] # type: List[str] + if hasattr(node, "posonlyargs"): # for py38+ + for i, arg in enumerate(node.posonlyargs): # type: ignore + name = unparse(arg) + if defaults[i]: + if arg.annotation: + name += " = %s" % unparse(defaults[i]) + else: + name += "=%s" % unparse(defaults[i]) + args.append(name) + + if node.posonlyargs: # type: ignore + args.append('/') + + for i, arg in enumerate(node.args): + name = unparse(arg) + if defaults[i + posonlyargs]: + if arg.annotation: + name += " = %s" % unparse(defaults[i + posonlyargs]) + else: + name += "=%s" % unparse(defaults[i + posonlyargs]) + args.append(name) + + if node.vararg: + args.append("*" + unparse(node.vararg)) + + if node.kwonlyargs and not node.vararg: + args.append('*') + for i, arg in enumerate(node.kwonlyargs): + name = unparse(arg) + if kw_defaults[i]: + if arg.annotation: + name += " = %s" % unparse(kw_defaults[i]) + else: + name += "=%s" % unparse(kw_defaults[i]) + args.append(name) + + if node.kwarg: + args.append("**" + unparse(node.kwarg)) + + return ", ".join(args) diff --git a/sphinx/sphinx/pycode/parser.py b/sphinx/sphinx/pycode/parser.py new file mode 100644 index 0000000..cb3cf0c --- /dev/null +++ b/sphinx/sphinx/pycode/parser.py @@ -0,0 +1,517 @@ +""" + sphinx.pycode.parser + ~~~~~~~~~~~~~~~~~~~~ + + Utilities parsing and analyzing Python code. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" +import inspect +import itertools +import re +import sys +import tokenize +from token import NAME, NEWLINE, INDENT, DEDENT, NUMBER, OP, STRING +from tokenize import COMMENT, NL +from typing import Any, Dict, List, Tuple + +from sphinx.pycode.ast import ast # for py37 or older +from sphinx.pycode.ast import parse, unparse + + +comment_re = re.compile('^\\s*#: ?(.*)\r?\n?$') +indent_re = re.compile('^\\s*$') +emptyline_re = re.compile('^\\s*(#.*)?$') + + +if sys.version_info >= (3, 6): + ASSIGN_NODES = (ast.Assign, ast.AnnAssign) +else: + ASSIGN_NODES = (ast.Assign) + + +def filter_whitespace(code: str) -> str: + return code.replace('\f', ' ') # replace FF (form feed) with whitespace + + +def get_assign_targets(node: ast.AST) -> List[ast.expr]: + """Get list of targets from Assign and AnnAssign node.""" + if isinstance(node, ast.Assign): + return node.targets + else: + return [node.target] # type: ignore + + +def get_lvar_names(node: ast.AST, self: ast.arg = None) -> List[str]: + """Convert assignment-AST to variable names. + + This raises `TypeError` if the assignment does not create new variable:: + + ary[0] = 'foo' + dic["bar"] = 'baz' + # => TypeError + """ + if self: + self_id = self.arg + + node_name = node.__class__.__name__ + if node_name in ('Index', 'Num', 'Slice', 'Str', 'Subscript'): + raise TypeError('%r does not create new variable' % node) + elif node_name == 'Name': + if self is None or node.id == self_id: # type: ignore + return [node.id] # type: ignore + else: + raise TypeError('The assignment %r is not instance variable' % node) + elif node_name in ('Tuple', 'List'): + members = [] + for elt in node.elts: # type: ignore + try: + members.extend(get_lvar_names(elt, self)) + except TypeError: + pass + return members + elif node_name == 'Attribute': + if node.value.__class__.__name__ == 'Name' and self and node.value.id == self_id: # type: ignore # NOQA + # instance variable + return ["%s" % get_lvar_names(node.attr, self)[0]] # type: ignore + else: + raise TypeError('The assignment %r is not instance variable' % node) + elif node_name == 'str': + return [node] # type: ignore + elif node_name == 'Starred': + return get_lvar_names(node.value, self) # type: ignore + else: + raise NotImplementedError('Unexpected node name %r' % node_name) + + +def dedent_docstring(s: str) -> str: + """Remove common leading indentation from docstring.""" + def dummy() -> None: + # dummy function to mock `inspect.getdoc`. + pass + + dummy.__doc__ = s + docstring = inspect.getdoc(dummy) + return docstring.lstrip("\r\n").rstrip("\r\n") + + +class Token: + """Better token wrapper for tokenize module.""" + + def __init__(self, kind: int, value: Any, start: Tuple[int, int], end: Tuple[int, int], + source: str) -> None: + self.kind = kind + self.value = value + self.start = start + self.end = end + self.source = source + + def __eq__(self, other: Any) -> bool: + if isinstance(other, int): + return self.kind == other + elif isinstance(other, str): + return self.value == other + elif isinstance(other, (list, tuple)): + return [self.kind, self.value] == list(other) + elif other is None: + return False + else: + raise ValueError('Unknown value: %r' % other) + + def match(self, *conditions: Any) -> bool: + return any(self == candidate for candidate in conditions) + + def __repr__(self) -> str: + return '<Token kind=%r value=%r>' % (tokenize.tok_name[self.kind], + self.value.strip()) + + +class TokenProcessor: + def __init__(self, buffers: List[str]) -> None: + lines = iter(buffers) + self.buffers = buffers + self.tokens = tokenize.generate_tokens(lambda: next(lines)) + self.current = None # type: Token + self.previous = None # type: Token + + def get_line(self, lineno: int) -> str: + """Returns specified line.""" + return self.buffers[lineno - 1] + + def fetch_token(self) -> Token: + """Fetch a next token from source code. + + Returns ``None`` if sequence finished. + """ + try: + self.previous = self.current + self.current = Token(*next(self.tokens)) + except StopIteration: + self.current = None + + return self.current + + def fetch_until(self, condition: Any) -> List[Token]: + """Fetch tokens until specified token appeared. + + .. note:: This also handles parenthesis well. + """ + tokens = [] + while self.fetch_token(): + tokens.append(self.current) + if self.current == condition: + break + elif self.current == [OP, '(']: + tokens += self.fetch_until([OP, ')']) + elif self.current == [OP, '{']: + tokens += self.fetch_until([OP, '}']) + elif self.current == [OP, '[']: + tokens += self.fetch_until([OP, ']']) + + return tokens + + +class AfterCommentParser(TokenProcessor): + """Python source code parser to pick up comment after assignment. + + This parser takes a python code starts with assignment statement, + and returns the comments for variable if exists. + """ + + def __init__(self, lines: List[str]) -> None: + super().__init__(lines) + self.comment = None # type: str + + def fetch_rvalue(self) -> List[Token]: + """Fetch right-hand value of assignment.""" + tokens = [] + while self.fetch_token(): + tokens.append(self.current) + if self.current == [OP, '(']: + tokens += self.fetch_until([OP, ')']) + elif self.current == [OP, '{']: + tokens += self.fetch_until([OP, '}']) + elif self.current == [OP, '[']: + tokens += self.fetch_until([OP, ']']) + elif self.current == INDENT: + tokens += self.fetch_until(DEDENT) + elif self.current == [OP, ';']: + break + elif self.current.kind not in (OP, NAME, NUMBER, STRING): + break + + return tokens + + def parse(self) -> None: + """Parse the code and obtain comment after assignment.""" + # skip lvalue (or whole of AnnAssign) + while not self.fetch_token().match([OP, '='], NEWLINE, COMMENT): + assert self.current + + # skip rvalue (if exists) + if self.current == [OP, '=']: + self.fetch_rvalue() + + if self.current == COMMENT: + self.comment = self.current.value + + +class VariableCommentPicker(ast.NodeVisitor): + """Python source code parser to pick up variable comments.""" + + def __init__(self, buffers: List[str], encoding: str) -> None: + self.counter = itertools.count() + self.buffers = buffers + self.encoding = encoding + self.context = [] # type: List[str] + self.current_classes = [] # type: List[str] + self.current_function = None # type: ast.FunctionDef + self.comments = {} # type: Dict[Tuple[str, str], str] + self.annotations = {} # type: Dict[Tuple[str, str], str] + self.previous = None # type: ast.AST + self.deforders = {} # type: Dict[str, int] + super().__init__() + + def add_entry(self, name: str) -> None: + if self.current_function: + if self.current_classes and self.context[-1] == "__init__": + # store variable comments inside __init__ method of classes + definition = self.context[:-1] + [name] + else: + return + else: + definition = self.context + [name] + + self.deforders[".".join(definition)] = next(self.counter) + + def add_variable_comment(self, name: str, comment: str) -> None: + if self.current_function: + if self.current_classes and self.context[-1] == "__init__": + # store variable comments inside __init__ method of classes + context = ".".join(self.context[:-1]) + else: + return + else: + context = ".".join(self.context) + + self.comments[(context, name)] = comment + + def add_variable_annotation(self, name: str, annotation: ast.AST) -> None: + if self.current_function: + if self.current_classes and self.context[-1] == "__init__": + # store variable comments inside __init__ method of classes + context = ".".join(self.context[:-1]) + else: + return + else: + context = ".".join(self.context) + + self.annotations[(context, name)] = unparse(annotation) + + def get_self(self) -> ast.arg: + """Returns the name of first argument if in function.""" + if self.current_function and self.current_function.args.args: + return self.current_function.args.args[0] + else: + return None + + def get_line(self, lineno: int) -> str: + """Returns specified line.""" + return self.buffers[lineno - 1] + + def visit(self, node: ast.AST) -> None: + """Updates self.previous to .""" + super().visit(node) + self.previous = node + + def visit_Import(self, node: ast.Import) -> None: + """Handles Import node and record it to definition orders.""" + for name in node.names: + if name.asname: + self.add_entry(name.asname) + else: + self.add_entry(name.name) + + def visit_ImportFrom(self, node: ast.Import) -> None: + """Handles Import node and record it to definition orders.""" + for name in node.names: + if name.asname: + self.add_entry(name.asname) + else: + self.add_entry(name.name) + + def visit_Assign(self, node: ast.Assign) -> None: + """Handles Assign node and pick up a variable comment.""" + try: + targets = get_assign_targets(node) + varnames = sum([get_lvar_names(t, self=self.get_self()) for t in targets], []) # type: List[str] # NOQA + current_line = self.get_line(node.lineno) + except TypeError: + return # this assignment is not new definition! + + # record annotation + if hasattr(node, 'annotation') and node.annotation: # type: ignore + for varname in varnames: + self.add_variable_annotation(varname, node.annotation) # type: ignore + elif hasattr(node, 'type_comment') and node.type_comment: + for varname in varnames: + self.add_variable_annotation(varname, node.type_comment) # type: ignore + + # check comments after assignment + parser = AfterCommentParser([current_line[node.col_offset:]] + + self.buffers[node.lineno:]) + parser.parse() + if parser.comment and comment_re.match(parser.comment): + for varname in varnames: + self.add_variable_comment(varname, comment_re.sub('\\1', parser.comment)) + self.add_entry(varname) + return + + # check comments before assignment + if indent_re.match(current_line[:node.col_offset]): + comment_lines = [] + for i in range(node.lineno - 1): + before_line = self.get_line(node.lineno - 1 - i) + if comment_re.match(before_line): + comment_lines.append(comment_re.sub('\\1', before_line)) + else: + break + + if comment_lines: + comment = dedent_docstring('\n'.join(reversed(comment_lines))) + for varname in varnames: + self.add_variable_comment(varname, comment) + self.add_entry(varname) + return + + # not commented (record deforders only) + for varname in varnames: + self.add_entry(varname) + + def visit_AnnAssign(self, node: ast.AST) -> None: # Note: ast.AnnAssign not found in py35 + """Handles AnnAssign node and pick up a variable comment.""" + self.visit_Assign(node) # type: ignore + + def visit_Expr(self, node: ast.Expr) -> None: + """Handles Expr node and pick up a comment if string.""" + if (isinstance(self.previous, ASSIGN_NODES) and isinstance(node.value, ast.Str)): + try: + targets = get_assign_targets(self.previous) + varnames = get_lvar_names(targets[0], self.get_self()) + for varname in varnames: + if isinstance(node.value.s, str): + docstring = node.value.s + else: + docstring = node.value.s.decode(self.encoding or 'utf-8') + + self.add_variable_comment(varname, dedent_docstring(docstring)) + self.add_entry(varname) + except TypeError: + pass # this assignment is not new definition! + + def visit_Try(self, node: ast.Try) -> None: + """Handles Try node and processes body and else-clause. + + .. note:: pycode parser ignores objects definition in except-clause. + """ + for subnode in node.body: + self.visit(subnode) + for subnode in node.orelse: + self.visit(subnode) + + def visit_ClassDef(self, node: ast.ClassDef) -> None: + """Handles ClassDef node and set context.""" + self.current_classes.append(node.name) + self.add_entry(node.name) + self.context.append(node.name) + self.previous = node + for child in node.body: + self.visit(child) + self.context.pop() + self.current_classes.pop() + + def visit_FunctionDef(self, node: ast.FunctionDef) -> None: + """Handles FunctionDef node and set context.""" + if self.current_function is None: + self.add_entry(node.name) # should be called before setting self.current_function + self.context.append(node.name) + self.current_function = node + for child in node.body: + self.visit(child) + self.context.pop() + self.current_function = None + + def visit_AsyncFunctionDef(self, node: ast.AsyncFunctionDef) -> None: + """Handles AsyncFunctionDef node and set context.""" + self.visit_FunctionDef(node) # type: ignore + + +class DefinitionFinder(TokenProcessor): + """Python source code parser to detect location of functions, + classes and methods. + """ + + def __init__(self, lines: List[str]) -> None: + super().__init__(lines) + self.decorator = None # type: Token + self.context = [] # type: List[str] + self.indents = [] # type: List + self.definitions = {} # type: Dict[str, Tuple[str, int, int]] + + def add_definition(self, name: str, entry: Tuple[str, int, int]) -> None: + """Add a location of definition.""" + if self.indents and self.indents[-1][0] == 'def' and entry[0] == 'def': + # ignore definition of inner function + pass + else: + self.definitions[name] = entry + + def parse(self) -> None: + """Parse the code to obtain location of definitions.""" + while True: + token = self.fetch_token() + if token is None: + break + elif token == COMMENT: + pass + elif token == [OP, '@'] and (self.previous is None or + self.previous.match(NEWLINE, NL, INDENT, DEDENT)): + if self.decorator is None: + self.decorator = token + elif token.match([NAME, 'class']): + self.parse_definition('class') + elif token.match([NAME, 'def']): + self.parse_definition('def') + elif token == INDENT: + self.indents.append(('other', None, None)) + elif token == DEDENT: + self.finalize_block() + + def parse_definition(self, typ: str) -> None: + """Parse AST of definition.""" + name = self.fetch_token() + self.context.append(name.value) + funcname = '.'.join(self.context) + + if self.decorator: + start_pos = self.decorator.start[0] + self.decorator = None + else: + start_pos = name.start[0] + + self.fetch_until([OP, ':']) + if self.fetch_token().match(COMMENT, NEWLINE): + self.fetch_until(INDENT) + self.indents.append((typ, funcname, start_pos)) + else: + # one-liner + self.add_definition(funcname, (typ, start_pos, name.end[0])) + self.context.pop() + + def finalize_block(self) -> None: + """Finalize definition block.""" + definition = self.indents.pop() + if definition[0] != 'other': + typ, funcname, start_pos = definition + end_pos = self.current.end[0] - 1 + while emptyline_re.match(self.get_line(end_pos)): + end_pos -= 1 + + self.add_definition(funcname, (typ, start_pos, end_pos)) + self.context.pop() + + +class Parser: + """Python source code parser to pick up variable comments. + + This is a better wrapper for ``VariableCommentPicker``. + """ + + def __init__(self, code: str, encoding: str = 'utf-8') -> None: + self.code = filter_whitespace(code) + self.encoding = encoding + self.annotations = {} # type: Dict[Tuple[str, str], str] + self.comments = {} # type: Dict[Tuple[str, str], str] + self.deforders = {} # type: Dict[str, int] + self.definitions = {} # type: Dict[str, Tuple[str, int, int]] + + def parse(self) -> None: + """Parse the source code.""" + self.parse_comments() + self.parse_definition() + + def parse_comments(self) -> None: + """Parse the code and pick up comments.""" + tree = parse(self.code) + picker = VariableCommentPicker(self.code.splitlines(True), self.encoding) + picker.visit(tree) + self.annotations = picker.annotations + self.comments = picker.comments + self.deforders = picker.deforders + + def parse_definition(self) -> None: + """Parse the location of definitions from the code.""" + parser = DefinitionFinder(self.code.splitlines(True)) + parser.parse() + self.definitions = parser.definitions diff --git a/sphinx/sphinx/pygments_styles.py b/sphinx/sphinx/pygments_styles.py new file mode 100644 index 0000000..c5b07e7 --- /dev/null +++ b/sphinx/sphinx/pygments_styles.py @@ -0,0 +1,95 @@ +""" + sphinx.pygments_styles + ~~~~~~~~~~~~~~~~~~~~~~ + + Sphinx theme specific highlighting styles. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from pygments.style import Style +from pygments.styles.friendly import FriendlyStyle +from pygments.token import Generic, Comment, Number, Whitespace, Keyword, \ + Operator, Name, String, Error + + +class NoneStyle(Style): + """Style without any styling.""" + + +class SphinxStyle(Style): + """ + Like friendly, but a bit darker to enhance contrast on the green + background. + """ + + background_color = '#eeffcc' + default_style = '' + + styles = FriendlyStyle.styles + styles.update({ + Generic.Output: '#333', + Comment: 'italic #408090', + Number: '#208050', + }) + + +class PyramidStyle(Style): + """ + Pylons/pyramid pygments style based on friendly style, by Blaise Laflamme. + """ + + # work in progress... + + background_color = "#f8f8f8" + default_style = "" + + styles = { + Whitespace: "#bbbbbb", + Comment: "italic #60a0b0", + Comment.Preproc: "noitalic #007020", + Comment.Special: "noitalic bg:#fff0f0", + + Keyword: "bold #007020", + Keyword.Pseudo: "nobold", + Keyword.Type: "nobold #902000", + + Operator: "#666666", + Operator.Word: "bold #007020", + + Name.Builtin: "#007020", + Name.Function: "#06287e", + Name.Class: "bold #0e84b5", + Name.Namespace: "bold #0e84b5", + Name.Exception: "#007020", + Name.Variable: "#bb60d5", + Name.Constant: "#60add5", + Name.Label: "bold #002070", + Name.Entity: "bold #d55537", + Name.Attribute: "#0e84b5", + Name.Tag: "bold #062873", + Name.Decorator: "bold #555555", + + String: "#4070a0", + String.Doc: "italic", + String.Interpol: "italic #70a0d0", + String.Escape: "bold #4070a0", + String.Regex: "#235388", + String.Symbol: "#517918", + String.Other: "#c65d09", + Number: "#40a070", + + Generic.Heading: "bold #000080", + Generic.Subheading: "bold #800080", + Generic.Deleted: "#A00000", + Generic.Inserted: "#00A000", + Generic.Error: "#FF0000", + Generic.Emph: "italic", + Generic.Strong: "bold", + Generic.Prompt: "bold #c65d09", + Generic.Output: "#888", + Generic.Traceback: "#04D", + + Error: "#a40000 bg:#fbe3e4" + } diff --git a/sphinx/sphinx/registry.py b/sphinx/sphinx/registry.py new file mode 100644 index 0000000..200f59d --- /dev/null +++ b/sphinx/sphinx/registry.py @@ -0,0 +1,462 @@ +""" + sphinx.registry + ~~~~~~~~~~~~~~~ + + Sphinx component registry. + + :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import traceback +from importlib import import_module +from types import MethodType +from typing import Any, Callable, Dict, Iterator, List, Tuple, Union + +from docutils import nodes +from docutils.io import Input +from docutils.nodes import Element, Node, TextElement +from docutils.parsers import Parser +from docutils.parsers.rst import Directive +from docutils.transforms import Transform +from pkg_resources import iter_entry_points + +from sphinx.builders import Builder +from sphinx.config import Config +from sphinx.domains import Domain, Index, ObjType +from sphinx.domains.std import GenericObject, Target +from sphinx.environment import BuildEnvironment +from sphinx.errors import ExtensionError, SphinxError, VersionRequirementError +from sphinx.extension import Extension +from sphinx.locale import __ +from sphinx.parsers import Parser as SphinxParser +from sphinx.roles import XRefRole +from sphinx.util import logging +from sphinx.util.logging import prefixed_warnings +from sphinx.util.typing import RoleFunction, TitleGetter + +if False: + # For type annotation + from typing import Type # for python3.5.1 + from sphinx.application import Sphinx + from sphinx.ext.autodoc import Documenter + +logger = logging.getLogger(__name__) + +# list of deprecated extensions. Keys are extension name. +# Values are Sphinx version that merge the extension. +EXTENSION_BLACKLIST = { + "sphinxjp.themecore": "1.2" +} + + +class SphinxComponentRegistry: + def __init__(self) -> None: + #: special attrgetter for autodoc; class object -> attrgetter + self.autodoc_attrgettrs = {} # type: Dict[Type, Callable[[Any, str, Any], Any]] + + #: builders; a dict of builder name -> bulider class + self.builders = {} # type: Dict[str, Type[Builder]] + + #: autodoc documenters; a dict of documenter name -> documenter class + self.documenters = {} # type: Dict[str, Type[Documenter]] + + #: css_files; a list of tuple of filename and attributes + self.css_files = [] # type: List[Tuple[str, Dict[str, str]]] + + #: domains; a dict of domain name -> domain class + self.domains = {} # type: Dict[str, Type[Domain]] + + #: additional directives for domains + #: a dict of domain name -> dict of directive name -> directive + self.domain_directives = {} # type: Dict[str, Dict[str, Any]] + + #: additional indices for domains + #: a dict of domain name -> list of index class + self.domain_indices = {} # type: Dict[str, List[Type[Index]]] + + #: additional object types for domains + #: a dict of domain name -> dict of objtype name -> objtype + self.domain_object_types = {} # type: Dict[str, Dict[str, ObjType]] + + #: additional roles for domains + #: a dict of domain name -> dict of role name -> role impl. + self.domain_roles = {} # type: Dict[str, Dict[str, Union[RoleFunction, XRefRole]]] # NOQA + + #: additional enumerable nodes + #: a dict of node class -> tuple of figtype and title_getter function + self.enumerable_nodes = {} # type: Dict[Type[Node], Tuple[str, TitleGetter]] + + #: HTML inline and block math renderers + #: a dict of name -> tuple of visit function and depart function + self.html_inline_math_renderers = {} # type: Dict[str, Tuple[Callable, Callable]] + self.html_block_math_renderers = {} # type: Dict[str, Tuple[Callable, Callable]] + + #: js_files; list of JS paths or URLs + self.js_files = [] # type: List[Tuple[str, Dict[str, str]]] + + #: LaTeX packages; list of package names and its options + self.latex_packages = [] # type: List[Tuple[str, str]] + + #: post transforms; list of transforms + self.post_transforms = [] # type: List[Type[Transform]] + + #: source paresrs; file type -> parser class + self.source_parsers = {} # type: Dict[str, Type[Parser]] + + #: source inputs; file type -> input class + self.source_inputs = {} # type: Dict[str, Type[Input]] + + #: source suffix: suffix -> file type + self.source_suffix = {} # type: Dict[str, str] + + #: custom translators; builder name -> translator class + self.translators = {} # type: Dict[str, Type[nodes.NodeVisitor]] + + #: custom handlers for translators + #: a dict of builder name -> dict of node name -> visitor and departure functions + self.translation_handlers = {} # type: Dict[str, Dict[str, Tuple[Callable, Callable]]] + + #: additional transforms; list of transforms + self.transforms = [] # type: List[Type[Transform]] + + def add_builder(self, builder: "Type[Builder]", override: bool = False) -> None: + logger.debug('[app] adding builder: %r', builder) + if not hasattr(builder, 'name'): + raise ExtensionError(__('Builder class %s has no "name" attribute') % builder) + if builder.name in self.builders and not override: + raise ExtensionError(__('Builder %r already exists (in module %s)') % + (builder.name, self.builders[builder.name].__module__)) + self.builders[builder.name] = builder + + def preload_builder(self, app: "Sphinx", name: str) -> None: + if name is None: + return + + if name not in self.builders: + entry_points = iter_entry_points('sphinx.builders', name) + try: + entry_point = next(entry_points) + except StopIteration: + raise SphinxError(__('Builder name %s not registered or available' + ' through entry point') % name) + + self.load_extension(app, entry_point.module_name) + + def create_builder(self, app: "Sphinx", name: str) -> Builder: + if name not in self.builders: + raise SphinxError(__('Builder name %s not registered') % name) + + return self.builders[name](app) + + def add_domain(self, domain: "Type[Domain]", override: bool = False) -> None: + logger.debug('[app] adding domain: %r', domain) + if domain.name in self.domains and not override: + raise ExtensionError(__('domain %s already registered') % domain.name) + self.domains[domain.name] = domain + + def has_domain(self, domain: str) -> bool: + return domain in self.domains + + def create_domains(self, env: BuildEnvironment) -> Iterator[Domain]: + for DomainClass in self.domains.values(): + domain = DomainClass(env) + + # transplant components added by extensions + domain.directives.update(self.domain_directives.get(domain.name, {})) + domain.roles.update(self.domain_roles.get(domain.name, {})) + domain.indices.extend(self.domain_indices.get(domain.name, [])) + for name, objtype in self.domain_object_types.get(domain.name, {}).items(): + domain.add_object_type(name, objtype) + + yield domain + + def add_directive_to_domain(self, domain: str, name: str, + cls: "Type[Directive]", override: bool = False) -> None: + logger.debug('[app] adding directive to domain: %r', (domain, name, cls)) + if domain not in self.domains: + raise ExtensionError(__('domain %s not yet registered') % domain) + + directives = self.domain_directives.setdefault(domain, {}) + if name in directives and not override: + raise ExtensionError(__('The %r directive is already registered to domain %s') % + (name, domain)) + directives[name] = cls + + def add_role_to_domain(self, domain: str, name: str, + role: Union[RoleFunction, XRefRole], override: bool = False + ) -> None: + logger.debug('[app] adding role to domain: %r', (domain, name, role)) + if domain not in self.domains: + raise ExtensionError(__('domain %s not yet registered') % domain) + roles = self.domain_roles.setdefault(domain, {}) + if name in roles and not override: + raise ExtensionError(__('The %r role is already registered to domain %s') % + (name, domain)) + roles[name] = role + + def add_index_to_domain(self, domain: str, index: "Type[Index]", + override: bool = False) -> None: + logger.debug('[app] adding index to domain: %r', (domain, index)) + if domain not in self.domains: + raise ExtensionError(__('domain %s not yet registered') % domain) + indices = self.domain_indices.setdefault(domain, []) + if index in indices and not override: + raise ExtensionError(__('The %r index is already registered to domain %s') % + (index.name, domain)) + indices.append(index) + + def add_object_type(self, directivename: str, rolename: str, indextemplate: str = '', + parse_node: Callable = None, ref_nodeclass: "Type[TextElement]" = None, + objname: str = '', doc_field_types: List = [], override: bool = False + ) -> None: + logger.debug('[app] adding object type: %r', + (directivename, rolename, indextemplate, parse_node, + ref_nodeclass, objname, doc_field_types)) + + # create a subclass of GenericObject as the new directive + directive = type(directivename, + (GenericObject, object), + {'indextemplate': indextemplate, + 'parse_node': staticmethod(parse_node), + 'doc_field_types': doc_field_types}) + + self.add_directive_to_domain('std', directivename, directive) + self.add_role_to_domain('std', rolename, XRefRole(innernodeclass=ref_nodeclass)) + + object_types = self.domain_object_types.setdefault('std', {}) + if directivename in object_types and not override: + raise ExtensionError(__('The %r object_type is already registered') % + directivename) + object_types[directivename] = ObjType(objname or directivename, rolename) + + def add_crossref_type(self, directivename: str, rolename: str, indextemplate: str = '', + ref_nodeclass: "Type[TextElement]" = None, objname: str = '', + override: bool = False) -> None: + logger.debug('[app] adding crossref type: %r', + (directivename, rolename, indextemplate, ref_nodeclass, objname)) + + # create a subclass of Target as the new directive + directive = type(directivename, + (Target, object), + {'indextemplate': indextemplate}) + + self.add_directive_to_domain('std', directivename, directive) + self.add_role_to_domain('std', rolename, XRefRole(innernodeclass=ref_nodeclass)) + + object_types = self.domain_object_types.setdefault('std', {}) + if directivename in object_types and not override: + raise ExtensionError(__('The %r crossref_type is already registered') % + directivename) + object_types[directivename] = ObjType(objname or directivename, rolename) + + def add_source_suffix(self, suffix: str, filetype: str, override: bool = False) -> None: + logger.debug('[app] adding source_suffix: %r, %r', suffix, filetype) + if suffix in self.source_suffix and not override: + raise ExtensionError(__('source_suffix %r is already registered') % suffix) + else: + self.source_suffix[suffix] = filetype + + def add_source_parser(self, parser: "Type[Parser]", **kwargs: Any) -> None: + logger.debug('[app] adding search source_parser: %r', parser) + + # create a map from filetype to parser + for filetype in parser.supported: + if filetype in self.source_parsers and not kwargs.get('override'): + raise ExtensionError(__('source_parser for %r is already registered') % + filetype) + else: + self.source_parsers[filetype] = parser + + def get_source_parser(self, filetype: str) -> "Type[Parser]": + try: + return self.source_parsers[filetype] + except KeyError: + raise SphinxError(__('Source parser for %s not registered') % filetype) + + def get_source_parsers(self) -> Dict[str, "Type[Parser]"]: + return self.source_parsers + + def create_source_parser(self, app: "Sphinx", filename: str) -> Parser: + parser_class = self.get_source_parser(filename) + parser = parser_class() + if isinstance(parser, SphinxParser): + parser.set_application(app) + return parser + + def get_source_input(self, filetype: str) -> "Type[Input]": + try: + return self.source_inputs[filetype] + except KeyError: + try: + # use special source_input for unknown filetype + return self.source_inputs['*'] + except KeyError: + return None + + def add_translator(self, name: str, translator: "Type[nodes.NodeVisitor]", + override: bool = False) -> None: + logger.debug('[app] Change of translator for the %s builder.', name) + if name in self.translators and not override: + raise ExtensionError(__('Translator for %r already exists') % name) + self.translators[name] = translator + + def add_translation_handlers(self, node: "Type[Element]", + **kwargs: Tuple[Callable, Callable]) -> None: + logger.debug('[app] adding translation_handlers: %r, %r', node, kwargs) + for builder_name, handlers in kwargs.items(): + translation_handlers = self.translation_handlers.setdefault(builder_name, {}) + try: + visit, depart = handlers # unpack once for assertion + translation_handlers[node.__name__] = (visit, depart) + except ValueError: + raise ExtensionError(__('kwargs for add_node() must be a (visit, depart) ' + 'function tuple: %r=%r') % (builder_name, handlers)) + + def get_translator_class(self, builder: Builder) -> "Type[nodes.NodeVisitor]": + return self.translators.get(builder.name, + builder.default_translator_class) + + def create_translator(self, builder: Builder, *args: Any) -> nodes.NodeVisitor: + translator_class = self.get_translator_class(builder) + assert translator_class, "translator not found for %s" % builder.name + translator = translator_class(*args) + + # transplant handlers for custom nodes to translator instance + handlers = self.translation_handlers.get(builder.name, None) + if handlers is None: + # retry with builder.format + handlers = self.translation_handlers.get(builder.format, {}) + + for name, (visit, depart) in handlers.items(): + setattr(translator, 'visit_' + name, MethodType(visit, translator)) + if depart: + setattr(translator, 'depart_' + name, MethodType(depart, translator)) + + return translator + + def add_transform(self, transform: "Type[Transform]") -> None: + logger.debug('[app] adding transform: %r', transform) + self.transforms.append(transform) + + def get_transforms(self) -> List["Type[Transform]"]: + return self.transforms + + def add_post_transform(self, transform: "Type[Transform]") -> None: + logger.debug('[app] adding post transform: %r', transform) + self.post_transforms.append(transform) + + def get_post_transforms(self) -> List["Type[Transform]"]: + return self.post_transforms + + def add_documenter(self, objtype: str, documenter: "Type[Documenter]") -> None: + self.documenters[objtype] = documenter + + def add_autodoc_attrgetter(self, typ: "Type", + attrgetter: Callable[[Any, str, Any], Any]) -> None: + self.autodoc_attrgettrs[typ] = attrgetter + + def add_css_files(self, filename: str, **attributes: str) -> None: + self.css_files.append((filename, attributes)) + + def add_js_file(self, filename: str, **attributes: str) -> None: + logger.debug('[app] adding js_file: %r, %r', filename, attributes) + self.js_files.append((filename, attributes)) + + def add_latex_package(self, name: str, options: str) -> None: + logger.debug('[app] adding latex package: %r', name) + self.latex_packages.append((name, options)) + + def add_enumerable_node(self, node: "Type[Node]", figtype: str, + title_getter: TitleGetter = None, override: bool = False) -> None: + logger.debug('[app] adding enumerable node: (%r, %r, %r)', node, figtype, title_getter) + if node in self.enumerable_nodes and not override: + raise ExtensionError(__('enumerable_node %r already registered') % node) + self.enumerable_nodes[node] = (figtype, title_getter) + + def add_html_math_renderer(self, name: str, + inline_renderers: Tuple[Callable, Callable], + block_renderers: Tuple[Callable, Callable]) -> None: + logger.debug('[app] adding html_math_renderer: %s, %r, %r', + name, inline_renderers, block_renderers) + if name in self.html_inline_math_renderers: + raise ExtensionError(__('math renderer %s is already registred') % name) + + self.html_inline_math_renderers[name] = inline_renderers + self.html_block_math_renderers[name] = block_renderers + + def load_extension(self, app: "Sphinx", extname: str) -> None: + """Load a Sphinx extension.""" + if extname in app.extensions: # alread loaded + return + if extname in EXTENSION_BLACKLIST: + logger.warning(__('the extension %r was already merged with Sphinx since ' + 'version %s; this extension is ignored.'), + extname, EXTENSION_BLACKLIST[extname]) + return + + # update loading context + prefix = __('while setting up extension %s:') % extname + with prefixed_warnings(prefix): + try: + mod = import_module(extname) + except ImportError as err: + logger.verbose(__('Original exception:\n') + traceback.format_exc()) + raise ExtensionError(__('Could not import extension %s') % extname, err) + + setup = getattr(mod, 'setup', None) + if setup is None: + logger.warning(__('extension %r has no setup() function; is it really ' + 'a Sphinx extension module?'), extname) + metadata = {} # type: Dict[str, Any] + else: + try: + metadata = setup(app) + except VersionRequirementError as err: + # add the extension name to the version required + raise VersionRequirementError( + __('The %s extension used by this project needs at least ' + 'Sphinx v%s; it therefore cannot be built with this ' + 'version.') % (extname, err) + ) + + if metadata is None: + metadata = {} + elif not isinstance(metadata, dict): + logger.warning(__('extension %r returned an unsupported object from ' + 'its setup() function; it should return None or a ' + 'metadata dictionary'), extname) + metadata = {} + + app.extensions[extname] = Extension(extname, mod, **metadata) + + def get_envversion(self, app: "Sphinx") -> Dict[str, str]: + from sphinx.environment import ENV_VERSION + envversion = {ext.name: ext.metadata['env_version'] for ext in app.extensions.values() + if ext.metadata.get('env_version')} + envversion['sphinx'] = ENV_VERSION + return envversion + + +def merge_source_suffix(app: "Sphinx", config: Config) -> None: + """Merge source_suffix which specified by user and added by extensions.""" + for suffix, filetype in app.registry.source_suffix.items(): + if suffix not in app.config.source_suffix: + app.config.source_suffix[suffix] = filetype + elif app.config.source_suffix[suffix] is None: + # filetype is not specified (default filetype). + # So it overrides default filetype by extensions setting. + app.config.source_suffix[suffix] = filetype + + # copy config.source_suffix to registry + app.registry.source_suffix = app.config.source_suffix + + +def setup(app: "Sphinx") -> Dict[str, Any]: + app.connect('config-inited', merge_source_suffix, priority=800) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/roles.py b/sphinx/sphinx/roles.py new file mode 100644 index 0000000..8621918 --- /dev/null +++ b/sphinx/sphinx/roles.py @@ -0,0 +1,630 @@ +""" + sphinx.roles + ~~~~~~~~~~~~ + + Handlers for additional ReST roles. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re +import warnings +from typing import Any, Dict, List, Tuple +from typing import Type # for python3.5.1 + +from docutils import nodes, utils +from docutils.nodes import Element, Node, TextElement, system_message +from docutils.parsers.rst.states import Inliner + +from sphinx import addnodes +from sphinx.deprecation import RemovedInSphinx40Warning +from sphinx.locale import _ +from sphinx.util import ws_re +from sphinx.util.docutils import ReferenceRole, SphinxRole +from sphinx.util.nodes import ( + split_explicit_title, process_index_entry, set_role_source_info +) +from sphinx.util.typing import RoleFunction + +if False: + # For type annotation + from sphinx.application import Sphinx + from sphinx.environment import BuildEnvironment + + +generic_docroles = { + 'command': addnodes.literal_strong, + 'dfn': nodes.emphasis, + 'kbd': nodes.literal, + 'mailheader': addnodes.literal_emphasis, + 'makevar': addnodes.literal_strong, + 'manpage': addnodes.manpage, + 'mimetype': addnodes.literal_emphasis, + 'newsgroup': addnodes.literal_emphasis, + 'program': addnodes.literal_strong, # XXX should be an x-ref + 'regexp': nodes.literal, +} + + +# -- generic cross-reference role ---------------------------------------------- + +class XRefRole(ReferenceRole): + """ + A generic cross-referencing role. To create a callable that can be used as + a role function, create an instance of this class. + + The general features of this role are: + + * Automatic creation of a reference and a content node. + * Optional separation of title and target with `title <target>`. + * The implementation is a class rather than a function to make + customization easier. + + Customization can be done in two ways: + + * Supplying constructor parameters: + * `fix_parens` to normalize parentheses (strip from target, and add to + title if configured) + * `lowercase` to lowercase the target + * `nodeclass` and `innernodeclass` select the node classes for + the reference and the content node + + * Subclassing and overwriting `process_link()` and/or `result_nodes()`. + """ + + nodeclass = addnodes.pending_xref # type: Type[Element] + innernodeclass = nodes.literal # type: Type[TextElement] + + def __init__(self, fix_parens: bool = False, lowercase: bool = False, + nodeclass: Type[Element] = None, innernodeclass: Type[TextElement] = None, + warn_dangling: bool = False) -> None: + self.fix_parens = fix_parens + self.lowercase = lowercase + self.warn_dangling = warn_dangling + if nodeclass is not None: + self.nodeclass = nodeclass + if innernodeclass is not None: + self.innernodeclass = innernodeclass + + super().__init__() + + def _fix_parens(self, env: "BuildEnvironment", has_explicit_title: bool, title: str, + target: str) -> Tuple[str, str]: + warnings.warn('XRefRole._fix_parens() is deprecated.', + RemovedInSphinx40Warning, stacklevel=2) + if not has_explicit_title: + if title.endswith('()'): + # remove parentheses + title = title[:-2] + if env.config.add_function_parentheses: + # add them back to all occurrences if configured + title += '()' + # remove parentheses from the target too + if target.endswith('()'): + target = target[:-2] + return title, target + + def update_title_and_target(self, title: str, target: str) -> Tuple[str, str]: + if not self.has_explicit_title: + if title.endswith('()'): + # remove parentheses + title = title[:-2] + if self.config.add_function_parentheses: + # add them back to all occurrences if configured + title += '()' + # remove parentheses from the target too + if target.endswith('()'): + target = target[:-2] + return title, target + + def run(self) -> Tuple[List[Node], List[system_message]]: + if ':' not in self.name: + self.refdomain, self.reftype = '', self.name + self.classes = ['xref', self.reftype] + else: + self.refdomain, self.reftype = self.name.split(':', 1) + self.classes = ['xref', self.refdomain, '%s-%s' % (self.refdomain, self.reftype)] + + if self.disabled: + return self.create_non_xref_node() + else: + return self.create_xref_node() + + def create_non_xref_node(self) -> Tuple[List[Node], List[system_message]]: + text = utils.unescape(self.text[1:]) + if self.fix_parens: + self.has_explicit_title = False # treat as implicit + text, target = self.update_title_and_target(text, "") + + node = self.innernodeclass(self.rawtext, text, classes=self.classes) + return self.result_nodes(self.inliner.document, self.env, node, is_ref=False) + + def create_xref_node(self) -> Tuple[List[Node], List[system_message]]: + target = self.target + title = self.title + if self.lowercase: + target = target.lower() + if self.fix_parens: + title, target = self.update_title_and_target(title, target) + + # create the reference node + options = {'refdoc': self.env.docname, + 'refdomain': self.refdomain, + 'reftype': self.reftype, + 'refexplicit': self.has_explicit_title, + 'refwarn': self.warn_dangling} + refnode = self.nodeclass(self.rawtext, **options) + self.set_source_info(refnode) + + # determine the target and title for the class + title, target = self.process_link(self.env, refnode, self.has_explicit_title, + title, target) + refnode['reftarget'] = target + refnode += self.innernodeclass(self.rawtext, title, classes=self.classes) + + return self.result_nodes(self.inliner.document, self.env, refnode, is_ref=True) + + # methods that can be overwritten + + def process_link(self, env: "BuildEnvironment", refnode: Element, has_explicit_title: bool, + title: str, target: str) -> Tuple[str, str]: + """Called after parsing title and target text, and creating the + reference node (given in *refnode*). This method can alter the + reference node and must return a new (or the same) ``(title, target)`` + tuple. + """ + return title, ws_re.sub(' ', target) + + def result_nodes(self, document: nodes.document, env: "BuildEnvironment", node: Element, + is_ref: bool) -> Tuple[List[Node], List[system_message]]: + """Called before returning the finished nodes. *node* is the reference + node if one was created (*is_ref* is then true), else the content node. + This method can add other nodes and must return a ``(nodes, messages)`` + tuple (the usual return value of a role function). + """ + return [node], [] + + +class AnyXRefRole(XRefRole): + def process_link(self, env: "BuildEnvironment", refnode: Element, has_explicit_title: bool, + title: str, target: str) -> Tuple[str, str]: + result = super().process_link(env, refnode, has_explicit_title, title, target) + # add all possible context info (i.e. std:program, py:module etc.) + refnode.attributes.update(env.ref_context) + return result + + +def indexmarkup_role(typ: str, rawtext: str, text: str, lineno: int, inliner: Inliner, + options: Dict = {}, content: List[str] = [] + ) -> Tuple[List[Node], List[system_message]]: + """Role for PEP/RFC references that generate an index entry.""" + warnings.warn('indexmarkup_role() is deprecated. Please use PEP or RFC class instead.', + RemovedInSphinx40Warning, stacklevel=2) + env = inliner.document.settings.env + if not typ: + assert env.temp_data['default_role'] + typ = env.temp_data['default_role'].lower() + else: + typ = typ.lower() + + has_explicit_title, title, target = split_explicit_title(text) + title = utils.unescape(title) + target = utils.unescape(target) + targetid = 'index-%s' % env.new_serialno('index') + indexnode = addnodes.index() + targetnode = nodes.target('', '', ids=[targetid]) + inliner.document.note_explicit_target(targetnode) + if typ == 'pep': + indexnode['entries'] = [ + ('single', _('Python Enhancement Proposals; PEP %s') % target, + targetid, '', None)] + anchor = '' + anchorindex = target.find('#') + if anchorindex > 0: + target, anchor = target[:anchorindex], target[anchorindex:] + if not has_explicit_title: + title = "PEP " + utils.unescape(title) + try: + pepnum = int(target) + except ValueError: + msg = inliner.reporter.error('invalid PEP number %s' % target, + line=lineno) + prb = inliner.problematic(rawtext, rawtext, msg) + return [prb], [msg] + ref = inliner.document.settings.pep_base_url + 'pep-%04d' % pepnum + sn = nodes.strong(title, title) + rn = nodes.reference('', '', internal=False, refuri=ref + anchor, + classes=[typ]) + rn += sn + return [indexnode, targetnode, rn], [] + elif typ == 'rfc': + indexnode['entries'] = [ + ('single', 'RFC; RFC %s' % target, targetid, '', None)] + anchor = '' + anchorindex = target.find('#') + if anchorindex > 0: + target, anchor = target[:anchorindex], target[anchorindex:] + if not has_explicit_title: + title = "RFC " + utils.unescape(title) + try: + rfcnum = int(target) + except ValueError: + msg = inliner.reporter.error('invalid RFC number %s' % target, + line=lineno) + prb = inliner.problematic(rawtext, rawtext, msg) + return [prb], [msg] + ref = inliner.document.settings.rfc_base_url + inliner.rfc_url % rfcnum + sn = nodes.strong(title, title) + rn = nodes.reference('', '', internal=False, refuri=ref + anchor, + classes=[typ]) + rn += sn + return [indexnode, targetnode, rn], [] + else: + raise ValueError('unknown role type: %s' % typ) + + +class PEP(ReferenceRole): + def run(self) -> Tuple[List[Node], List[system_message]]: + target_id = 'index-%s' % self.env.new_serialno('index') + entries = [('single', _('Python Enhancement Proposals; PEP %s') % self.target, + target_id, '', None)] + + index = addnodes.index(entries=entries) + target = nodes.target('', '', ids=[target_id]) + self.inliner.document.note_explicit_target(target) + + try: + refuri = self.build_uri() + reference = nodes.reference('', '', internal=False, refuri=refuri, classes=['pep']) + if self.has_explicit_title: + reference += nodes.strong(self.title, self.title) + else: + title = "PEP " + self.title + reference += nodes.strong(title, title) + except ValueError: + msg = self.inliner.reporter.error('invalid PEP number %s' % self.target, + line=self.lineno) + prb = self.inliner.problematic(self.rawtext, self.rawtext, msg) + return [prb], [msg] + + return [index, target, reference], [] + + def build_uri(self) -> str: + base_url = self.inliner.document.settings.pep_base_url + ret = self.target.split('#', 1) + if len(ret) == 2: + return base_url + 'pep-%04d#%s' % (int(ret[0]), ret[1]) + else: + return base_url + 'pep-%04d' % int(ret[0]) + + +class RFC(ReferenceRole): + def run(self) -> Tuple[List[Node], List[system_message]]: + target_id = 'index-%s' % self.env.new_serialno('index') + entries = [('single', 'RFC; RFC %s' % self.target, target_id, '', None)] + + index = addnodes.index(entries=entries) + target = nodes.target('', '', ids=[target_id]) + self.inliner.document.note_explicit_target(target) + + try: + refuri = self.build_uri() + reference = nodes.reference('', '', internal=False, refuri=refuri, classes=['rfc']) + if self.has_explicit_title: + reference += nodes.strong(self.title, self.title) + else: + title = "RFC " + self.title + reference += nodes.strong(title, title) + except ValueError: + msg = self.inliner.reporter.error('invalid RFC number %s' % self.target, + line=self.lineno) + prb = self.inliner.problematic(self.rawtext, self.rawtext, msg) + return [prb], [msg] + + return [index, target, reference], [] + + def build_uri(self) -> str: + base_url = self.inliner.document.settings.rfc_base_url + ret = self.target.split('#', 1) + if len(ret) == 2: + return base_url + self.inliner.rfc_url % int(ret[0]) + '#' + ret[1] + else: + return base_url + self.inliner.rfc_url % int(ret[0]) + + +_amp_re = re.compile(r'(?<!&)&(?![&\s])') + + +def menusel_role(typ: str, rawtext: str, text: str, lineno: int, inliner: Inliner, + options: Dict = {}, content: List[str] = [] + ) -> Tuple[List[Node], List[system_message]]: + warnings.warn('menusel_role() is deprecated. ' + 'Please use MenuSelection or GUILabel class instead.', + RemovedInSphinx40Warning, stacklevel=2) + env = inliner.document.settings.env + if not typ: + assert env.temp_data['default_role'] + typ = env.temp_data['default_role'].lower() + else: + typ = typ.lower() + + text = utils.unescape(text) + if typ == 'menuselection': + text = text.replace('-->', '\N{TRIANGULAR BULLET}') + spans = _amp_re.split(text) + + node = nodes.inline(rawtext=rawtext) + for i, span in enumerate(spans): + span = span.replace('&&', '&') + if i == 0: + if len(span) > 0: + textnode = nodes.Text(span) + node += textnode + continue + accel_node = nodes.inline() + letter_node = nodes.Text(span[0]) + accel_node += letter_node + accel_node['classes'].append('accelerator') + node += accel_node + textnode = nodes.Text(span[1:]) + node += textnode + + node['classes'].append(typ) + return [node], [] + + +class GUILabel(SphinxRole): + amp_re = re.compile(r'(?<!&)&(?![&\s])') + + def run(self) -> Tuple[List[Node], List[system_message]]: + node = nodes.inline(rawtext=self.rawtext, classes=[self.name]) + spans = self.amp_re.split(self.text) + node += nodes.Text(spans.pop(0)) + for span in spans: + span = span.replace('&&', '&') + + letter = nodes.Text(span[0]) + accelerator = nodes.inline('', '', letter, classes=['accelerator']) + node += accelerator + node += nodes.Text(span[1:]) + + return [node], [] + + +class MenuSelection(GUILabel): + BULLET_CHARACTER = '\N{TRIANGULAR BULLET}' + + def run(self) -> Tuple[List[Node], List[system_message]]: + self.text = self.text.replace('-->', self.BULLET_CHARACTER) + return super().run() + + +_litvar_re = re.compile('{([^}]+)}') +parens_re = re.compile(r'(\\*{|\\*})') + + +def emph_literal_role(typ: str, rawtext: str, text: str, lineno: int, inliner: Inliner, + options: Dict = {}, content: List[str] = [] + ) -> Tuple[List[Node], List[system_message]]: + warnings.warn('emph_literal_role() is deprecated. ' + 'Please use EmphasizedLiteral class instead.', + RemovedInSphinx40Warning, stacklevel=2) + env = inliner.document.settings.env + if not typ: + assert env.temp_data['default_role'] + typ = env.temp_data['default_role'].lower() + else: + typ = typ.lower() + + retnode = nodes.literal(role=typ.lower(), classes=[typ]) + parts = list(parens_re.split(utils.unescape(text))) + stack = [''] + for part in parts: + matched = parens_re.match(part) + if matched: + backslashes = len(part) - 1 + if backslashes % 2 == 1: # escaped + stack[-1] += "\\" * int((backslashes - 1) / 2) + part[-1] + elif part[-1] == '{': # rparen + stack[-1] += "\\" * int(backslashes / 2) + if len(stack) >= 2 and stack[-2] == "{": + # nested + stack[-1] += "{" + else: + # start emphasis + stack.append('{') + stack.append('') + else: # lparen + stack[-1] += "\\" * int(backslashes / 2) + if len(stack) == 3 and stack[1] == "{" and len(stack[2]) > 0: + # emphasized word found + if stack[0]: + retnode += nodes.Text(stack[0], stack[0]) + retnode += nodes.emphasis(stack[2], stack[2]) + stack = [''] + else: + # emphasized word not found; the rparen is not a special symbol + stack.append('}') + stack = [''.join(stack)] + else: + stack[-1] += part + if ''.join(stack): + # remaining is treated as Text + text = ''.join(stack) + retnode += nodes.Text(text, text) + + return [retnode], [] + + +class EmphasizedLiteral(SphinxRole): + parens_re = re.compile(r'(\\\\|\\{|\\}|{|})') + + def run(self) -> Tuple[List[Node], List[system_message]]: + children = self.parse(self.text) + node = nodes.literal(self.rawtext, '', *children, + role=self.name.lower(), classes=[self.name]) + + return [node], [] + + def parse(self, text: str) -> List[Node]: + result = [] # type: List[Node] + + stack = [''] + for part in self.parens_re.split(text): + if part == '\\\\': # escaped backslash + stack[-1] += '\\' + elif part == '{': + if len(stack) >= 2 and stack[-2] == "{": # nested + stack[-1] += "{" + else: + # start emphasis + stack.append('{') + stack.append('') + elif part == '}': + if len(stack) == 3 and stack[1] == "{" and len(stack[2]) > 0: + # emphasized word found + if stack[0]: + result.append(nodes.Text(stack[0], stack[0])) + result.append(nodes.emphasis(stack[2], stack[2])) + stack = [''] + else: + # emphasized word not found; the rparen is not a special symbol + stack.append('}') + stack = [''.join(stack)] + elif part == '\\{': # escaped left-brace + stack[-1] += '{' + elif part == '\\}': # escaped right-brace + stack[-1] += '}' + else: # others (containing escaped braces) + stack[-1] += part + + if ''.join(stack): + # remaining is treated as Text + text = ''.join(stack) + result.append(nodes.Text(text, text)) + + return result + + +_abbr_re = re.compile(r'\((.*)\)$', re.S) + + +def abbr_role(typ: str, rawtext: str, text: str, lineno: int, inliner: Inliner, + options: Dict = {}, content: List[str] = [] + ) -> Tuple[List[Node], List[system_message]]: + warnings.warn('abbr_role() is deprecated. Please use Abbrevation class instead.', + RemovedInSphinx40Warning, stacklevel=2) + text = utils.unescape(text) + m = _abbr_re.search(text) + if m is None: + return [nodes.abbreviation(text, text, **options)], [] + abbr = text[:m.start()].strip() + expl = m.group(1) + options = options.copy() + options['explanation'] = expl + return [nodes.abbreviation(abbr, abbr, **options)], [] + + +class Abbreviation(SphinxRole): + abbr_re = re.compile(r'\((.*)\)$', re.S) + + def run(self) -> Tuple[List[Node], List[system_message]]: + matched = self.abbr_re.search(self.text) + if matched: + text = self.text[:matched.start()].strip() + self.options['explanation'] = matched.group(1) + else: + text = self.text + + return [nodes.abbreviation(self.rawtext, text, **self.options)], [] + + +def index_role(typ: str, rawtext: str, text: str, lineno: int, inliner: Inliner, + options: Dict = {}, content: List[str] = [] + ) -> Tuple[List[Node], List[system_message]]: + warnings.warn('index_role() is deprecated. Please use Index class instead.', + RemovedInSphinx40Warning, stacklevel=2) + # create new reference target + env = inliner.document.settings.env + targetid = 'index-%s' % env.new_serialno('index') + targetnode = nodes.target('', '', ids=[targetid]) + # split text and target in role content + has_explicit_title, title, target = split_explicit_title(text) + title = utils.unescape(title) + target = utils.unescape(target) + # if an explicit target is given, we can process it as a full entry + if has_explicit_title: + entries = process_index_entry(target, targetid) + # otherwise we just create a "single" entry + else: + # but allow giving main entry + main = '' + if target.startswith('!'): + target = target[1:] + title = title[1:] + main = 'main' + entries = [('single', target, targetid, main, None)] + indexnode = addnodes.index() + indexnode['entries'] = entries + set_role_source_info(inliner, lineno, indexnode) + textnode = nodes.Text(title, title) + return [indexnode, targetnode, textnode], [] + + +class Index(ReferenceRole): + def run(self) -> Tuple[List[Node], List[system_message]]: + warnings.warn('Index role is deprecated.', RemovedInSphinx40Warning) + target_id = 'index-%s' % self.env.new_serialno('index') + if self.has_explicit_title: + # if an explicit target is given, process it as a full entry + title = self.title + entries = process_index_entry(self.target, target_id) + else: + # otherwise we just create a single entry + if self.target.startswith('!'): + title = self.title[1:] + entries = [('single', self.target[1:], target_id, 'main', None)] + else: + title = self.title + entries = [('single', self.target, target_id, '', None)] + + index = addnodes.index(entries=entries) + target = nodes.target('', '', ids=[target_id]) + text = nodes.Text(title, title) + self.set_source_info(index) + return [index, target, text], [] + + +specific_docroles = { + # links to download references + 'download': XRefRole(nodeclass=addnodes.download_reference), + # links to anything + 'any': AnyXRefRole(warn_dangling=True), + + 'pep': PEP(), + 'rfc': RFC(), + 'guilabel': GUILabel(), + 'menuselection': MenuSelection(), + 'file': EmphasizedLiteral(), + 'samp': EmphasizedLiteral(), + 'abbr': Abbreviation(), +} # type: Dict[str, RoleFunction] + + +def setup(app: "Sphinx") -> Dict[str, Any]: + from docutils.parsers.rst import roles + + for rolename, nodeclass in generic_docroles.items(): + generic = roles.GenericRole(rolename, nodeclass) + role = roles.CustomRole(rolename, generic, {'classes': [rolename]}) + roles.register_local_role(rolename, role) + + for rolename, func in specific_docroles.items(): + roles.register_local_role(rolename, func) + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } diff --git a/sphinx/sphinx/search/__init__.py b/sphinx/sphinx/search/__init__.py new file mode 100644 index 0000000..d9853ff --- /dev/null +++ b/sphinx/sphinx/search/__init__.py @@ -0,0 +1,454 @@ +""" + sphinx.search + ~~~~~~~~~~~~~ + + Create a full-text search index for offline search. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" +import html +import pickle +import re +import warnings +from importlib import import_module +from os import path +from typing import Any, Dict, IO, Iterable, List, Tuple, Set + +from docutils import nodes +from docutils.nodes import Node + +from sphinx import addnodes +from sphinx import package_dir +from sphinx.deprecation import RemovedInSphinx40Warning +from sphinx.environment import BuildEnvironment +from sphinx.search.jssplitter import splitter_code +from sphinx.util import jsdump, rpartition + +if False: + # For type annotation + from typing import Type # for python3.5.1 + + +class SearchLanguage: + """ + This class is the base class for search natural language preprocessors. If + you want to add support for a new language, you should override the methods + of this class. + + You should override `lang` class property too (e.g. 'en', 'fr' and so on). + + .. attribute:: stopwords + + This is a set of stop words of the target language. Default `stopwords` + is empty. This word is used for building index and embedded in JS. + + .. attribute:: js_splitter_code + + Return splitter funcion of JavaScript version. The function should be + named as ``splitQuery``. And it should take a string and return list of + strings. + + .. versionadded:: 3.0 + + .. attribute:: js_stemmer_code + + Return stemmer class of JavaScript version. This class' name should be + ``Stemmer`` and this class must have ``stemWord`` method. This string is + embedded as-is in searchtools.js. + + This class is used to preprocess search word which Sphinx HTML readers + type, before searching index. Default implementation does nothing. + """ + lang = None # type: str + language_name = None # type: str + stopwords = set() # type: Set[str] + js_splitter_code = None # type: str + js_stemmer_rawcode = None # type: str + js_stemmer_code = """ +/** + * Dummy stemmer for languages without stemming rules. + */ +var Stemmer = function() { + this.stemWord = function(w) { + return w; + } +} +""" + + _word_re = re.compile(r'(?u)\w+') + + def __init__(self, options: Dict) -> None: + self.options = options + self.init(options) + + def init(self, options: Dict) -> None: + """ + Initialize the class with the options the user has given. + """ + + def split(self, input: str) -> List[str]: + """ + This method splits a sentence into words. Default splitter splits input + at white spaces, which should be enough for most languages except CJK + languages. + """ + return self._word_re.findall(input) + + def stem(self, word: str) -> str: + """ + This method implements stemming algorithm of the Python version. + + Default implementation does nothing. You should implement this if the + language has any stemming rules. + + This class is used to preprocess search words before registering them in + the search index. The stemming of the Python version and the JS version + (given in the js_stemmer_code attribute) must be compatible. + """ + return word + + def word_filter(self, word: str) -> bool: + """ + Return true if the target word should be registered in the search index. + This method is called after stemming. + """ + return ( + len(word) == 0 or not ( + ((len(word) < 3) and (12353 < ord(word[0]) < 12436)) or + (ord(word[0]) < 256 and ( + len(word) < 3 or word in self.stopwords or word.isdigit() + )))) + + +# SearchEnglish imported after SearchLanguage is defined due to circular import +from sphinx.search.en import SearchEnglish + + +def parse_stop_word(source: str) -> Set[str]: + """ + parse snowball style word list like this: + + * http://snowball.tartarus.org/algorithms/finnish/stop.txt + """ + result = set() # type: Set[str] + for line in source.splitlines(): + line = line.split('|')[0] # remove comment + result.update(line.split()) + return result + + +# maps language name to module.class or directly a class +languages = { + 'da': 'sphinx.search.da.SearchDanish', + 'de': 'sphinx.search.de.SearchGerman', + 'en': SearchEnglish, + 'es': 'sphinx.search.es.SearchSpanish', + 'fi': 'sphinx.search.fi.SearchFinnish', + 'fr': 'sphinx.search.fr.SearchFrench', + 'hu': 'sphinx.search.hu.SearchHungarian', + 'it': 'sphinx.search.it.SearchItalian', + 'ja': 'sphinx.search.ja.SearchJapanese', + 'nl': 'sphinx.search.nl.SearchDutch', + 'no': 'sphinx.search.no.SearchNorwegian', + 'pt': 'sphinx.search.pt.SearchPortuguese', + 'ro': 'sphinx.search.ro.SearchRomanian', + 'ru': 'sphinx.search.ru.SearchRussian', + 'sv': 'sphinx.search.sv.SearchSwedish', + 'tr': 'sphinx.search.tr.SearchTurkish', + 'zh': 'sphinx.search.zh.SearchChinese', +} # type: Dict[str, Any] + + +class _JavaScriptIndex: + """ + The search index as javascript file that calls a function + on the documentation search object to register the index. + """ + + PREFIX = 'Search.setIndex(' + SUFFIX = ')' + + def dumps(self, data: Any) -> str: + return self.PREFIX + jsdump.dumps(data) + self.SUFFIX + + def loads(self, s: str) -> Any: + data = s[len(self.PREFIX):-len(self.SUFFIX)] + if not data or not s.startswith(self.PREFIX) or not \ + s.endswith(self.SUFFIX): + raise ValueError('invalid data') + return jsdump.loads(data) + + def dump(self, data: Any, f: IO) -> None: + f.write(self.dumps(data)) + + def load(self, f: IO) -> Any: + return self.loads(f.read()) + + +js_index = _JavaScriptIndex() + + +class WordCollector(nodes.NodeVisitor): + """ + A special visitor that collects words for the `IndexBuilder`. + """ + + def __init__(self, document: nodes.document, lang: SearchLanguage) -> None: + super().__init__(document) + self.found_words = [] # type: List[str] + self.found_title_words = [] # type: List[str] + self.lang = lang + + def is_meta_keywords(self, node: addnodes.meta, nodetype: Any = None) -> bool: + if nodetype is not None: + warnings.warn('"nodetype" argument for WordCollector.is_meta_keywords() ' + 'is deprecated.', RemovedInSphinx40Warning) + + if isinstance(node, addnodes.meta) and node.get('name') == 'keywords': + meta_lang = node.get('lang') + if meta_lang is None: # lang not specified + return True + elif meta_lang == self.lang.lang: # matched to html_search_language + return True + + return False + + def dispatch_visit(self, node: Node) -> None: + if isinstance(node, nodes.comment): + raise nodes.SkipNode + elif isinstance(node, nodes.raw): + if 'html' in node.get('format', '').split(): + # Some people might put content in raw HTML that should be searched, + # so we just amateurishly strip HTML tags and index the remaining + # content + nodetext = re.sub(r'(?is)<style.*?</style>', '', node.astext()) + nodetext = re.sub(r'(?is)<script.*?</script>', '', nodetext) + nodetext = re.sub(r'<[^<]+?>', '', nodetext) + self.found_words.extend(self.lang.split(nodetext)) + raise nodes.SkipNode + elif isinstance(node, nodes.Text): + self.found_words.extend(self.lang.split(node.astext())) + elif isinstance(node, nodes.title): + self.found_title_words.extend(self.lang.split(node.astext())) + elif isinstance(node, addnodes.meta) and self.is_meta_keywords(node): + keywords = node['content'] + keywords = [keyword.strip() for keyword in keywords.split(',')] + self.found_words.extend(keywords) + + +class IndexBuilder: + """ + Helper class that creates a searchindex based on the doctrees + passed to the `feed` method. + """ + formats = { + 'jsdump': jsdump, + 'pickle': pickle + } + + def __init__(self, env: BuildEnvironment, lang: str, options: Dict, scoring: str) -> None: + self.env = env + self._titles = {} # type: Dict[str, str] + # docname -> title + self._filenames = {} # type: Dict[str, str] + # docname -> filename + self._mapping = {} # type: Dict[str, Set[str]] + # stemmed word -> set(docname) + self._title_mapping = {} # type: Dict[str, Set[str]] + # stemmed words in titles -> set(docname) + self._stem_cache = {} # type: Dict[str, str] + # word -> stemmed word + self._objtypes = {} # type: Dict[Tuple[str, str], int] + # objtype -> index + self._objnames = {} # type: Dict[int, Tuple[str, str, str]] + # objtype index -> (domain, type, objname (localized)) + lang_class = languages.get(lang) # type: Type[SearchLanguage] + # add language-specific SearchLanguage instance + + # fallback; try again with language-code + if lang_class is None and '_' in lang: + lang_class = languages.get(lang.split('_')[0]) + + if lang_class is None: + self.lang = SearchEnglish(options) # type: SearchLanguage + elif isinstance(lang_class, str): + module, classname = lang_class.rsplit('.', 1) + lang_class = getattr(import_module(module), classname) + self.lang = lang_class(options) + else: + # it's directly a class (e.g. added by app.add_search_language) + self.lang = lang_class(options) + + if scoring: + with open(scoring, 'rb') as fp: + self.js_scorer_code = fp.read().decode() + else: + self.js_scorer_code = '' + self.js_splitter_code = splitter_code + + def load(self, stream: IO, format: Any) -> None: + """Reconstruct from frozen data.""" + if isinstance(format, str): + format = self.formats[format] + frozen = format.load(stream) + # if an old index is present, we treat it as not existing. + if not isinstance(frozen, dict) or \ + frozen.get('envversion') != self.env.version: + raise ValueError('old format') + index2fn = frozen['docnames'] + self._filenames = dict(zip(index2fn, frozen['filenames'])) + self._titles = dict(zip(index2fn, frozen['titles'])) + + def load_terms(mapping: Dict[str, Any]) -> Dict[str, Set[str]]: + rv = {} + for k, v in mapping.items(): + if isinstance(v, int): + rv[k] = {index2fn[v]} + else: + rv[k] = {index2fn[i] for i in v} + return rv + + self._mapping = load_terms(frozen['terms']) + self._title_mapping = load_terms(frozen['titleterms']) + # no need to load keywords/objtypes + + def dump(self, stream: IO, format: Any) -> None: + """Dump the frozen index to a stream.""" + if isinstance(format, str): + format = self.formats[format] + format.dump(self.freeze(), stream) + + def get_objects(self, fn2index: Dict[str, int] + ) -> Dict[str, Dict[str, Tuple[int, int, int, str]]]: + rv = {} # type: Dict[str, Dict[str, Tuple[int, int, int, str]]] + otypes = self._objtypes + onames = self._objnames + for domainname, domain in sorted(self.env.domains.items()): + for fullname, dispname, type, docname, anchor, prio in \ + sorted(domain.get_objects()): + if docname not in fn2index: + continue + if prio < 0: + continue + fullname = html.escape(fullname) + dispname = html.escape(dispname) + prefix, name = rpartition(dispname, '.') + pdict = rv.setdefault(prefix, {}) + try: + typeindex = otypes[domainname, type] + except KeyError: + typeindex = len(otypes) + otypes[domainname, type] = typeindex + otype = domain.object_types.get(type) + if otype: + # use str() to fire translation proxies + onames[typeindex] = (domainname, type, + str(domain.get_type_name(otype))) + else: + onames[typeindex] = (domainname, type, type) + if anchor == fullname: + shortanchor = '' + elif anchor == type + '-' + fullname: + shortanchor = '-' + else: + shortanchor = anchor + pdict[name] = (fn2index[docname], typeindex, prio, shortanchor) + return rv + + def get_terms(self, fn2index: Dict) -> Tuple[Dict[str, List[str]], Dict[str, List[str]]]: + rvs = {}, {} # type: Tuple[Dict[str, List[str]], Dict[str, List[str]]] + for rv, mapping in zip(rvs, (self._mapping, self._title_mapping)): + for k, v in mapping.items(): + if len(v) == 1: + fn, = v + if fn in fn2index: + rv[k] = fn2index[fn] + else: + rv[k] = sorted([fn2index[fn] for fn in v if fn in fn2index]) + return rvs + + def freeze(self) -> Dict[str, Any]: + """Create a usable data structure for serializing.""" + docnames, titles = zip(*sorted(self._titles.items())) + filenames = [self._filenames.get(docname) for docname in docnames] + fn2index = {f: i for (i, f) in enumerate(docnames)} + terms, title_terms = self.get_terms(fn2index) + + objects = self.get_objects(fn2index) # populates _objtypes + objtypes = {v: k[0] + ':' + k[1] for (k, v) in self._objtypes.items()} + objnames = self._objnames + return dict(docnames=docnames, filenames=filenames, titles=titles, terms=terms, + objects=objects, objtypes=objtypes, objnames=objnames, + titleterms=title_terms, envversion=self.env.version) + + def label(self) -> str: + return "%s (code: %s)" % (self.lang.language_name, self.lang.lang) + + def prune(self, docnames: Iterable[str]) -> None: + """Remove data for all docnames not in the list.""" + new_titles = {} + new_filenames = {} + for docname in docnames: + if docname in self._titles: + new_titles[docname] = self._titles[docname] + new_filenames[docname] = self._filenames[docname] + self._titles = new_titles + self._filenames = new_filenames + for wordnames in self._mapping.values(): + wordnames.intersection_update(docnames) + for wordnames in self._title_mapping.values(): + wordnames.intersection_update(docnames) + + def feed(self, docname: str, filename: str, title: str, doctree: nodes.document) -> None: + """Feed a doctree to the index.""" + self._titles[docname] = title + self._filenames[docname] = filename + + visitor = WordCollector(doctree, self.lang) + doctree.walk(visitor) + + # memoize self.lang.stem + def stem(word: str) -> str: + try: + return self._stem_cache[word] + except KeyError: + self._stem_cache[word] = self.lang.stem(word).lower() + return self._stem_cache[word] + _filter = self.lang.word_filter + + for word in visitor.found_title_words: + stemmed_word = stem(word) + if _filter(stemmed_word): + self._title_mapping.setdefault(stemmed_word, set()).add(docname) + elif _filter(word): # stemmer must not remove words from search index + self._title_mapping.setdefault(word, set()).add(docname) + + for word in visitor.found_words: + stemmed_word = stem(word) + # again, stemmer must not remove words from search index + if not _filter(stemmed_word) and _filter(word): + stemmed_word = word + already_indexed = docname in self._title_mapping.get(stemmed_word, set()) + if _filter(stemmed_word) and not already_indexed: + self._mapping.setdefault(stemmed_word, set()).add(docname) + + def context_for_searchtool(self) -> Dict[str, Any]: + if self.lang.js_splitter_code: + js_splitter_code = self.lang.js_splitter_code + else: + js_splitter_code = self.js_splitter_code + + return { + 'search_language_stemming_code': self.lang.js_stemmer_code, + 'search_language_stop_words': jsdump.dumps(sorted(self.lang.stopwords)), + 'search_scorer_tool': self.js_scorer_code, + 'search_word_splitter_code': js_splitter_code, + } + + def get_js_stemmer_rawcode(self) -> str: + if self.lang.js_stemmer_rawcode: + return path.join(package_dir, 'search', 'non-minified-js', + self.lang.js_stemmer_rawcode) + else: + return None diff --git a/sphinx/sphinx/search/da.py b/sphinx/sphinx/search/da.py new file mode 100644 index 0000000..b04679e --- /dev/null +++ b/sphinx/sphinx/search/da.py @@ -0,0 +1,133 @@ +""" + sphinx.search.da + ~~~~~~~~~~~~~~~~ + + Danish search language: includes the JS Danish stemmer. + + :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + + +danish_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/danish/stop.txt +og | and +i | in +jeg | I +det | that (dem. pronoun)/it (pers. pronoun) +at | that (in front of a sentence)/to (with infinitive) +en | a/an +den | it (pers. pronoun)/that (dem. pronoun) +til | to/at/for/until/against/by/of/into, more +er | present tense of "to be" +som | who, as +på | on/upon/in/on/at/to/after/of/with/for, on +de | they +med | with/by/in, along +han | he +af | of/by/from/off/for/in/with/on, off +for | at/for/to/from/by/of/ago, in front/before, because +ikke | not +der | who/which, there/those +var | past tense of "to be" +mig | me/myself +sig | oneself/himself/herself/itself/themselves +men | but +et | a/an/one, one (number), someone/somebody/one +har | present tense of "to have" +om | round/about/for/in/a, about/around/down, if +vi | we +min | my +havde | past tense of "to have" +ham | him +hun | she +nu | now +over | over/above/across/by/beyond/past/on/about, over/past +da | then, when/as/since +fra | from/off/since, off, since +du | you +ud | out +sin | his/her/its/one's +dem | them +os | us/ourselves +op | up +man | you/one +hans | his +hvor | where +eller | or +hvad | what +skal | must/shall etc. +selv | myself/youself/herself/ourselves etc., even +her | here +alle | all/everyone/everybody etc. +vil | will (verb) +blev | past tense of "to stay/to remain/to get/to become" +kunne | could +ind | in +når | when +være | present tense of "to be" +dog | however/yet/after all +noget | something +ville | would +jo | you know/you see (adv), yes +deres | their/theirs +efter | after/behind/according to/for/by/from, later/afterwards +ned | down +skulle | should +denne | this +end | than +dette | this +mit | my/mine +også | also +under | under/beneath/below/during, below/underneath +have | have +dig | you +anden | other +hende | her +mine | my +alt | everything +meget | much/very, plenty of +sit | his, her, its, one's +sine | his, her, its, one's +vor | our +mod | against +disse | these +hvis | if +din | your/yours +nogle | some +hos | by/at +blive | be/become +mange | many +ad | by/through +bliver | present tense of "to be/to become" +hendes | her/hers +været | be +thi | for (conj) +jer | you +sådan | such, like this/like that +''') + +js_stemmer = """ +var JSX={};(function(g){function j(b,e){var a=function(){};a.prototype=e.prototype;var c=new a;for(var d in b){b[d].prototype=c}}function I(c,b){for(var a in b.prototype)if(b.prototype.hasOwnProperty(a))c.prototype[a]=b.prototype[a]}function i(a,b,d){function c(a,b,c){delete a[b];a[b]=c;return c}Object.defineProperty(a,b,{get:function(){return c(a,b,d())},set:function(d){c(a,b,d)},enumerable:true,configurable:true})}function J(a,b,c){return a[b]=a[b]/c|0}var E=parseInt;var D=parseFloat;function K(a){return a!==a}var A=isFinite;var z=encodeURIComponent;var y=decodeURIComponent;var x=encodeURI;var w=decodeURI;var u=Object.prototype.toString;var C=Object.prototype.hasOwnProperty;function f(){}g.require=function(b){var a=p[b];return a!==undefined?a:null};g.profilerIsRunning=function(){return f.getResults!=null};g.getProfileResults=function(){return(f.getResults||function(){return{}})()};g.postProfileResults=function(a,b){if(f.postResults==null)throw new Error('profiler has not been turned on');return f.postResults(a,b)};g.resetProfileResults=function(){if(f.resetResults==null)throw new Error('profiler has not been turned on');return f.resetResults()};g.DEBUG=false;function t(){};j([t],Error);function b(a,b,c){this.G=a.length;this.S=a;this.V=b;this.J=c;this.I=null;this.W=null};j([b],Object);function l(){};j([l],Object);function d(){var a;var b;var c;this.F={};a=this.D='';b=this._=0;c=this.A=a.length;this.B=0;this.C=b;this.E=c};j([d],l);function v(a,b){a.D=b.D;a._=b._;a.A=b.A;a.B=b.B;a.C=b.C;a.E=b.E};function n(b,d,c,e){var a;if(b._>=b.A){return false}a=b.D.charCodeAt(b._);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._++;return true};function m(b,d,c,e){var a;if(b._<=b.B){return false}a=b.D.charCodeAt(b._-1);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._--;return true};function r(a,d,c,e){var b;if(a._>=a.A){return false}b=a.D.charCodeAt(a._);if(b>e||b<c){a._++;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._++;return true}return false};function q(a,d,c,e){var b;if(a._<=a.B){return false}b=a.D.charCodeAt(a._-1);if(b>e||b<c){a._--;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._--;return true}return false};function h(a,b,d){var c;if(a._-a.B<b){return false}if(a.D.slice((c=a._)-b,c)!==d){return false}a._-=b;return true};function e(d,m,p){var b;var g;var e;var n;var f;var k;var l;var i;var h;var c;var a;var j;var o;b=0;g=p;e=d._;n=d.B;f=0;k=0;l=false;while(true){i=b+(g-b>>1);h=0;c=f<k?f:k;a=m[i];for(j=a.G-1-c;j>=0;j--){if(e-c===n){h=-1;break}h=d.D.charCodeAt(e-1-c)-a.S.charCodeAt(j);if(h!==0){break}c++}if(h<0){g=i;k=c}else{b=i;f=c}if(g-b<=1){if(b>0){break}if(g===b){break}if(l){break}l=true}}while(true){a=m[b];if(f>=a.G){d._=e-a.G|0;if(a.I==null){return a.J}o=a.I(d);d._=e-a.G|0;if(o){return a.J}}b=a.V;if(b<0){return 0}}return-1};function s(a,b,d,e){var c;c=e.length-(d-b);a.D=a.D.slice(0,b)+e+a.D.slice(d);a.A+=c|0;if(a._>=d){a._+=c|0}else if(a._>b){a._=b}return c|0};function c(a,f){var b;var c;var d;var e;b=false;if((c=a.C)<0||c>(d=a.E)||d>(e=a.A)||e>a.D.length?false:true){s(a,a.C,a.E,f);b=true}return b};function o(a,f){var b;var c;var d;var e;b='';if((c=a.C)<0||c>(d=a.E)||d>(e=a.A)||e>a.D.length?false:true){b=a.D.slice(a.C,a.E)}return b};d.prototype.H=function(){return false};d.prototype.T=function(b){var a;var c;var d;var e;a=this.F['.'+b];if(a==null){c=this.D=b;d=this._=0;e=this.A=c.length;this.B=0;this.C=d;this.E=e;this.H();a=this.D;this.F['.'+b]=a}return a};d.prototype.stemWord=d.prototype.T;d.prototype.U=function(e){var d;var b;var c;var a;var f;var g;var h;d=[];for(b=0;b<e.length;b++){c=e[b];a=this.F['.'+c];if(a==null){f=this.D=c;g=this._=0;h=this.A=f.length;this.B=0;this.C=g;this.E=h;this.H();a=this.D;this.F['.'+c]=a}d.push(a)}return d};d.prototype.stemWords=d.prototype.U;function a(){d.call(this);this.I_x=0;this.I_p1=0;this.S_ch=''};j([a],d);a.prototype.K=function(a){this.I_x=a.I_x;this.I_p1=a.I_p1;this.S_ch=a.S_ch;v(this,a)};a.prototype.copy_from=a.prototype.K;a.prototype.P=function(){var g;var d;var b;var e;var c;var f;var i;var j;var k;var h;this.I_p1=j=this.A;g=i=this._;b=i+3|0;if(0>b||b>j){return false}h=this._=b;this.I_x=h;this._=g;a:while(true){d=this._;e=true;b:while(e===true){e=false;if(!n(this,a.g_v,97,248)){break b}this._=d;break a}k=this._=d;if(k>=this.A){return false}this._++}a:while(true){c=true;b:while(c===true){c=false;if(!r(this,a.g_v,97,248)){break b}break a}if(this._>=this.A){return false}this._++}this.I_p1=this._;f=true;a:while(f===true){f=false;if(!(this.I_p1<this.I_x)){break a}this.I_p1=this.I_x}return true};a.prototype.r_mark_regions=a.prototype.P;function G(b){var h;var e;var c;var f;var d;var g;var j;var k;var l;var i;b.I_p1=k=b.A;h=j=b._;c=j+3|0;if(0>c||c>k){return false}i=b._=c;b.I_x=i;b._=h;a:while(true){e=b._;f=true;b:while(f===true){f=false;if(!n(b,a.g_v,97,248)){break b}b._=e;break a}l=b._=e;if(l>=b.A){return false}b._++}a:while(true){d=true;b:while(d===true){d=false;if(!r(b,a.g_v,97,248)){break b}break a}if(b._>=b.A){return false}b._++}b.I_p1=b._;g=true;a:while(g===true){g=false;if(!(b.I_p1<b.I_x)){break a}b.I_p1=b.I_x}return true};a.prototype.O=function(){var b;var f;var d;var g;var h;var i;f=this.A-(g=this._);if(g<this.I_p1){return false}h=this._=this.I_p1;d=this.B;this.B=h;i=this._=this.A-f;this.E=i;b=e(this,a.a_0,32);if(b===0){this.B=d;return false}this.C=this._;this.B=d;switch(b){case 0:return false;case 1:if(!c(this,'')){return false}break;case 2:if(!m(this,a.g_s_ending,97,229)){return false}if(!c(this,'')){return false}break}return true};a.prototype.r_main_suffix=a.prototype.O;function H(b){var d;var g;var f;var h;var i;var j;g=b.A-(h=b._);if(h<b.I_p1){return false}i=b._=b.I_p1;f=b.B;b.B=i;j=b._=b.A-g;b.E=j;d=e(b,a.a_0,32);if(d===0){b.B=f;return false}b.C=b._;b.B=f;switch(d){case 0:return false;case 1:if(!c(b,'')){return false}break;case 2:if(!m(b,a.g_s_ending,97,229)){return false}if(!c(b,'')){return false}break}return true};a.prototype.N=function(){var f;var g;var b;var h;var d;var i;var j;var k;var l;f=(h=this.A)-(d=this._);g=h-d;if(d<this.I_p1){return false}i=this._=this.I_p1;b=this.B;this.B=i;j=this._=this.A-g;this.E=j;if(e(this,a.a_1,4)===0){this.B=b;return false}this.C=this._;l=this.B=b;k=this._=this.A-f;if(k<=l){return false}this._--;this.C=this._;return!c(this,'')?false:true};a.prototype.r_consonant_pair=a.prototype.N;function k(b){var i;var j;var d;var g;var f;var k;var l;var m;var h;i=(g=b.A)-(f=b._);j=g-f;if(f<b.I_p1){return false}k=b._=b.I_p1;d=b.B;b.B=k;l=b._=b.A-j;b.E=l;if(e(b,a.a_1,4)===0){b.B=d;return false}b.C=b._;h=b.B=d;m=b._=b.A-i;if(m<=h){return false}b._--;b.C=b._;return!c(b,'')?false:true};a.prototype.Q=function(){var f;var l;var m;var d;var j;var b;var g;var n;var i;var p;var o;l=this.A-this._;b=true;a:while(b===true){b=false;this.E=this._;if(!h(this,2,'st')){break a}this.C=this._;if(!h(this,2,'ig')){break a}if(!c(this,'')){return false}}i=this._=(n=this.A)-l;m=n-i;if(i<this.I_p1){return false}p=this._=this.I_p1;d=this.B;this.B=p;o=this._=this.A-m;this.E=o;f=e(this,a.a_2,5);if(f===0){this.B=d;return false}this.C=this._;this.B=d;switch(f){case 0:return false;case 1:if(!c(this,'')){return false}j=this.A-this._;g=true;a:while(g===true){g=false;if(!k(this)){break a}}this._=this.A-j;break;case 2:if(!c(this,'løs')){return false}break}return true};a.prototype.r_other_suffix=a.prototype.Q;function F(b){var d;var p;var m;var f;var l;var g;var i;var o;var j;var q;var n;p=b.A-b._;g=true;a:while(g===true){g=false;b.E=b._;if(!h(b,2,'st')){break a}b.C=b._;if(!h(b,2,'ig')){break a}if(!c(b,'')){return false}}j=b._=(o=b.A)-p;m=o-j;if(j<b.I_p1){return false}q=b._=b.I_p1;f=b.B;b.B=q;n=b._=b.A-m;b.E=n;d=e(b,a.a_2,5);if(d===0){b.B=f;return false}b.C=b._;b.B=f;switch(d){case 0:return false;case 1:if(!c(b,'')){return false}l=b.A-b._;i=true;a:while(i===true){i=false;if(!k(b)){break a}}b._=b.A-l;break;case 2:if(!c(b,'løs')){return false}break}return true};a.prototype.R=function(){var e;var b;var d;var f;var g;var i;var j;e=this.A-(f=this._);if(f<this.I_p1){return false}g=this._=this.I_p1;b=this.B;this.B=g;i=this._=this.A-e;this.E=i;if(!q(this,a.g_v,97,248)){this.B=b;return false}this.C=this._;j=this.S_ch=o(this,this.S_ch);if(j===''){return false}this.B=b;return!(d=this.S_ch,h(this,d.length,d))?false:!c(this,'')?false:true};a.prototype.r_undouble=a.prototype.R;function B(b){var f;var d;var e;var g;var i;var j;var k;f=b.A-(g=b._);if(g<b.I_p1){return false}i=b._=b.I_p1;d=b.B;b.B=i;j=b._=b.A-f;b.E=j;if(!q(b,a.g_v,97,248)){b.B=d;return false}b.C=b._;k=b.S_ch=o(b,b.S_ch);if(k===''){return false}b.B=d;return!(e=b.S_ch,h(b,e.length,e))?false:!c(b,'')?false:true};a.prototype.H=function(){var i;var g;var h;var j;var b;var c;var d;var a;var e;var l;var m;var n;var o;var p;var q;var f;i=this._;b=true;a:while(b===true){b=false;if(!G(this)){break a}}l=this._=i;this.B=l;n=this._=m=this.A;g=m-n;c=true;a:while(c===true){c=false;if(!H(this)){break a}}p=this._=(o=this.A)-g;h=o-p;d=true;a:while(d===true){d=false;if(!k(this)){break a}}f=this._=(q=this.A)-h;j=q-f;a=true;a:while(a===true){a=false;if(!F(this)){break a}}this._=this.A-j;e=true;a:while(e===true){e=false;if(!B(this)){break a}}this._=this.B;return true};a.prototype.stem=a.prototype.H;a.prototype.L=function(b){return b instanceof a};a.prototype.equals=a.prototype.L;a.prototype.M=function(){var c;var a;var b;var d;c='DanishStemmer';a=0;for(b=0;b<c.length;b++){d=c.charCodeAt(b);a=(a<<5)-a+d;a=a&a}return a|0};a.prototype.hashCode=a.prototype.M;a.serialVersionUID=1;i(a,'methodObject',function(){return new a});i(a,'a_0',function(){return[new b('hed',-1,1),new b('ethed',0,1),new b('ered',-1,1),new b('e',-1,1),new b('erede',3,1),new b('ende',3,1),new b('erende',5,1),new b('ene',3,1),new b('erne',3,1),new b('ere',3,1),new b('en',-1,1),new b('heden',10,1),new b('eren',10,1),new b('er',-1,1),new b('heder',13,1),new b('erer',13,1),new b('s',-1,2),new b('heds',16,1),new b('es',16,1),new b('endes',18,1),new b('erendes',19,1),new b('enes',18,1),new b('ernes',18,1),new b('eres',18,1),new b('ens',16,1),new b('hedens',24,1),new b('erens',24,1),new b('ers',16,1),new b('ets',16,1),new b('erets',28,1),new b('et',-1,1),new b('eret',30,1)]});i(a,'a_1',function(){return[new b('gd',-1,-1),new b('dt',-1,-1),new b('gt',-1,-1),new b('kt',-1,-1)]});i(a,'a_2',function(){return[new b('ig',-1,1),new b('lig',0,1),new b('elig',1,1),new b('els',-1,1),new b('løst',-1,2)]});i(a,'g_v',function(){return[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128]});i(a,'g_s_ending',function(){return[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16]});var p={'src/stemmer.jsx':{Stemmer:l},'src/danish-stemmer.jsx':{DanishStemmer:a}}}(JSX)) +var Stemmer = JSX.require("src/danish-stemmer.jsx").DanishStemmer; +""" + + +class SearchDanish(SearchLanguage): + lang = 'da' + language_name = 'Danish' + js_stemmer_rawcode = 'danish-stemmer.js' + js_stemmer_code = js_stemmer + stopwords = danish_stopwords + + def init(self, options: Dict) -> None: + self.stemmer = snowballstemmer.stemmer('danish') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/sphinx/search/de.py b/sphinx/sphinx/search/de.py new file mode 100644 index 0000000..ae1827b --- /dev/null +++ b/sphinx/sphinx/search/de.py @@ -0,0 +1,316 @@ +""" + sphinx.search.de + ~~~~~~~~~~~~~~~~ + + German search language: includes the JS German stemmer. + + :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + + +german_stopwords = parse_stop_word(''' +|source: http://snowball.tartarus.org/algorithms/german/stop.txt +aber | but + +alle | all +allem +allen +aller +alles + +als | than, as +also | so +am | an + dem +an | at + +ander | other +andere +anderem +anderen +anderer +anderes +anderm +andern +anderr +anders + +auch | also +auf | on +aus | out of +bei | by +bin | am +bis | until +bist | art +da | there +damit | with it +dann | then + +der | the +den +des +dem +die +das + +daß | that + +derselbe | the same +derselben +denselben +desselben +demselben +dieselbe +dieselben +dasselbe + +dazu | to that + +dein | thy +deine +deinem +deinen +deiner +deines + +denn | because + +derer | of those +dessen | of him + +dich | thee +dir | to thee +du | thou + +dies | this +diese +diesem +diesen +dieser +dieses + + +doch | (several meanings) +dort | (over) there + + +durch | through + +ein | a +eine +einem +einen +einer +eines + +einig | some +einige +einigem +einigen +einiger +einiges + +einmal | once + +er | he +ihn | him +ihm | to him + +es | it +etwas | something + +euer | your +eure +eurem +euren +eurer +eures + +für | for +gegen | towards +gewesen | p.p. of sein +hab | have +habe | have +haben | have +hat | has +hatte | had +hatten | had +hier | here +hin | there +hinter | behind + +ich | I +mich | me +mir | to me + + +ihr | you, to her +ihre +ihrem +ihren +ihrer +ihres +euch | to you + +im | in + dem +in | in +indem | while +ins | in + das +ist | is + +jede | each, every +jedem +jeden +jeder +jedes + +jene | that +jenem +jenen +jener +jenes + +jetzt | now +kann | can + +kein | no +keine +keinem +keinen +keiner +keines + +können | can +könnte | could +machen | do +man | one + +manche | some, many a +manchem +manchen +mancher +manches + +mein | my +meine +meinem +meinen +meiner +meines + +mit | with +muss | must +musste | had to +nach | to(wards) +nicht | not +nichts | nothing +noch | still, yet +nun | now +nur | only +ob | whether +oder | or +ohne | without +sehr | very + +sein | his +seine +seinem +seinen +seiner +seines + +selbst | self +sich | herself + +sie | they, she +ihnen | to them + +sind | are +so | so + +solche | such +solchem +solchen +solcher +solches + +soll | shall +sollte | should +sondern | but +sonst | else +über | over +um | about, around +und | and + +uns | us +unse +unsem +unsen +unser +unses + +unter | under +viel | much +vom | von + dem +von | from +vor | before +während | while +war | was +waren | were +warst | wast +was | what +weg | away, off +weil | because +weiter | further + +welche | which +welchem +welchen +welcher +welches + +wenn | when +werde | will +werden | will +wie | how +wieder | again +will | want +wir | we +wird | will +wirst | willst +wo | where +wollen | want +wollte | wanted +würde | would +würden | would +zu | to +zum | zu + dem +zur | zu + der +zwar | indeed +zwischen | between +''') + +js_stemmer = """ +var JSX={};(function(j){function l(b,e){var a=function(){};a.prototype=e.prototype;var c=new a;for(var d in b){b[d].prototype=c}}function H(c,b){for(var a in b.prototype)if(b.prototype.hasOwnProperty(a))c.prototype[a]=b.prototype[a]}function g(a,b,d){function c(a,b,c){delete a[b];a[b]=c;return c}Object.defineProperty(a,b,{get:function(){return c(a,b,d())},set:function(d){c(a,b,d)},enumerable:true,configurable:true})}function I(a,b,c){return a[b]=a[b]/c|0}var C=parseInt;var r=parseFloat;function J(a){return a!==a}var z=isFinite;var y=encodeURIComponent;var x=decodeURIComponent;var w=encodeURI;var u=decodeURI;var t=Object.prototype.toString;var B=Object.prototype.hasOwnProperty;function i(){}j.require=function(b){var a=q[b];return a!==undefined?a:null};j.profilerIsRunning=function(){return i.getResults!=null};j.getProfileResults=function(){return(i.getResults||function(){return{}})()};j.postProfileResults=function(a,b){if(i.postResults==null)throw new Error('profiler has not been turned on');return i.postResults(a,b)};j.resetProfileResults=function(){if(i.resetResults==null)throw new Error('profiler has not been turned on');return i.resetResults()};j.DEBUG=false;function s(){};l([s],Error);function c(a,b,c){this.F=a.length;this.K=a;this.L=b;this.I=c;this.H=null;this.P=null};l([c],Object);function o(){};l([o],Object);function e(){var a;var b;var c;this.G={};a=this.D='';b=this._=0;c=this.A=a.length;this.E=0;this.C=b;this.B=c};l([e],o);function v(a,b){a.D=b.D;a._=b._;a.A=b.A;a.E=b.E;a.C=b.C;a.B=b.B};function f(b,d,c,e){var a;if(b._>=b.A){return false}a=b.D.charCodeAt(b._);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._++;return true};function m(b,d,c,e){var a;if(b._<=b.E){return false}a=b.D.charCodeAt(b._-1);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._--;return true};function n(a,d,c,e){var b;if(a._>=a.A){return false}b=a.D.charCodeAt(a._);if(b>e||b<c){a._++;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._++;return true}return false};function k(a,b,d){var c;if(a.A-a._<b){return false}if(a.D.slice(c=a._,c+b)!==d){return false}a._+=b;return true};function d(a,b,d){var c;if(a._-a.E<b){return false}if(a.D.slice((c=a._)-b,c)!==d){return false}a._-=b;return true};function p(f,m,p){var b;var d;var e;var n;var g;var k;var l;var i;var h;var c;var a;var j;var o;b=0;d=p;e=f._;n=f.A;g=0;k=0;l=false;while(true){i=b+(d-b>>>1);h=0;c=g<k?g:k;a=m[i];for(j=c;j<a.F;j++){if(e+c===n){h=-1;break}h=f.D.charCodeAt(e+c)-a.K.charCodeAt(j);if(h!==0){break}c++}if(h<0){d=i;k=c}else{b=i;g=c}if(d-b<=1){if(b>0){break}if(d===b){break}if(l){break}l=true}}while(true){a=m[b];if(g>=a.F){f._=e+a.F|0;if(a.H==null){return a.I}o=a.H(a.P);f._=e+a.F|0;if(o){return a.I}}b=a.L;if(b<0){return 0}}return-1};function h(d,m,p){var b;var g;var e;var n;var f;var k;var l;var i;var h;var c;var a;var j;var o;b=0;g=p;e=d._;n=d.E;f=0;k=0;l=false;while(true){i=b+(g-b>>1);h=0;c=f<k?f:k;a=m[i];for(j=a.F-1-c;j>=0;j--){if(e-c===n){h=-1;break}h=d.D.charCodeAt(e-1-c)-a.K.charCodeAt(j);if(h!==0){break}c++}if(h<0){g=i;k=c}else{b=i;f=c}if(g-b<=1){if(b>0){break}if(g===b){break}if(l){break}l=true}}while(true){a=m[b];if(f>=a.F){d._=e-a.F|0;if(a.H==null){return a.I}o=a.H(d);d._=e-a.F|0;if(o){return a.I}}b=a.L;if(b<0){return 0}}return-1};function D(a,b,d,e){var c;c=e.length-(d-b);a.D=a.D.slice(0,b)+e+a.D.slice(d);a.A+=c|0;if(a._>=d){a._+=c|0}else if(a._>b){a._=b}return c|0};function b(a,f){var b;var c;var d;var e;b=false;if((c=a.C)<0||c>(d=a.B)||d>(e=a.A)||e>a.D.length?false:true){D(a,a.C,a.B,f);b=true}return b};e.prototype.J=function(){return false};e.prototype.W=function(b){var a;var c;var d;var e;a=this.G['.'+b];if(a==null){c=this.D=b;d=this._=0;e=this.A=c.length;this.E=0;this.C=d;this.B=e;this.J();a=this.D;this.G['.'+b]=a}return a};e.prototype.stemWord=e.prototype.W;e.prototype.X=function(e){var d;var b;var c;var a;var f;var g;var h;d=[];for(b=0;b<e.length;b++){c=e[b];a=this.G['.'+c];if(a==null){f=this.D=c;g=this._=0;h=this.A=f.length;this.E=0;this.C=g;this.B=h;this.J();a=this.D;this.G['.'+c]=a}d.push(a)}return d};e.prototype.stemWords=e.prototype.X;function a(){e.call(this);this.I_x=0;this.I_p2=0;this.I_p1=0};l([a],e);a.prototype.M=function(a){this.I_x=a.I_x;this.I_p2=a.I_p2;this.I_p1=a.I_p1;v(this,a)};a.prototype.copy_from=a.prototype.M;a.prototype.U=function(){var m;var r;var n;var o;var d;var q;var e;var c;var g;var h;var i;var j;var l;var s;var p;m=this._;a:while(true){r=this._;e=true;b:while(e===true){e=false;c=true;c:while(c===true){c=false;n=this._;g=true;d:while(g===true){g=false;this.C=this._;if(!k(this,1,'ß')){break d}this.B=this._;if(!b(this,'ss')){return false}break c}s=this._=n;if(s>=this.A){break b}this._++}continue a}this._=r;break a}this._=m;b:while(true){o=this._;h=true;d:while(h===true){h=false;e:while(true){d=this._;i=true;a:while(i===true){i=false;if(!f(this,a.g_v,97,252)){break a}this.C=this._;j=true;f:while(j===true){j=false;q=this._;l=true;c:while(l===true){l=false;if(!k(this,1,'u')){break c}this.B=this._;if(!f(this,a.g_v,97,252)){break c}if(!b(this,'U')){return false}break f}this._=q;if(!k(this,1,'y')){break a}this.B=this._;if(!f(this,a.g_v,97,252)){break a}if(!b(this,'Y')){return false}}this._=d;break e}p=this._=d;if(p>=this.A){break d}this._++}continue b}this._=o;break b}return true};a.prototype.r_prelude=a.prototype.U;function G(c){var s;var n;var o;var p;var e;var r;var d;var g;var h;var i;var j;var l;var m;var t;var q;s=c._;a:while(true){n=c._;d=true;b:while(d===true){d=false;g=true;c:while(g===true){g=false;o=c._;h=true;d:while(h===true){h=false;c.C=c._;if(!k(c,1,'ß')){break d}c.B=c._;if(!b(c,'ss')){return false}break c}t=c._=o;if(t>=c.A){break b}c._++}continue a}c._=n;break a}c._=s;b:while(true){p=c._;i=true;d:while(i===true){i=false;e:while(true){e=c._;j=true;a:while(j===true){j=false;if(!f(c,a.g_v,97,252)){break a}c.C=c._;l=true;f:while(l===true){l=false;r=c._;m=true;c:while(m===true){m=false;if(!k(c,1,'u')){break c}c.B=c._;if(!f(c,a.g_v,97,252)){break c}if(!b(c,'U')){return false}break f}c._=r;if(!k(c,1,'y')){break a}c.B=c._;if(!f(c,a.g_v,97,252)){break a}if(!b(c,'Y')){return false}}c._=e;break e}q=c._=e;if(q>=c.A){break d}c._++}continue b}c._=p;break b}return true};a.prototype.S=function(){var j;var b;var d;var e;var c;var g;var h;var i;var l;var k;this.I_p1=i=this.A;this.I_p2=i;j=l=this._;b=l+3|0;if(0>b||b>i){return false}k=this._=b;this.I_x=k;this._=j;a:while(true){d=true;b:while(d===true){d=false;if(!f(this,a.g_v,97,252)){break b}break a}if(this._>=this.A){return false}this._++}a:while(true){e=true;b:while(e===true){e=false;if(!n(this,a.g_v,97,252)){break b}break a}if(this._>=this.A){return false}this._++}this.I_p1=this._;c=true;a:while(c===true){c=false;if(!(this.I_p1<this.I_x)){break a}this.I_p1=this.I_x}a:while(true){g=true;b:while(g===true){g=false;if(!f(this,a.g_v,97,252)){break b}break a}if(this._>=this.A){return false}this._++}a:while(true){h=true;b:while(h===true){h=false;if(!n(this,a.g_v,97,252)){break b}break a}if(this._>=this.A){return false}this._++}this.I_p2=this._;return true};a.prototype.r_mark_regions=a.prototype.S;function F(b){var k;var c;var e;var g;var d;var h;var i;var j;var m;var l;b.I_p1=j=b.A;b.I_p2=j;k=m=b._;c=m+3|0;if(0>c||c>j){return false}l=b._=c;b.I_x=l;b._=k;a:while(true){e=true;b:while(e===true){e=false;if(!f(b,a.g_v,97,252)){break b}break a}if(b._>=b.A){return false}b._++}a:while(true){g=true;b:while(g===true){g=false;if(!n(b,a.g_v,97,252)){break b}break a}if(b._>=b.A){return false}b._++}b.I_p1=b._;d=true;a:while(d===true){d=false;if(!(b.I_p1<b.I_x)){break a}b.I_p1=b.I_x}a:while(true){h=true;b:while(h===true){h=false;if(!f(b,a.g_v,97,252)){break b}break a}if(b._>=b.A){return false}b._++}a:while(true){i=true;b:while(i===true){i=false;if(!n(b,a.g_v,97,252)){break b}break a}if(b._>=b.A){return false}b._++}b.I_p2=b._;return true};a.prototype.T=function(){var c;var e;var d;b:while(true){e=this._;d=true;a:while(d===true){d=false;this.C=this._;c=p(this,a.a_0,6);if(c===0){break a}this.B=this._;switch(c){case 0:break a;case 1:if(!b(this,'y')){return false}break;case 2:if(!b(this,'u')){return false}break;case 3:if(!b(this,'a')){return false}break;case 4:if(!b(this,'o')){return false}break;case 5:if(!b(this,'u')){return false}break;case 6:if(this._>=this.A){break a}this._++;break}continue b}this._=e;break b}return true};a.prototype.r_postlude=a.prototype.T;function E(c){var d;var f;var e;b:while(true){f=c._;e=true;a:while(e===true){e=false;c.C=c._;d=p(c,a.a_0,6);if(d===0){break a}c.B=c._;switch(d){case 0:break a;case 1:if(!b(c,'y')){return false}break;case 2:if(!b(c,'u')){return false}break;case 3:if(!b(c,'a')){return false}break;case 4:if(!b(c,'o')){return false}break;case 5:if(!b(c,'u')){return false}break;case 6:if(c._>=c.A){break a}c._++;break}continue b}c._=f;break b}return true};a.prototype.Q=function(){return!(this.I_p1<=this._)?false:true};a.prototype.r_R1=a.prototype.Q;a.prototype.R=function(){return!(this.I_p2<=this._)?false:true};a.prototype.r_R2=a.prototype.R;a.prototype.V=function(){var c;var z;var n;var x;var y;var f;var A;var B;var p;var w;var g;var j;var k;var l;var e;var o;var i;var q;var r;var s;var t;var u;var v;var D;var E;var F;var G;var H;var I;var J;var K;var L;var M;var C;z=this.A-this._;j=true;a:while(j===true){j=false;this.B=this._;c=h(this,a.a_1,7);if(c===0){break a}this.C=D=this._;if(!(!(this.I_p1<=D)?false:true)){break a}switch(c){case 0:break a;case 1:if(!b(this,'')){return false}break;case 2:if(!b(this,'')){return false}n=this.A-this._;k=true;b:while(k===true){k=false;this.B=this._;if(!d(this,1,'s')){this._=this.A-n;break b}this.C=this._;if(!d(this,3,'nis')){this._=this.A-n;break b}if(!b(this,'')){return false}}break;case 3:if(!m(this,a.g_s_ending,98,116)){break a}if(!b(this,'')){return false}break}}G=this._=(F=this.A)-z;x=F-G;l=true;a:while(l===true){l=false;this.B=this._;c=h(this,a.a_2,4);if(c===0){break a}this.C=E=this._;if(!(!(this.I_p1<=E)?false:true)){break a}switch(c){case 0:break a;case 1:if(!b(this,'')){return false}break;case 2:if(!m(this,a.g_st_ending,98,116)){break a}e=this._-3|0;if(this.E>e||e>this.A){break a}this._=e;if(!b(this,'')){return false}break}}C=this._=(M=this.A)-x;y=M-C;o=true;a:while(o===true){o=false;this.B=this._;c=h(this,a.a_4,8);if(c===0){break a}this.C=H=this._;if(!(!(this.I_p2<=H)?false:true)){break a}switch(c){case 0:break a;case 1:if(!b(this,'')){return false}f=this.A-this._;i=true;b:while(i===true){i=false;this.B=this._;if(!d(this,2,'ig')){this._=this.A-f;break b}this.C=I=this._;A=this.A-I;q=true;c:while(q===true){q=false;if(!d(this,1,'e')){break c}this._=this.A-f;break b}J=this._=this.A-A;if(!(!(this.I_p2<=J)?false:true)){this._=this.A-f;break b}if(!b(this,'')){return false}}break;case 2:B=this.A-this._;r=true;b:while(r===true){r=false;if(!d(this,1,'e')){break b}break a}this._=this.A-B;if(!b(this,'')){return false}break;case 3:if(!b(this,'')){return false}p=this.A-this._;s=true;b:while(s===true){s=false;this.B=this._;t=true;c:while(t===true){t=false;w=this.A-this._;u=true;d:while(u===true){u=false;if(!d(this,2,'er')){break d}break c}this._=this.A-w;if(!d(this,2,'en')){this._=this.A-p;break b}}this.C=K=this._;if(!(!(this.I_p1<=K)?false:true)){this._=this.A-p;break b}if(!b(this,'')){return false}}break;case 4:if(!b(this,'')){return false}g=this.A-this._;v=true;b:while(v===true){v=false;this.B=this._;c=h(this,a.a_3,2);if(c===0){this._=this.A-g;break b}this.C=L=this._;if(!(!(this.I_p2<=L)?false:true)){this._=this.A-g;break b}switch(c){case 0:this._=this.A-g;break b;case 1:if(!b(this,'')){return false}break}}break}}this._=this.A-y;return true};a.prototype.r_standard_suffix=a.prototype.V;function A(c){var e;var A;var j;var y;var z;var g;var B;var C;var q;var x;var i;var k;var l;var n;var f;var p;var o;var r;var s;var t;var u;var v;var w;var E;var F;var G;var H;var I;var J;var K;var L;var M;var N;var D;A=c.A-c._;k=true;a:while(k===true){k=false;c.B=c._;e=h(c,a.a_1,7);if(e===0){break a}c.C=E=c._;if(!(!(c.I_p1<=E)?false:true)){break a}switch(e){case 0:break a;case 1:if(!b(c,'')){return false}break;case 2:if(!b(c,'')){return false}j=c.A-c._;l=true;b:while(l===true){l=false;c.B=c._;if(!d(c,1,'s')){c._=c.A-j;break b}c.C=c._;if(!d(c,3,'nis')){c._=c.A-j;break b}if(!b(c,'')){return false}}break;case 3:if(!m(c,a.g_s_ending,98,116)){break a}if(!b(c,'')){return false}break}}H=c._=(G=c.A)-A;y=G-H;n=true;a:while(n===true){n=false;c.B=c._;e=h(c,a.a_2,4);if(e===0){break a}c.C=F=c._;if(!(!(c.I_p1<=F)?false:true)){break a}switch(e){case 0:break a;case 1:if(!b(c,'')){return false}break;case 2:if(!m(c,a.g_st_ending,98,116)){break a}f=c._-3|0;if(c.E>f||f>c.A){break a}c._=f;if(!b(c,'')){return false}break}}D=c._=(N=c.A)-y;z=N-D;p=true;a:while(p===true){p=false;c.B=c._;e=h(c,a.a_4,8);if(e===0){break a}c.C=I=c._;if(!(!(c.I_p2<=I)?false:true)){break a}switch(e){case 0:break a;case 1:if(!b(c,'')){return false}g=c.A-c._;o=true;b:while(o===true){o=false;c.B=c._;if(!d(c,2,'ig')){c._=c.A-g;break b}c.C=J=c._;B=c.A-J;r=true;c:while(r===true){r=false;if(!d(c,1,'e')){break c}c._=c.A-g;break b}K=c._=c.A-B;if(!(!(c.I_p2<=K)?false:true)){c._=c.A-g;break b}if(!b(c,'')){return false}}break;case 2:C=c.A-c._;s=true;b:while(s===true){s=false;if(!d(c,1,'e')){break b}break a}c._=c.A-C;if(!b(c,'')){return false}break;case 3:if(!b(c,'')){return false}q=c.A-c._;t=true;b:while(t===true){t=false;c.B=c._;u=true;c:while(u===true){u=false;x=c.A-c._;v=true;d:while(v===true){v=false;if(!d(c,2,'er')){break d}break c}c._=c.A-x;if(!d(c,2,'en')){c._=c.A-q;break b}}c.C=L=c._;if(!(!(c.I_p1<=L)?false:true)){c._=c.A-q;break b}if(!b(c,'')){return false}}break;case 4:if(!b(c,'')){return false}i=c.A-c._;w=true;b:while(w===true){w=false;c.B=c._;e=h(c,a.a_3,2);if(e===0){c._=c.A-i;break b}c.C=M=c._;if(!(!(c.I_p2<=M)?false:true)){c._=c.A-i;break b}switch(e){case 0:c._=c.A-i;break b;case 1:if(!b(c,'')){return false}break}}break}}c._=c.A-z;return true};a.prototype.J=function(){var f;var g;var h;var b;var a;var c;var d;var i;var j;var e;f=this._;b=true;a:while(b===true){b=false;if(!G(this)){break a}}i=this._=f;g=i;a=true;a:while(a===true){a=false;if(!F(this)){break a}}j=this._=g;this.E=j;this._=this.A;c=true;a:while(c===true){c=false;if(!A(this)){break a}}e=this._=this.E;h=e;d=true;a:while(d===true){d=false;if(!E(this)){break a}}this._=h;return true};a.prototype.stem=a.prototype.J;a.prototype.N=function(b){return b instanceof a};a.prototype.equals=a.prototype.N;a.prototype.O=function(){var c;var a;var b;var d;c='GermanStemmer';a=0;for(b=0;b<c.length;b++){d=c.charCodeAt(b);a=(a<<5)-a+d;a=a&a}return a|0};a.prototype.hashCode=a.prototype.O;a.serialVersionUID=1;g(a,'methodObject',function(){return new a});g(a,'a_0',function(){return[new c('',-1,6),new c('U',0,2),new c('Y',0,1),new c('ä',0,3),new c('ö',0,4),new c('ü',0,5)]});g(a,'a_1',function(){return[new c('e',-1,2),new c('em',-1,1),new c('en',-1,2),new c('ern',-1,1),new c('er',-1,1),new c('s',-1,3),new c('es',5,2)]});g(a,'a_2',function(){return[new c('en',-1,1),new c('er',-1,1),new c('st',-1,2),new c('est',2,1)]});g(a,'a_3',function(){return[new c('ig',-1,1),new c('lich',-1,1)]});g(a,'a_4',function(){return[new c('end',-1,1),new c('ig',-1,2),new c('ung',-1,1),new c('lich',-1,3),new c('isch',-1,2),new c('ik',-1,2),new c('heit',-1,3),new c('keit',-1,4)]});g(a,'g_v',function(){return[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32,8]});g(a,'g_s_ending',function(){return[117,30,5]});g(a,'g_st_ending',function(){return[117,30,4]});var q={'src/stemmer.jsx':{Stemmer:o},'src/german-stemmer.jsx':{GermanStemmer:a}}}(JSX)) +var Stemmer = JSX.require("src/german-stemmer.jsx").GermanStemmer; +""" + + +class SearchGerman(SearchLanguage): + lang = 'de' + language_name = 'German' + js_stemmer_rawcode = 'german-stemmer.js' + js_stemmer_code = js_stemmer + stopwords = german_stopwords + + def init(self, options: Dict) -> None: + self.stemmer = snowballstemmer.stemmer('german') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/sphinx/search/en.py b/sphinx/sphinx/search/en.py new file mode 100644 index 0000000..23a6f97 --- /dev/null +++ b/sphinx/sphinx/search/en.py @@ -0,0 +1,225 @@ +""" + sphinx.search.en + ~~~~~~~~~~~~~~~~ + + English search language: includes the JS porter stemmer. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Dict + +from sphinx.search import SearchLanguage +from sphinx.util.stemmer import get_stemmer + +english_stopwords = set(""" +a and are as at +be but by +for +if in into is it +near no not +of on or +such +that the their then there these they this to +was will with +""".split()) + +js_porter_stemmer = """ +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|\ +ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|\ +iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} +""" + + +class SearchEnglish(SearchLanguage): + lang = 'en' + language_name = 'English' + js_stemmer_code = js_porter_stemmer + stopwords = english_stopwords + + def init(self, options: Dict) -> None: + self.stemmer = get_stemmer() + + def stem(self, word: str) -> str: + return self.stemmer.stem(word.lower()) diff --git a/sphinx/sphinx/search/es.py b/sphinx/sphinx/search/es.py new file mode 100644 index 0000000..1009961 --- /dev/null +++ b/sphinx/sphinx/search/es.py @@ -0,0 +1,376 @@ +""" + sphinx.search.es + ~~~~~~~~~~~~~~~~ + + Spanish search language: includes the JS Spanish stemmer. + + :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + + +spanish_stopwords = parse_stop_word(''' +|source: http://snowball.tartarus.org/algorithms/spanish/stop.txt +de | from, of +la | the, her +que | who, that +el | the +en | in +y | and +a | to +los | the, them +del | de + el +se | himself, from him etc +las | the, them +por | for, by, etc +un | a +para | for +con | with +no | no +una | a +su | his, her +al | a + el + | es from SER +lo | him +como | how +más | more +pero | pero +sus | su plural +le | to him, her +ya | already +o | or + | fue from SER +este | this + | ha from HABER +sí | himself etc +porque | because +esta | this + | son from SER +entre | between + | está from ESTAR +cuando | when +muy | very +sin | without +sobre | on + | ser from SER + | tiene from TENER +también | also +me | me +hasta | until +hay | there is/are +donde | where + | han from HABER +quien | whom, that + | están from ESTAR + | estado from ESTAR +desde | from +todo | all +nos | us +durante | during + | estados from ESTAR +todos | all +uno | a +les | to them +ni | nor +contra | against +otros | other + | fueron from SER +ese | that +eso | that + | había from HABER +ante | before +ellos | they +e | and (variant of y) +esto | this +mí | me +antes | before +algunos | some +qué | what? +unos | a +yo | I +otro | other +otras | other +otra | other +él | he +tanto | so much, many +esa | that +estos | these +mucho | much, many +quienes | who +nada | nothing +muchos | many +cual | who + | sea from SER +poco | few +ella | she +estar | to be + | haber from HABER +estas | these + | estaba from ESTAR + | estamos from ESTAR +algunas | some +algo | something +nosotros | we + + | other forms + +mi | me +mis | mi plural +tú | thou +te | thee +ti | thee +tu | thy +tus | tu plural +ellas | they +nosotras | we +vosotros | you +vosotras | you +os | you +mío | mine +mía | +míos | +mías | +tuyo | thine +tuya | +tuyos | +tuyas | +suyo | his, hers, theirs +suya | +suyos | +suyas | +nuestro | ours +nuestra | +nuestros | +nuestras | +vuestro | yours +vuestra | +vuestros | +vuestras | +esos | those +esas | those + + | forms of estar, to be (not including the infinitive): +estoy +estás +está +estamos +estáis +están +esté +estés +estemos +estéis +estén +estaré +estarás +estará +estaremos +estaréis +estarán +estaría +estarías +estaríamos +estaríais +estarían +estaba +estabas +estábamos +estabais +estaban +estuve +estuviste +estuvo +estuvimos +estuvisteis +estuvieron +estuviera +estuvieras +estuviéramos +estuvierais +estuvieran +estuviese +estuvieses +estuviésemos +estuvieseis +estuviesen +estando +estado +estada +estados +estadas +estad + + | forms of haber, to have (not including the infinitive): +he +has +ha +hemos +habéis +han +haya +hayas +hayamos +hayáis +hayan +habré +habrás +habrá +habremos +habréis +habrán +habría +habrías +habríamos +habríais +habrían +había +habías +habíamos +habíais +habían +hube +hubiste +hubo +hubimos +hubisteis +hubieron +hubiera +hubieras +hubiéramos +hubierais +hubieran +hubiese +hubieses +hubiésemos +hubieseis +hubiesen +habiendo +habido +habida +habidos +habidas + + | forms of ser, to be (not including the infinitive): +soy +eres +es +somos +sois +son +sea +seas +seamos +seáis +sean +seré +serás +será +seremos +seréis +serán +sería +serías +seríamos +seríais +serían +era +eras +éramos +erais +eran +fui +fuiste +fue +fuimos +fuisteis +fueron +fuera +fueras +fuéramos +fuerais +fueran +fuese +fueses +fuésemos +fueseis +fuesen +siendo +sido + | sed also means 'thirst' + + | forms of tener, to have (not including the infinitive): +tengo +tienes +tiene +tenemos +tenéis +tienen +tenga +tengas +tengamos +tengáis +tengan +tendré +tendrás +tendrá +tendremos +tendréis +tendrán +tendría +tendrías +tendríamos +tendríais +tendrían +tenía +tenías +teníamos +teníais +tenían +tuve +tuviste +tuvo +tuvimos +tuvisteis +tuvieron +tuviera +tuvieras +tuviéramos +tuvierais +tuvieran +tuviese +tuvieses +tuviésemos +tuvieseis +tuviesen +teniendo +tenido +tenida +tenidos +tenidas +tened +''') + +js_stemmer = """ +var JSX={};(function(k){function l(b,e){var a=function(){};a.prototype=e.prototype;var c=new a;for(var d in b){b[d].prototype=c}}function I(c,b){for(var a in b.prototype)if(b.prototype.hasOwnProperty(a))c.prototype[a]=b.prototype[a]}function g(a,b,d){function c(a,b,c){delete a[b];a[b]=c;return c}Object.defineProperty(a,b,{get:function(){return c(a,b,d())},set:function(d){c(a,b,d)},enumerable:true,configurable:true})}function J(a,b,c){return a[b]=a[b]/c|0}var p=parseInt;var z=parseFloat;function K(a){return a!==a}var x=isFinite;var w=encodeURIComponent;var u=decodeURIComponent;var t=encodeURI;var s=decodeURI;var A=Object.prototype.toString;var q=Object.prototype.hasOwnProperty;function j(){}k.require=function(b){var a=o[b];return a!==undefined?a:null};k.profilerIsRunning=function(){return j.getResults!=null};k.getProfileResults=function(){return(j.getResults||function(){return{}})()};k.postProfileResults=function(a,b){if(j.postResults==null)throw new Error('profiler has not been turned on');return j.postResults(a,b)};k.resetProfileResults=function(){if(j.resetResults==null)throw new Error('profiler has not been turned on');return j.resetResults()};k.DEBUG=false;function r(){};l([r],Error);function a(a,b,c){this.F=a.length;this.K=a;this.L=b;this.I=c;this.H=null;this.P=null};l([a],Object);function m(){};l([m],Object);function i(){var a;var b;var c;this.G={};a=this.E='';b=this._=0;c=this.A=a.length;this.D=0;this.B=b;this.C=c};l([i],m);function v(a,b){a.E=b.E;a._=b._;a.A=b.A;a.D=b.D;a.B=b.B;a.C=b.C};function f(b,d,c,e){var a;if(b._>=b.A){return false}a=b.E.charCodeAt(b._);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._++;return true};function h(a,d,c,e){var b;if(a._>=a.A){return false}b=a.E.charCodeAt(a._);if(b>e||b<c){a._++;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._++;return true}return false};function d(a,b,d){var c;if(a._-a.D<b){return false}if(a.E.slice((c=a._)-b,c)!==d){return false}a._-=b;return true};function n(f,m,p){var b;var d;var e;var n;var g;var k;var l;var i;var h;var c;var a;var j;var o;b=0;d=p;e=f._;n=f.A;g=0;k=0;l=false;while(true){i=b+(d-b>>>1);h=0;c=g<k?g:k;a=m[i];for(j=c;j<a.F;j++){if(e+c===n){h=-1;break}h=f.E.charCodeAt(e+c)-a.K.charCodeAt(j);if(h!==0){break}c++}if(h<0){d=i;k=c}else{b=i;g=c}if(d-b<=1){if(b>0){break}if(d===b){break}if(l){break}l=true}}while(true){a=m[b];if(g>=a.F){f._=e+a.F|0;if(a.H==null){return a.I}o=a.H(a.P);f._=e+a.F|0;if(o){return a.I}}b=a.L;if(b<0){return 0}}return-1};function e(d,m,p){var b;var g;var e;var n;var f;var k;var l;var i;var h;var c;var a;var j;var o;b=0;g=p;e=d._;n=d.D;f=0;k=0;l=false;while(true){i=b+(g-b>>1);h=0;c=f<k?f:k;a=m[i];for(j=a.F-1-c;j>=0;j--){if(e-c===n){h=-1;break}h=d.E.charCodeAt(e-1-c)-a.K.charCodeAt(j);if(h!==0){break}c++}if(h<0){g=i;k=c}else{b=i;f=c}if(g-b<=1){if(b>0){break}if(g===b){break}if(l){break}l=true}}while(true){a=m[b];if(f>=a.F){d._=e-a.F|0;if(a.H==null){return a.I}o=a.H(d);d._=e-a.F|0;if(o){return a.I}}b=a.L;if(b<0){return 0}}return-1};function B(a,b,d,e){var c;c=e.length-(d-b);a.E=a.E.slice(0,b)+e+a.E.slice(d);a.A+=c|0;if(a._>=d){a._+=c|0}else if(a._>b){a._=b}return c|0};function c(a,f){var b;var c;var d;var e;b=false;if((c=a.B)<0||c>(d=a.C)||d>(e=a.A)||e>a.E.length?false:true){B(a,a.B,a.C,f);b=true}return b};i.prototype.J=function(){return false};i.prototype.a=function(b){var a;var c;var d;var e;a=this.G['.'+b];if(a==null){c=this.E=b;d=this._=0;e=this.A=c.length;this.D=0;this.B=d;this.C=e;this.J();a=this.E;this.G['.'+b]=a}return a};i.prototype.stemWord=i.prototype.a;i.prototype.b=function(e){var d;var b;var c;var a;var f;var g;var h;d=[];for(b=0;b<e.length;b++){c=e[b];a=this.G['.'+c];if(a==null){f=this.E=c;g=this._=0;h=this.A=f.length;this.D=0;this.B=g;this.C=h;this.J();a=this.E;this.G['.'+c]=a}d.push(a)}return d};i.prototype.stemWords=i.prototype.b;function b(){i.call(this);this.I_p2=0;this.I_p1=0;this.I_pV=0};l([b],i);b.prototype.M=function(a){this.I_p2=a.I_p2;this.I_p1=a.I_p1;this.I_pV=a.I_pV;v(this,a)};b.prototype.copy_from=b.prototype.M;b.prototype.U=function(){var u;var w;var x;var y;var t;var l;var d;var e;var g;var i;var c;var j;var k;var a;var m;var n;var o;var p;var q;var r;var s;var v;this.I_pV=s=this.A;this.I_p1=s;this.I_p2=s;u=this._;l=true;a:while(l===true){l=false;d=true;g:while(d===true){d=false;w=this._;e=true;b:while(e===true){e=false;if(!f(this,b.g_v,97,252)){break b}g=true;f:while(g===true){g=false;x=this._;i=true;c:while(i===true){i=false;if(!h(this,b.g_v,97,252)){break c}d:while(true){c=true;e:while(c===true){c=false;if(!f(this,b.g_v,97,252)){break e}break d}if(this._>=this.A){break c}this._++}break f}this._=x;if(!f(this,b.g_v,97,252)){break b}c:while(true){j=true;d:while(j===true){j=false;if(!h(this,b.g_v,97,252)){break d}break c}if(this._>=this.A){break b}this._++}}break g}this._=w;if(!h(this,b.g_v,97,252)){break a}k=true;c:while(k===true){k=false;y=this._;a=true;b:while(a===true){a=false;if(!h(this,b.g_v,97,252)){break b}e:while(true){m=true;d:while(m===true){m=false;if(!f(this,b.g_v,97,252)){break d}break e}if(this._>=this.A){break b}this._++}break c}this._=y;if(!f(this,b.g_v,97,252)){break a}if(this._>=this.A){break a}this._++}}this.I_pV=this._}v=this._=u;t=v;n=true;a:while(n===true){n=false;b:while(true){o=true;c:while(o===true){o=false;if(!f(this,b.g_v,97,252)){break c}break b}if(this._>=this.A){break a}this._++}b:while(true){p=true;c:while(p===true){p=false;if(!h(this,b.g_v,97,252)){break c}break b}if(this._>=this.A){break a}this._++}this.I_p1=this._;b:while(true){q=true;c:while(q===true){q=false;if(!f(this,b.g_v,97,252)){break c}break b}if(this._>=this.A){break a}this._++}c:while(true){r=true;b:while(r===true){r=false;if(!h(this,b.g_v,97,252)){break b}break c}if(this._>=this.A){break a}this._++}this.I_p2=this._}this._=t;return true};b.prototype.r_mark_regions=b.prototype.U;function E(a){var x;var y;var z;var u;var v;var l;var d;var e;var g;var i;var j;var k;var c;var m;var n;var o;var p;var q;var r;var s;var t;var w;a.I_pV=t=a.A;a.I_p1=t;a.I_p2=t;x=a._;l=true;a:while(l===true){l=false;d=true;g:while(d===true){d=false;y=a._;e=true;b:while(e===true){e=false;if(!f(a,b.g_v,97,252)){break b}g=true;f:while(g===true){g=false;z=a._;i=true;c:while(i===true){i=false;if(!h(a,b.g_v,97,252)){break c}d:while(true){j=true;e:while(j===true){j=false;if(!f(a,b.g_v,97,252)){break e}break d}if(a._>=a.A){break c}a._++}break f}a._=z;if(!f(a,b.g_v,97,252)){break b}c:while(true){k=true;d:while(k===true){k=false;if(!h(a,b.g_v,97,252)){break d}break c}if(a._>=a.A){break b}a._++}}break g}a._=y;if(!h(a,b.g_v,97,252)){break a}c=true;c:while(c===true){c=false;u=a._;m=true;b:while(m===true){m=false;if(!h(a,b.g_v,97,252)){break b}e:while(true){n=true;d:while(n===true){n=false;if(!f(a,b.g_v,97,252)){break d}break e}if(a._>=a.A){break b}a._++}break c}a._=u;if(!f(a,b.g_v,97,252)){break a}if(a._>=a.A){break a}a._++}}a.I_pV=a._}w=a._=x;v=w;o=true;a:while(o===true){o=false;b:while(true){p=true;c:while(p===true){p=false;if(!f(a,b.g_v,97,252)){break c}break b}if(a._>=a.A){break a}a._++}b:while(true){q=true;c:while(q===true){q=false;if(!h(a,b.g_v,97,252)){break c}break b}if(a._>=a.A){break a}a._++}a.I_p1=a._;b:while(true){r=true;c:while(r===true){r=false;if(!f(a,b.g_v,97,252)){break c}break b}if(a._>=a.A){break a}a._++}c:while(true){s=true;b:while(s===true){s=false;if(!h(a,b.g_v,97,252)){break b}break c}if(a._>=a.A){break a}a._++}a.I_p2=a._}a._=v;return true};b.prototype.V=function(){var a;var e;var d;b:while(true){e=this._;d=true;a:while(d===true){d=false;this.B=this._;a=n(this,b.a_0,6);if(a===0){break a}this.C=this._;switch(a){case 0:break a;case 1:if(!c(this,'a')){return false}break;case 2:if(!c(this,'e')){return false}break;case 3:if(!c(this,'i')){return false}break;case 4:if(!c(this,'o')){return false}break;case 5:if(!c(this,'u')){return false}break;case 6:if(this._>=this.A){break a}this._++;break}continue b}this._=e;break b}return true};b.prototype.r_postlude=b.prototype.V;function F(a){var d;var f;var e;b:while(true){f=a._;e=true;a:while(e===true){e=false;a.B=a._;d=n(a,b.a_0,6);if(d===0){break a}a.C=a._;switch(d){case 0:break a;case 1:if(!c(a,'a')){return false}break;case 2:if(!c(a,'e')){return false}break;case 3:if(!c(a,'i')){return false}break;case 4:if(!c(a,'o')){return false}break;case 5:if(!c(a,'u')){return false}break;case 6:if(a._>=a.A){break a}a._++;break}continue b}a._=f;break b}return true};b.prototype.S=function(){return!(this.I_pV<=this._)?false:true};b.prototype.r_RV=b.prototype.S;b.prototype.Q=function(){return!(this.I_p1<=this._)?false:true};b.prototype.r_R1=b.prototype.Q;b.prototype.R=function(){return!(this.I_p2<=this._)?false:true};b.prototype.r_R2=b.prototype.R;b.prototype.T=function(){var a;this.C=this._;if(e(this,b.a_1,13)===0){return false}this.B=this._;a=e(this,b.a_2,11);if(a===0){return false}if(!(!(this.I_pV<=this._)?false:true)){return false}switch(a){case 0:return false;case 1:this.B=this._;if(!c(this,'iendo')){return false}break;case 2:this.B=this._;if(!c(this,'ando')){return false}break;case 3:this.B=this._;if(!c(this,'ar')){return false}break;case 4:this.B=this._;if(!c(this,'er')){return false}break;case 5:this.B=this._;if(!c(this,'ir')){return false}break;case 6:if(!c(this,'')){return false}break;case 7:if(!d(this,1,'u')){return false}if(!c(this,'')){return false}break}return true};b.prototype.r_attached_pronoun=b.prototype.T;function G(a){var f;a.C=a._;if(e(a,b.a_1,13)===0){return false}a.B=a._;f=e(a,b.a_2,11);if(f===0){return false}if(!(!(a.I_pV<=a._)?false:true)){return false}switch(f){case 0:return false;case 1:a.B=a._;if(!c(a,'iendo')){return false}break;case 2:a.B=a._;if(!c(a,'ando')){return false}break;case 3:a.B=a._;if(!c(a,'ar')){return false}break;case 4:a.B=a._;if(!c(a,'er')){return false}break;case 5:a.B=a._;if(!c(a,'ir')){return false}break;case 6:if(!c(a,'')){return false}break;case 7:if(!d(a,1,'u')){return false}if(!c(a,'')){return false}break}return true};b.prototype.X=function(){var a;var j;var f;var g;var h;var i;var k;var l;var m;var n;var o;var q;var r;var s;var p;this.C=this._;a=e(this,b.a_6,46);if(a===0){return false}this.B=this._;switch(a){case 0:return false;case 1:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'')){return false}break;case 2:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'')){return false}j=this.A-this._;k=true;a:while(k===true){k=false;this.C=this._;if(!d(this,2,'ic')){this._=this.A-j;break a}this.B=q=this._;if(!(!(this.I_p2<=q)?false:true)){this._=this.A-j;break a}if(!c(this,'')){return false}}break;case 3:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'log')){return false}break;case 4:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'u')){return false}break;case 5:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'ente')){return false}break;case 6:if(!(!(this.I_p1<=this._)?false:true)){return false}if(!c(this,'')){return false}f=this.A-this._;l=true;a:while(l===true){l=false;this.C=this._;a=e(this,b.a_3,4);if(a===0){this._=this.A-f;break a}this.B=r=this._;if(!(!(this.I_p2<=r)?false:true)){this._=this.A-f;break a}if(!c(this,'')){return false}switch(a){case 0:this._=this.A-f;break a;case 1:this.C=this._;if(!d(this,2,'at')){this._=this.A-f;break a}this.B=s=this._;if(!(!(this.I_p2<=s)?false:true)){this._=this.A-f;break a}if(!c(this,'')){return false}break}}break;case 7:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'')){return false}g=this.A-this._;m=true;a:while(m===true){m=false;this.C=this._;a=e(this,b.a_4,3);if(a===0){this._=this.A-g;break a}this.B=this._;switch(a){case 0:this._=this.A-g;break a;case 1:if(!(!(this.I_p2<=this._)?false:true)){this._=this.A-g;break a}if(!c(this,'')){return false}break}}break;case 8:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'')){return false}h=this.A-this._;n=true;a:while(n===true){n=false;this.C=this._;a=e(this,b.a_5,3);if(a===0){this._=this.A-h;break a}this.B=this._;switch(a){case 0:this._=this.A-h;break a;case 1:if(!(!(this.I_p2<=this._)?false:true)){this._=this.A-h;break a}if(!c(this,'')){return false}break}}break;case 9:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'')){return false}i=this.A-this._;o=true;a:while(o===true){o=false;this.C=this._;if(!d(this,2,'at')){this._=this.A-i;break a}this.B=p=this._;if(!(!(this.I_p2<=p)?false:true)){this._=this.A-i;break a}if(!c(this,'')){return false}}break}return true};b.prototype.r_standard_suffix=b.prototype.X;function H(a){var f;var k;var g;var h;var i;var j;var l;var m;var n;var o;var p;var r;var s;var t;var q;a.C=a._;f=e(a,b.a_6,46);if(f===0){return false}a.B=a._;switch(f){case 0:return false;case 1:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'')){return false}break;case 2:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'')){return false}k=a.A-a._;l=true;a:while(l===true){l=false;a.C=a._;if(!d(a,2,'ic')){a._=a.A-k;break a}a.B=r=a._;if(!(!(a.I_p2<=r)?false:true)){a._=a.A-k;break a}if(!c(a,'')){return false}}break;case 3:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'log')){return false}break;case 4:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'u')){return false}break;case 5:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'ente')){return false}break;case 6:if(!(!(a.I_p1<=a._)?false:true)){return false}if(!c(a,'')){return false}g=a.A-a._;m=true;a:while(m===true){m=false;a.C=a._;f=e(a,b.a_3,4);if(f===0){a._=a.A-g;break a}a.B=s=a._;if(!(!(a.I_p2<=s)?false:true)){a._=a.A-g;break a}if(!c(a,'')){return false}switch(f){case 0:a._=a.A-g;break a;case 1:a.C=a._;if(!d(a,2,'at')){a._=a.A-g;break a}a.B=t=a._;if(!(!(a.I_p2<=t)?false:true)){a._=a.A-g;break a}if(!c(a,'')){return false}break}}break;case 7:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'')){return false}h=a.A-a._;n=true;a:while(n===true){n=false;a.C=a._;f=e(a,b.a_4,3);if(f===0){a._=a.A-h;break a}a.B=a._;switch(f){case 0:a._=a.A-h;break a;case 1:if(!(!(a.I_p2<=a._)?false:true)){a._=a.A-h;break a}if(!c(a,'')){return false}break}}break;case 8:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'')){return false}i=a.A-a._;o=true;a:while(o===true){o=false;a.C=a._;f=e(a,b.a_5,3);if(f===0){a._=a.A-i;break a}a.B=a._;switch(f){case 0:a._=a.A-i;break a;case 1:if(!(!(a.I_p2<=a._)?false:true)){a._=a.A-i;break a}if(!c(a,'')){return false}break}}break;case 9:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'')){return false}j=a.A-a._;p=true;a:while(p===true){p=false;a.C=a._;if(!d(a,2,'at')){a._=a.A-j;break a}a.B=q=a._;if(!(!(a.I_p2<=q)?false:true)){a._=a.A-j;break a}if(!c(a,'')){return false}}break}return true};b.prototype.Z=function(){var a;var g;var f;var h;var i;var j;g=this.A-(h=this._);if(h<this.I_pV){return false}i=this._=this.I_pV;f=this.D;this.D=i;j=this._=this.A-g;this.C=j;a=e(this,b.a_7,12);if(a===0){this.D=f;return false}this.B=this._;this.D=f;switch(a){case 0:return false;case 1:if(!d(this,1,'u')){return false}if(!c(this,'')){return false}break}return true};b.prototype.r_y_verb_suffix=b.prototype.Z;function D(a){var f;var h;var g;var i;var j;var k;h=a.A-(i=a._);if(i<a.I_pV){return false}j=a._=a.I_pV;g=a.D;a.D=j;k=a._=a.A-h;a.C=k;f=e(a,b.a_7,12);if(f===0){a.D=g;return false}a.B=a._;a.D=g;switch(f){case 0:return false;case 1:if(!d(a,1,'u')){return false}if(!c(a,'')){return false}break}return true};b.prototype.Y=function(){var a;var i;var f;var g;var j;var h;var k;var l;var m;i=this.A-(k=this._);if(k<this.I_pV){return false}l=this._=this.I_pV;f=this.D;this.D=l;m=this._=this.A-i;this.C=m;a=e(this,b.a_8,96);if(a===0){this.D=f;return false}this.B=this._;this.D=f;switch(a){case 0:return false;case 1:g=this.A-this._;h=true;a:while(h===true){h=false;if(!d(this,1,'u')){this._=this.A-g;break a}j=this.A-this._;if(!d(this,1,'g')){this._=this.A-g;break a}this._=this.A-j}this.B=this._;if(!c(this,'')){return false}break;case 2:if(!c(this,'')){return false}break}return true};b.prototype.r_verb_suffix=b.prototype.Y;function C(a){var g;var j;var h;var f;var k;var i;var m;var n;var l;j=a.A-(m=a._);if(m<a.I_pV){return false}n=a._=a.I_pV;h=a.D;a.D=n;l=a._=a.A-j;a.C=l;g=e(a,b.a_8,96);if(g===0){a.D=h;return false}a.B=a._;a.D=h;switch(g){case 0:return false;case 1:f=a.A-a._;i=true;a:while(i===true){i=false;if(!d(a,1,'u')){a._=a.A-f;break a}k=a.A-a._;if(!d(a,1,'g')){a._=a.A-f;break a}a._=a.A-k}a.B=a._;if(!c(a,'')){return false}break;case 2:if(!c(a,'')){return false}break}return true};b.prototype.W=function(){var f;var a;var h;var g;var i;var j;this.C=this._;f=e(this,b.a_9,8);if(f===0){return false}this.B=this._;switch(f){case 0:return false;case 1:if(!(!(this.I_pV<=this._)?false:true)){return false}if(!c(this,'')){return false}break;case 2:if(!(!(this.I_pV<=this._)?false:true)){return false}if(!c(this,'')){return false}a=this.A-this._;g=true;a:while(g===true){g=false;this.C=this._;if(!d(this,1,'u')){this._=this.A-a;break a}this.B=i=this._;h=this.A-i;if(!d(this,1,'g')){this._=this.A-a;break a}j=this._=this.A-h;if(!(!(this.I_pV<=j)?false:true)){this._=this.A-a;break a}if(!c(this,'')){return false}}break}return true};b.prototype.r_residual_suffix=b.prototype.W;function y(a){var g;var f;var i;var h;var j;var k;a.C=a._;g=e(a,b.a_9,8);if(g===0){return false}a.B=a._;switch(g){case 0:return false;case 1:if(!(!(a.I_pV<=a._)?false:true)){return false}if(!c(a,'')){return false}break;case 2:if(!(!(a.I_pV<=a._)?false:true)){return false}if(!c(a,'')){return false}f=a.A-a._;h=true;a:while(h===true){h=false;a.C=a._;if(!d(a,1,'u')){a._=a.A-f;break a}a.B=j=a._;i=a.A-j;if(!d(a,1,'g')){a._=a.A-f;break a}k=a._=a.A-i;if(!(!(a.I_pV<=k)?false:true)){a._=a.A-f;break a}if(!c(a,'')){return false}}break}return true};b.prototype.J=function(){var k;var l;var m;var b;var j;var c;var d;var e;var f;var a;var g;var h;var i;var o;var p;var q;var r;var s;var n;k=this._;c=true;a:while(c===true){c=false;if(!E(this)){break a}}o=this._=k;this.D=o;q=this._=p=this.A;l=p-q;d=true;a:while(d===true){d=false;if(!G(this)){break a}}s=this._=(r=this.A)-l;m=r-s;e=true;b:while(e===true){e=false;f=true;a:while(f===true){f=false;b=this.A-this._;a=true;c:while(a===true){a=false;if(!H(this)){break c}break a}this._=this.A-b;g=true;c:while(g===true){g=false;if(!D(this)){break c}break a}this._=this.A-b;if(!C(this)){break b}}}this._=this.A-m;h=true;a:while(h===true){h=false;if(!y(this)){break a}}n=this._=this.D;j=n;i=true;a:while(i===true){i=false;if(!F(this)){break a}}this._=j;return true};b.prototype.stem=b.prototype.J;b.prototype.N=function(a){return a instanceof b};b.prototype.equals=b.prototype.N;b.prototype.O=function(){var c;var a;var b;var d;c='SpanishStemmer';a=0;for(b=0;b<c.length;b++){d=c.charCodeAt(b);a=(a<<5)-a+d;a=a&a}return a|0};b.prototype.hashCode=b.prototype.O;b.serialVersionUID=1;g(b,'methodObject',function(){return new b});g(b,'a_0',function(){return[new a('',-1,6),new a('á',0,1),new a('é',0,2),new a('í',0,3),new a('ó',0,4),new a('ú',0,5)]});g(b,'a_1',function(){return[new a('la',-1,-1),new a('sela',0,-1),new a('le',-1,-1),new a('me',-1,-1),new a('se',-1,-1),new a('lo',-1,-1),new a('selo',5,-1),new a('las',-1,-1),new a('selas',7,-1),new a('les',-1,-1),new a('los',-1,-1),new a('selos',10,-1),new a('nos',-1,-1)]});g(b,'a_2',function(){return[new a('ando',-1,6),new a('iendo',-1,6),new a('yendo',-1,7),new a('ándo',-1,2),new a('iéndo',-1,1),new a('ar',-1,6),new a('er',-1,6),new a('ir',-1,6),new a('ár',-1,3),new a('ér',-1,4),new a('ír',-1,5)]});g(b,'a_3',function(){return[new a('ic',-1,-1),new a('ad',-1,-1),new a('os',-1,-1),new a('iv',-1,1)]});g(b,'a_4',function(){return[new a('able',-1,1),new a('ible',-1,1),new a('ante',-1,1)]});g(b,'a_5',function(){return[new a('ic',-1,1),new a('abil',-1,1),new a('iv',-1,1)]});g(b,'a_6',function(){return[new a('ica',-1,1),new a('ancia',-1,2),new a('encia',-1,5),new a('adora',-1,2),new a('osa',-1,1),new a('ista',-1,1),new a('iva',-1,9),new a('anza',-1,1),new a('logía',-1,3),new a('idad',-1,8),new a('able',-1,1),new a('ible',-1,1),new a('ante',-1,2),new a('mente',-1,7),new a('amente',13,6),new a('ación',-1,2),new a('ución',-1,4),new a('ico',-1,1),new a('ismo',-1,1),new a('oso',-1,1),new a('amiento',-1,1),new a('imiento',-1,1),new a('ivo',-1,9),new a('ador',-1,2),new a('icas',-1,1),new a('ancias',-1,2),new a('encias',-1,5),new a('adoras',-1,2),new a('osas',-1,1),new a('istas',-1,1),new a('ivas',-1,9),new a('anzas',-1,1),new a('logías',-1,3),new a('idades',-1,8),new a('ables',-1,1),new a('ibles',-1,1),new a('aciones',-1,2),new a('uciones',-1,4),new a('adores',-1,2),new a('antes',-1,2),new a('icos',-1,1),new a('ismos',-1,1),new a('osos',-1,1),new a('amientos',-1,1),new a('imientos',-1,1),new a('ivos',-1,9)]});g(b,'a_7',function(){return[new a('ya',-1,1),new a('ye',-1,1),new a('yan',-1,1),new a('yen',-1,1),new a('yeron',-1,1),new a('yendo',-1,1),new a('yo',-1,1),new a('yas',-1,1),new a('yes',-1,1),new a('yais',-1,1),new a('yamos',-1,1),new a('yó',-1,1)]});g(b,'a_8',function(){return[new a('aba',-1,2),new a('ada',-1,2),new a('ida',-1,2),new a('ara',-1,2),new a('iera',-1,2),new a('ía',-1,2),new a('aría',5,2),new a('ería',5,2),new a('iría',5,2),new a('ad',-1,2),new a('ed',-1,2),new a('id',-1,2),new a('ase',-1,2),new a('iese',-1,2),new a('aste',-1,2),new a('iste',-1,2),new a('an',-1,2),new a('aban',16,2),new a('aran',16,2),new a('ieran',16,2),new a('ían',16,2),new a('arían',20,2),new a('erían',20,2),new a('irían',20,2),new a('en',-1,1),new a('asen',24,2),new a('iesen',24,2),new a('aron',-1,2),new a('ieron',-1,2),new a('arán',-1,2),new a('erán',-1,2),new a('irán',-1,2),new a('ado',-1,2),new a('ido',-1,2),new a('ando',-1,2),new a('iendo',-1,2),new a('ar',-1,2),new a('er',-1,2),new a('ir',-1,2),new a('as',-1,2),new a('abas',39,2),new a('adas',39,2),new a('idas',39,2),new a('aras',39,2),new a('ieras',39,2),new a('ías',39,2),new a('arías',45,2),new a('erías',45,2),new a('irías',45,2),new a('es',-1,1),new a('ases',49,2),new a('ieses',49,2),new a('abais',-1,2),new a('arais',-1,2),new a('ierais',-1,2),new a('íais',-1,2),new a('aríais',55,2),new a('eríais',55,2),new a('iríais',55,2),new a('aseis',-1,2),new a('ieseis',-1,2),new a('asteis',-1,2),new a('isteis',-1,2),new a('áis',-1,2),new a('éis',-1,1),new a('aréis',64,2),new a('eréis',64,2),new a('iréis',64,2),new a('ados',-1,2),new a('idos',-1,2),new a('amos',-1,2),new a('ábamos',70,2),new a('áramos',70,2),new a('iéramos',70,2),new a('íamos',70,2),new a('aríamos',74,2),new a('eríamos',74,2),new a('iríamos',74,2),new a('emos',-1,1),new a('aremos',78,2),new a('eremos',78,2),new a('iremos',78,2),new a('ásemos',78,2),new a('iésemos',78,2),new a('imos',-1,2),new a('arás',-1,2),new a('erás',-1,2),new a('irás',-1,2),new a('ís',-1,2),new a('ará',-1,2),new a('erá',-1,2),new a('irá',-1,2),new a('aré',-1,2),new a('eré',-1,2),new a('iré',-1,2),new a('ió',-1,2)]});g(b,'a_9',function(){return[new a('a',-1,1),new a('e',-1,2),new a('o',-1,1),new a('os',-1,1),new a('á',-1,1),new a('é',-1,2),new a('í',-1,1),new a('ó',-1,1)]});g(b,'g_v',function(){return[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,4,10]});var o={'src/stemmer.jsx':{Stemmer:m},'src/spanish-stemmer.jsx':{SpanishStemmer:b}}}(JSX)) +var Stemmer = JSX.require("src/spanish-stemmer.jsx").SpanishStemmer; +""" + + +class SearchSpanish(SearchLanguage): + lang = 'es' + language_name = 'Spanish' + js_stemmer_rawcode = 'spanish-stemmer.js' + js_stemmer_code = js_stemmer + stopwords = spanish_stopwords + + def init(self, options: Dict) -> None: + self.stemmer = snowballstemmer.stemmer('spanish') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/sphinx/search/fi.py b/sphinx/sphinx/search/fi.py new file mode 100644 index 0000000..67bee89 --- /dev/null +++ b/sphinx/sphinx/search/fi.py @@ -0,0 +1,126 @@ +""" + sphinx.search.fi + ~~~~~~~~~~~~~~~~ + + Finnish search language: includes the JS Finnish stemmer. + + :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + + +finnish_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/finnish/stop.txt +| forms of BE + +olla +olen +olet +on +olemme +olette +ovat +ole | negative form + +oli +olisi +olisit +olisin +olisimme +olisitte +olisivat +olit +olin +olimme +olitte +olivat +ollut +olleet + +en | negation +et +ei +emme +ette +eivät + +|Nom Gen Acc Part Iness Elat Illat Adess Ablat Allat Ess Trans +minä minun minut minua minussa minusta minuun minulla minulta minulle | I +sinä sinun sinut sinua sinussa sinusta sinuun sinulla sinulta sinulle | you +hän hänen hänet häntä hänessä hänestä häneen hänellä häneltä hänelle | he she +me meidän meidät meitä meissä meistä meihin meillä meiltä meille | we +te teidän teidät teitä teissä teistä teihin teillä teiltä teille | you +he heidän heidät heitä heissä heistä heihin heillä heiltä heille | they + +tämä tämän tätä tässä tästä tähän tällä tältä tälle tänä täksi | this +tuo tuon tuota tuossa tuosta tuohon tuolla tuolta tuolle tuona tuoksi | that +se sen sitä siinä siitä siihen sillä siltä sille sinä siksi | it +nämä näiden näitä näissä näistä näihin näillä näiltä näille näinä näiksi | these +nuo noiden noita noissa noista noihin noilla noilta noille noina noiksi | those +ne niiden niitä niissä niistä niihin niillä niiltä niille niinä niiksi | they + +kuka kenen kenet ketä kenessä kenestä keneen kenellä keneltä kenelle kenenä keneksi| who +ketkä keiden ketkä keitä keissä keistä keihin keillä keiltä keille keinä keiksi | (pl) +mikä minkä minkä mitä missä mistä mihin millä miltä mille minä miksi | which what +mitkä | (pl) + +joka jonka jota jossa josta johon jolla jolta jolle jona joksi | who which +jotka joiden joita joissa joista joihin joilla joilta joille joina joiksi | (pl) + +| conjunctions + +että | that +ja | and +jos | if +koska | because +kuin | than +mutta | but +niin | so +sekä | and +sillä | for +tai | or +vaan | but +vai | or +vaikka | although + + +| prepositions + +kanssa | with +mukaan | according to +noin | about +poikki | across +yli | over, across + +| other + +kun | when +niin | so +nyt | now +itse | self +''') + +js_stemmer = """ +var JSX={};(function(j){function l(b,e){var a=function(){};a.prototype=e.prototype;var c=new a;for(var d in b){b[d].prototype=c}}function M(c,b){for(var a in b.prototype)if(b.prototype.hasOwnProperty(a))c.prototype[a]=b.prototype[a]}function f(a,b,d){function c(a,b,c){delete a[b];a[b]=c;return c}Object.defineProperty(a,b,{get:function(){return c(a,b,d())},set:function(d){c(a,b,d)},enumerable:true,configurable:true})}function N(a,b,c){return a[b]=a[b]/c|0}var s=parseInt;var C=parseFloat;function O(a){return a!==a}var A=isFinite;var z=encodeURIComponent;var y=decodeURIComponent;var x=encodeURI;var v=decodeURI;var u=Object.prototype.toString;var E=Object.prototype.hasOwnProperty;function k(){}j.require=function(b){var a=q[b];return a!==undefined?a:null};j.profilerIsRunning=function(){return k.getResults!=null};j.getProfileResults=function(){return(k.getResults||function(){return{}})()};j.postProfileResults=function(a,b){if(k.postResults==null)throw new Error('profiler has not been turned on');return k.postResults(a,b)};j.resetProfileResults=function(){if(k.resetResults==null)throw new Error('profiler has not been turned on');return k.resetResults()};j.DEBUG=false;function t(){};l([t],Error);function b(a,b,c){this.F=a.length;this.M=a;this.N=b;this.H=c;this.G=null;this.S=null};function m(a,b,c,d,e){this.F=a.length;this.M=a;this.N=b;this.H=c;this.G=d;this.S=e};l([b,m],Object);function p(){};l([p],Object);function g(){var a;var b;var c;this.I={};a=this.E='';b=this._=0;c=this.A=a.length;this.B=0;this.C=b;this.D=c};l([g],p);function w(a,b){a.E=b.E;a._=b._;a.A=b.A;a.B=b.B;a.C=b.C;a.D=b.D};function n(b,d,c,e){var a;if(b._>=b.A){return false}a=b.E.charCodeAt(b._);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._++;return true};g.prototype.L=function(c,b,d){var a;if(this._<=this.B){return false}a=this.E.charCodeAt(this._-1);if(a>d||a<b){return false}a-=b;if((c[a>>>3]&1<<(a&7))===0){return false}this._--;return true};function h(b,d,c,e){var a;if(b._<=b.B){return false}a=b.E.charCodeAt(b._-1);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._--;return true};function o(a,d,c,e){var b;if(a._>=a.A){return false}b=a.E.charCodeAt(a._);if(b>e||b<c){a._++;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._++;return true}return false};function i(a,d,c,e){var b;if(a._<=a.B){return false}b=a.E.charCodeAt(a._-1);if(b>e||b<c){a._--;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._--;return true}return false};g.prototype.K=function(a,c){var b;if(this._-this.B<a){return false}if(this.E.slice((b=this._)-a,b)!==c){return false}this._-=a;return true};function c(a,b,d){var c;if(a._-a.B<b){return false}if(a.E.slice((c=a._)-b,c)!==d){return false}a._-=b;return true};g.prototype.Q=function(l,o){var b;var d;var e;var m;var f;var j;var k;var h;var g;var c;var a;var i;var n;b=0;d=o;e=this._;m=this.B;f=0;j=0;k=false;while(true){h=b+(d-b>>1);g=0;c=f<j?f:j;a=l[h];for(i=a.F-1-c;i>=0;i--){if(e-c===m){g=-1;break}g=this.E.charCodeAt(e-1-c)-a.M.charCodeAt(i);if(g!==0){break}c++}if(g<0){d=h;j=c}else{b=h;f=c}if(d-b<=1){if(b>0){break}if(d===b){break}if(k){break}k=true}}while(true){a=l[b];if(f>=a.F){this._=e-a.F|0;if(a.G==null){return a.H}n=a.G(this);this._=e-a.F|0;if(n){return a.H}}b=a.N;if(b<0){return 0}}return-1};function e(d,m,p){var b;var g;var e;var n;var f;var k;var l;var i;var h;var c;var a;var j;var o;b=0;g=p;e=d._;n=d.B;f=0;k=0;l=false;while(true){i=b+(g-b>>1);h=0;c=f<k?f:k;a=m[i];for(j=a.F-1-c;j>=0;j--){if(e-c===n){h=-1;break}h=d.E.charCodeAt(e-1-c)-a.M.charCodeAt(j);if(h!==0){break}c++}if(h<0){g=i;k=c}else{b=i;f=c}if(g-b<=1){if(b>0){break}if(g===b){break}if(l){break}l=true}}while(true){a=m[b];if(f>=a.F){d._=e-a.F|0;if(a.G==null){return a.H}o=a.G(d);d._=e-a.F|0;if(o){return a.H}}b=a.N;if(b<0){return 0}}return-1};function D(a,b,d,e){var c;c=e.length-(d-b);a.E=a.E.slice(0,b)+e+a.E.slice(d);a.A+=c|0;if(a._>=d){a._+=c|0}else if(a._>b){a._=b}return c|0};function d(a,f){var b;var c;var d;var e;b=false;if((c=a.C)<0||c>(d=a.D)||d>(e=a.A)||e>a.E.length?false:true){D(a,a.C,a.D,f);b=true}return b};function r(a,f){var b;var c;var d;var e;b='';if((c=a.C)<0||c>(d=a.D)||d>(e=a.A)||e>a.E.length?false:true){b=a.E.slice(a.C,a.D)}return b};g.prototype.J=function(){return false};g.prototype.e=function(b){var a;var c;var d;var e;a=this.I['.'+b];if(a==null){c=this.E=b;d=this._=0;e=this.A=c.length;this.B=0;this.C=d;this.D=e;this.J();a=this.E;this.I['.'+b]=a}return a};g.prototype.stemWord=g.prototype.e;g.prototype.f=function(e){var d;var b;var c;var a;var f;var g;var h;d=[];for(b=0;b<e.length;b++){c=e[b];a=this.I['.'+c];if(a==null){f=this.E=c;g=this._=0;h=this.A=f.length;this.B=0;this.C=g;this.D=h;this.J();a=this.E;this.I['.'+c]=a}d.push(a)}return d};g.prototype.stemWords=g.prototype.f;function a(){g.call(this);this.B_ending_removed=false;this.S_x='';this.I_p2=0;this.I_p1=0};l([a],g);a.prototype.O=function(a){this.B_ending_removed=a.B_ending_removed;this.S_x=a.S_x;this.I_p2=a.I_p2;this.I_p1=a.I_p1;w(this,a)};a.prototype.copy_from=a.prototype.O;a.prototype.Y=function(){var b;var c;var d;var e;var f;var g;var h;var i;var j;this.I_p1=i=this.A;this.I_p2=i;a:while(true){b=this._;d=true;b:while(d===true){d=false;if(!n(this,a.g_V1,97,246)){break b}this._=b;break a}h=this._=b;if(h>=this.A){return false}this._++}a:while(true){e=true;b:while(e===true){e=false;if(!o(this,a.g_V1,97,246)){break b}break a}if(this._>=this.A){return false}this._++}this.I_p1=this._;a:while(true){c=this._;f=true;b:while(f===true){f=false;if(!n(this,a.g_V1,97,246)){break b}this._=c;break a}j=this._=c;if(j>=this.A){return false}this._++}a:while(true){g=true;b:while(g===true){g=false;if(!o(this,a.g_V1,97,246)){break b}break a}if(this._>=this.A){return false}this._++}this.I_p2=this._;return true};a.prototype.r_mark_regions=a.prototype.Y;function H(b){var d;var e;var f;var c;var g;var h;var j;var k;var i;b.I_p1=k=b.A;b.I_p2=k;a:while(true){d=b._;f=true;b:while(f===true){f=false;if(!n(b,a.g_V1,97,246)){break b}b._=d;break a}j=b._=d;if(j>=b.A){return false}b._++}a:while(true){c=true;b:while(c===true){c=false;if(!o(b,a.g_V1,97,246)){break b}break a}if(b._>=b.A){return false}b._++}b.I_p1=b._;a:while(true){e=b._;g=true;b:while(g===true){g=false;if(!n(b,a.g_V1,97,246)){break b}b._=e;break a}i=b._=e;if(i>=b.A){return false}b._++}a:while(true){h=true;b:while(h===true){h=false;if(!o(b,a.g_V1,97,246)){break b}break a}if(b._>=b.A){return false}b._++}b.I_p2=b._;return true};a.prototype.U=function(){return!(this.I_p2<=this._)?false:true};a.prototype.r_R2=a.prototype.U;a.prototype.a=function(){var b;var f;var c;var g;var i;var j;f=this.A-(g=this._);if(g<this.I_p1){return false}i=this._=this.I_p1;c=this.B;this.B=i;j=this._=this.A-f;this.D=j;b=e(this,a.a_0,10);if(b===0){this.B=c;return false}this.C=this._;this.B=c;switch(b){case 0:return false;case 1:if(!h(this,a.g_particle_end,97,246)){return false}break;case 2:if(!(!(this.I_p2<=this._)?false:true)){return false}break}return!d(this,'')?false:true};a.prototype.r_particle_etc=a.prototype.a;function I(b){var c;var g;var f;var i;var j;var k;g=b.A-(i=b._);if(i<b.I_p1){return false}j=b._=b.I_p1;f=b.B;b.B=j;k=b._=b.A-g;b.D=k;c=e(b,a.a_0,10);if(c===0){b.B=f;return false}b.C=b._;b.B=f;switch(c){case 0:return false;case 1:if(!h(b,a.g_particle_end,97,246)){return false}break;case 2:if(!(!(b.I_p2<=b._)?false:true)){return false}break}return!d(b,'')?false:true};a.prototype.b=function(){var b;var h;var f;var i;var g;var j;var k;var l;h=this.A-(j=this._);if(j<this.I_p1){return false}k=this._=this.I_p1;f=this.B;this.B=k;l=this._=this.A-h;this.D=l;b=e(this,a.a_4,9);if(b===0){this.B=f;return false}this.C=this._;this.B=f;switch(b){case 0:return false;case 1:i=this.A-this._;g=true;a:while(g===true){g=false;if(!c(this,1,'k')){break a}return false}this._=this.A-i;if(!d(this,'')){return false}break;case 2:if(!d(this,'')){return false}this.D=this._;if(!c(this,3,'kse')){return false}this.C=this._;if(!d(this,'ksi')){return false}break;case 3:if(!d(this,'')){return false}break;case 4:if(e(this,a.a_1,6)===0){return false}if(!d(this,'')){return false}break;case 5:if(e(this,a.a_2,6)===0){return false}if(!d(this,'')){return false}break;case 6:if(e(this,a.a_3,2)===0){return false}if(!d(this,'')){return false}break}return true};a.prototype.r_possessive=a.prototype.b;function J(b){var f;var i;var g;var j;var h;var k;var l;var m;i=b.A-(k=b._);if(k<b.I_p1){return false}l=b._=b.I_p1;g=b.B;b.B=l;m=b._=b.A-i;b.D=m;f=e(b,a.a_4,9);if(f===0){b.B=g;return false}b.C=b._;b.B=g;switch(f){case 0:return false;case 1:j=b.A-b._;h=true;a:while(h===true){h=false;if(!c(b,1,'k')){break a}return false}b._=b.A-j;if(!d(b,'')){return false}break;case 2:if(!d(b,'')){return false}b.D=b._;if(!c(b,3,'kse')){return false}b.C=b._;if(!d(b,'ksi')){return false}break;case 3:if(!d(b,'')){return false}break;case 4:if(e(b,a.a_1,6)===0){return false}if(!d(b,'')){return false}break;case 5:if(e(b,a.a_2,6)===0){return false}if(!d(b,'')){return false}break;case 6:if(e(b,a.a_3,2)===0){return false}if(!d(b,'')){return false}break}return true};a.prototype.T=function(){return e(this,a.a_5,7)===0?false:true};a.prototype.r_LONG=a.prototype.T;a.prototype.V=function(){return!c(this,1,'i')?false:!h(this,a.g_V2,97,246)?false:true};a.prototype.r_VI=a.prototype.V;a.prototype.W=function(){var j;var o;var f;var g;var p;var m;var b;var k;var l;var q;var r;var s;var n;o=this.A-(q=this._);if(q<this.I_p1){return false}r=this._=this.I_p1;f=this.B;this.B=r;s=this._=this.A-o;this.D=s;j=e(this,a.a_6,30);if(j===0){this.B=f;return false}this.C=this._;this.B=f;switch(j){case 0:return false;case 1:if(!c(this,1,'a')){return false}break;case 2:if(!c(this,1,'e')){return false}break;case 3:if(!c(this,1,'i')){return false}break;case 4:if(!c(this,1,'o')){return false}break;case 5:if(!c(this,1,'ä')){return false}break;case 6:if(!c(this,1,'ö')){return false}break;case 7:g=this.A-this._;b=true;a:while(b===true){b=false;p=this.A-this._;k=true;b:while(k===true){k=false;m=this.A-this._;l=true;c:while(l===true){l=false;if(!(e(this,a.a_5,7)===0?false:true)){break c}break b}this._=this.A-m;if(!c(this,2,'ie')){this._=this.A-g;break a}}n=this._=this.A-p;if(n<=this.B){this._=this.A-g;break a}this._--;this.C=this._}break;case 8:if(!h(this,a.g_V1,97,246)){return false}if(!i(this,a.g_V1,97,246)){return false}break;case 9:if(!c(this,1,'e')){return false}break}if(!d(this,'')){return false}this.B_ending_removed=true;return true};a.prototype.r_case_ending=a.prototype.W;function K(b){var f;var o;var g;var j;var p;var n;var k;var l;var m;var r;var s;var t;var q;o=b.A-(r=b._);if(r<b.I_p1){return false}s=b._=b.I_p1;g=b.B;b.B=s;t=b._=b.A-o;b.D=t;f=e(b,a.a_6,30);if(f===0){b.B=g;return false}b.C=b._;b.B=g;switch(f){case 0:return false;case 1:if(!c(b,1,'a')){return false}break;case 2:if(!c(b,1,'e')){return false}break;case 3:if(!c(b,1,'i')){return false}break;case 4:if(!c(b,1,'o')){return false}break;case 5:if(!c(b,1,'ä')){return false}break;case 6:if(!c(b,1,'ö')){return false}break;case 7:j=b.A-b._;k=true;a:while(k===true){k=false;p=b.A-b._;l=true;b:while(l===true){l=false;n=b.A-b._;m=true;c:while(m===true){m=false;if(!(e(b,a.a_5,7)===0?false:true)){break c}break b}b._=b.A-n;if(!c(b,2,'ie')){b._=b.A-j;break a}}q=b._=b.A-p;if(q<=b.B){b._=b.A-j;break a}b._--;b.C=b._}break;case 8:if(!h(b,a.g_V1,97,246)){return false}if(!i(b,a.g_V1,97,246)){return false}break;case 9:if(!c(b,1,'e')){return false}break}if(!d(b,'')){return false}b.B_ending_removed=true;return true};a.prototype.Z=function(){var b;var h;var f;var i;var g;var j;var k;var l;h=this.A-(j=this._);if(j<this.I_p2){return false}k=this._=this.I_p2;f=this.B;this.B=k;l=this._=this.A-h;this.D=l;b=e(this,a.a_7,14);if(b===0){this.B=f;return false}this.C=this._;this.B=f;switch(b){case 0:return false;case 1:i=this.A-this._;g=true;a:while(g===true){g=false;if(!c(this,2,'po')){break a}return false}this._=this.A-i;break}return!d(this,'')?false:true};a.prototype.r_other_endings=a.prototype.Z;function L(b){var f;var i;var g;var j;var h;var k;var l;var m;i=b.A-(k=b._);if(k<b.I_p2){return false}l=b._=b.I_p2;g=b.B;b.B=l;m=b._=b.A-i;b.D=m;f=e(b,a.a_7,14);if(f===0){b.B=g;return false}b.C=b._;b.B=g;switch(f){case 0:return false;case 1:j=b.A-b._;h=true;a:while(h===true){h=false;if(!c(b,2,'po')){break a}return false}b._=b.A-j;break}return!d(b,'')?false:true};a.prototype.X=function(){var c;var b;var f;var g;var h;c=this.A-(f=this._);if(f<this.I_p1){return false}g=this._=this.I_p1;b=this.B;this.B=g;h=this._=this.A-c;this.D=h;if(e(this,a.a_8,2)===0){this.B=b;return false}this.C=this._;this.B=b;return!d(this,'')?false:true};a.prototype.r_i_plural=a.prototype.X;function G(b){var f;var c;var g;var h;var i;f=b.A-(g=b._);if(g<b.I_p1){return false}h=b._=b.I_p1;c=b.B;b.B=h;i=b._=b.A-f;b.D=i;if(e(b,a.a_8,2)===0){b.B=c;return false}b.C=b._;b.B=c;return!d(b,'')?false:true};a.prototype.c=function(){var i;var l;var b;var j;var k;var g;var m;var f;var o;var p;var q;var r;var s;var t;var n;l=this.A-(o=this._);if(o<this.I_p1){return false}p=this._=this.I_p1;b=this.B;this.B=p;q=this._=this.A-l;this.D=q;if(!c(this,1,'t')){this.B=b;return false}this.C=r=this._;j=this.A-r;if(!h(this,a.g_V1,97,246)){this.B=b;return false}this._=this.A-j;if(!d(this,'')){return false}this.B=b;k=this.A-(s=this._);if(s<this.I_p2){return false}t=this._=this.I_p2;g=this.B;this.B=t;n=this._=this.A-k;this.D=n;i=e(this,a.a_9,2);if(i===0){this.B=g;return false}this.C=this._;this.B=g;switch(i){case 0:return false;case 1:m=this.A-this._;f=true;a:while(f===true){f=false;if(!c(this,2,'po')){break a}return false}this._=this.A-m;break}return!d(this,'')?false:true};a.prototype.r_t_plural=a.prototype.c;function F(b){var g;var m;var f;var o;var l;var i;var k;var j;var p;var q;var r;var s;var t;var u;var n;m=b.A-(p=b._);if(p<b.I_p1){return false}q=b._=b.I_p1;f=b.B;b.B=q;r=b._=b.A-m;b.D=r;if(!c(b,1,'t')){b.B=f;return false}b.C=s=b._;o=b.A-s;if(!h(b,a.g_V1,97,246)){b.B=f;return false}b._=b.A-o;if(!d(b,'')){return false}b.B=f;l=b.A-(t=b._);if(t<b.I_p2){return false}u=b._=b.I_p2;i=b.B;b.B=u;n=b._=b.A-l;b.D=n;g=e(b,a.a_9,2);if(g===0){b.B=i;return false}b.C=b._;b.B=i;switch(g){case 0:return false;case 1:k=b.A-b._;j=true;a:while(j===true){j=false;if(!c(b,2,'po')){break a}return false}b._=b.A-k;break}return!d(b,'')?false:true};a.prototype.d=function(){var x;var q;var s;var t;var u;var v;var w;var y;var f;var g;var j;var k;var l;var m;var n;var b;var o;var z;var p;var B;var C;var D;var E;var F;var G;var H;var I;var J;var K;var L;var A;x=this.A-(z=this._);if(z<this.I_p1){return false}B=this._=this.I_p1;q=this.B;this.B=B;D=this._=(C=this.A)-x;s=C-D;g=true;a:while(g===true){g=false;t=this.A-this._;if(!(e(this,a.a_5,7)===0?false:true)){break a}p=this._=this.A-t;this.D=p;if(p<=this.B){break a}this._--;this.C=this._;if(!d(this,'')){return false}}F=this._=(E=this.A)-s;u=E-F;j=true;a:while(j===true){j=false;this.D=this._;if(!h(this,a.g_AEI,97,228)){break a}this.C=this._;if(!i(this,a.g_V1,97,246)){break a}if(!d(this,'')){return false}}H=this._=(G=this.A)-u;v=G-H;k=true;a:while(k===true){k=false;this.D=this._;if(!c(this,1,'j')){break a}this.C=this._;l=true;b:while(l===true){l=false;w=this.A-this._;m=true;c:while(m===true){m=false;if(!c(this,1,'o')){break c}break b}this._=this.A-w;if(!c(this,1,'u')){break a}}if(!d(this,'')){return false}}J=this._=(I=this.A)-v;y=I-J;n=true;a:while(n===true){n=false;this.D=this._;if(!c(this,1,'o')){break a}this.C=this._;if(!c(this,1,'j')){break a}if(!d(this,'')){return false}}this._=this.A-y;this.B=q;a:while(true){f=this.A-this._;b=true;b:while(b===true){b=false;if(!i(this,a.g_V1,97,246)){break b}this._=this.A-f;break a}K=this._=this.A-f;if(K<=this.B){return false}this._--}this.D=L=this._;if(L<=this.B){return false}this._--;this.C=this._;A=this.S_x=r(this,this.S_x);return A===''?false:!(o=this.S_x,c(this,o.length,o))?false:!d(this,'')?false:true};a.prototype.r_tidy=a.prototype.d;function B(b){var s;var t;var u;var v;var w;var x;var y;var z;var l;var g;var j;var k;var f;var m;var n;var o;var p;var A;var q;var C;var D;var E;var F;var G;var H;var I;var J;var K;var L;var M;var B;s=b.A-(A=b._);if(A<b.I_p1){return false}C=b._=b.I_p1;t=b.B;b.B=C;E=b._=(D=b.A)-s;u=D-E;g=true;a:while(g===true){g=false;v=b.A-b._;if(!(e(b,a.a_5,7)===0?false:true)){break a}q=b._=b.A-v;b.D=q;if(q<=b.B){break a}b._--;b.C=b._;if(!d(b,'')){return false}}G=b._=(F=b.A)-u;w=F-G;j=true;a:while(j===true){j=false;b.D=b._;if(!h(b,a.g_AEI,97,228)){break a}b.C=b._;if(!i(b,a.g_V1,97,246)){break a}if(!d(b,'')){return false}}I=b._=(H=b.A)-w;x=H-I;k=true;a:while(k===true){k=false;b.D=b._;if(!c(b,1,'j')){break a}b.C=b._;f=true;b:while(f===true){f=false;y=b.A-b._;m=true;c:while(m===true){m=false;if(!c(b,1,'o')){break c}break b}b._=b.A-y;if(!c(b,1,'u')){break a}}if(!d(b,'')){return false}}K=b._=(J=b.A)-x;z=J-K;n=true;a:while(n===true){n=false;b.D=b._;if(!c(b,1,'o')){break a}b.C=b._;if(!c(b,1,'j')){break a}if(!d(b,'')){return false}}b._=b.A-z;b.B=t;a:while(true){l=b.A-b._;o=true;b:while(o===true){o=false;if(!i(b,a.g_V1,97,246)){break b}b._=b.A-l;break a}L=b._=b.A-l;if(L<=b.B){return false}b._--}b.D=M=b._;if(M<=b.B){return false}b._--;b.C=b._;B=b.S_x=r(b,b.S_x);return B===''?false:!(p=b.S_x,c(b,p.length,p))?false:!d(b,'')?false:true};a.prototype.J=function(){var p;var k;var l;var m;var n;var o;var q;var r;var b;var c;var d;var e;var f;var g;var a;var h;var i;var j;var t;var u;var v;var w;var x;var y;var z;var A;var C;var D;var s;p=this._;b=true;a:while(b===true){b=false;if(!H(this)){break a}}t=this._=p;this.B_ending_removed=false;this.B=t;v=this._=u=this.A;k=u-v;c=true;a:while(c===true){c=false;if(!I(this)){break a}}x=this._=(w=this.A)-k;l=w-x;d=true;a:while(d===true){d=false;if(!J(this)){break a}}z=this._=(y=this.A)-l;m=y-z;e=true;a:while(e===true){e=false;if(!K(this)){break a}}C=this._=(A=this.A)-m;n=A-C;f=true;a:while(f===true){f=false;if(!L(this)){break a}}this._=this.A-n;g=true;a:while(g===true){g=false;o=this.A-this._;a=true;b:while(a===true){a=false;if(!this.B_ending_removed){break b}q=this.A-this._;h=true;c:while(h===true){h=false;if(!G(this)){break c}}this._=this.A-q;break a}s=this._=(D=this.A)-o;r=D-s;i=true;b:while(i===true){i=false;if(!F(this)){break b}}this._=this.A-r}j=true;a:while(j===true){j=false;if(!B(this)){break a}}this._=this.B;return true};a.prototype.stem=a.prototype.J;a.prototype.P=function(b){return b instanceof a};a.prototype.equals=a.prototype.P;a.prototype.R=function(){var c;var a;var b;var d;c='FinnishStemmer';a=0;for(b=0;b<c.length;b++){d=c.charCodeAt(b);a=(a<<5)-a+d;a=a&a}return a|0};a.prototype.hashCode=a.prototype.R;a.serialVersionUID=1;f(a,'methodObject',function(){return new a});f(a,'a_0',function(){return[new b('pa',-1,1),new b('sti',-1,2),new b('kaan',-1,1),new b('han',-1,1),new b('kin',-1,1),new b('hän',-1,1),new b('kään',-1,1),new b('ko',-1,1),new b('pä',-1,1),new b('kö',-1,1)]});f(a,'a_1',function(){return[new b('lla',-1,-1),new b('na',-1,-1),new b('ssa',-1,-1),new b('ta',-1,-1),new b('lta',3,-1),new b('sta',3,-1)]});f(a,'a_2',function(){return[new b('llä',-1,-1),new b('nä',-1,-1),new b('ssä',-1,-1),new b('tä',-1,-1),new b('ltä',3,-1),new b('stä',3,-1)]});f(a,'a_3',function(){return[new b('lle',-1,-1),new b('ine',-1,-1)]});f(a,'a_4',function(){return[new b('nsa',-1,3),new b('mme',-1,3),new b('nne',-1,3),new b('ni',-1,2),new b('si',-1,1),new b('an',-1,4),new b('en',-1,6),new b('än',-1,5),new b('nsä',-1,3)]});f(a,'a_5',function(){return[new b('aa',-1,-1),new b('ee',-1,-1),new b('ii',-1,-1),new b('oo',-1,-1),new b('uu',-1,-1),new b('ää',-1,-1),new b('öö',-1,-1)]});f(a,'a_6',function(){return[new b('a',-1,8),new b('lla',0,-1),new b('na',0,-1),new b('ssa',0,-1),new b('ta',0,-1),new b('lta',4,-1),new b('sta',4,-1),new b('tta',4,9),new b('lle',-1,-1),new b('ine',-1,-1),new b('ksi',-1,-1),new b('n',-1,7),new b('han',11,1),new m('den',11,-1,function(c){var b;b=c;return!b.K(1,'i')?false:!b.L(a.g_V2,97,246)?false:true},a.methodObject),new m('seen',11,-1,function(c){var b;b=c;return b.Q(a.a_5,7)===0?false:true},a.methodObject),new b('hen',11,2),new m('tten',11,-1,function(c){var b;b=c;return!b.K(1,'i')?false:!b.L(a.g_V2,97,246)?false:true},a.methodObject),new b('hin',11,3),new m('siin',11,-1,function(c){var b;b=c;return!b.K(1,'i')?false:!b.L(a.g_V2,97,246)?false:true},a.methodObject),new b('hon',11,4),new b('hän',11,5),new b('hön',11,6),new b('ä',-1,8),new b('llä',22,-1),new b('nä',22,-1),new b('ssä',22,-1),new b('tä',22,-1),new b('ltä',26,-1),new b('stä',26,-1),new b('ttä',26,9)]});f(a,'a_7',function(){return[new b('eja',-1,-1),new b('mma',-1,1),new b('imma',1,-1),new b('mpa',-1,1),new b('impa',3,-1),new b('mmi',-1,1),new b('immi',5,-1),new b('mpi',-1,1),new b('impi',7,-1),new b('ejä',-1,-1),new b('mmä',-1,1),new b('immä',10,-1),new b('mpä',-1,1),new b('impä',12,-1)]});f(a,'a_8',function(){return[new b('i',-1,-1),new b('j',-1,-1)]});f(a,'a_9',function(){return[new b('mma',-1,1),new b('imma',0,-1)]});f(a,'g_AEI',function(){return[17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8]});f(a,'g_V1',function(){return[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32]});f(a,'g_V2',function(){return[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32]});f(a,'g_particle_end',function(){return[17,97,24,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32]});var q={'src/stemmer.jsx':{Stemmer:p},'src/finnish-stemmer.jsx':{FinnishStemmer:a}}}(JSX)) +var Stemmer = JSX.require("src/finnish-stemmer.jsx").FinnishStemmer; +""" + + +class SearchFinnish(SearchLanguage): + lang = 'fi' + language_name = 'Finnish' + js_stemmer_rawcode = 'finnish-stemmer.js' + js_stemmer_code = js_stemmer + stopwords = finnish_stopwords + + def init(self, options: Dict) -> None: + self.stemmer = snowballstemmer.stemmer('finnish') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/sphinx/search/fr.py b/sphinx/sphinx/search/fr.py new file mode 100644 index 0000000..b152718 --- /dev/null +++ b/sphinx/sphinx/search/fr.py @@ -0,0 +1,212 @@ +""" + sphinx.search.fr + ~~~~~~~~~~~~~~~~ + + French search language: includes the JS French stemmer. + + :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + + +french_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/french/stop.txt +au | a + le +aux | a + les +avec | with +ce | this +ces | these +dans | with +de | of +des | de + les +du | de + le +elle | she +en | `of them' etc +et | and +eux | them +il | he +je | I +la | the +le | the +leur | their +lui | him +ma | my (fem) +mais | but +me | me +même | same; as in moi-même (myself) etc +mes | me (pl) +moi | me +mon | my (masc) +ne | not +nos | our (pl) +notre | our +nous | we +on | one +ou | where +par | by +pas | not +pour | for +qu | que before vowel +que | that +qui | who +sa | his, her (fem) +se | oneself +ses | his (pl) +son | his, her (masc) +sur | on +ta | thy (fem) +te | thee +tes | thy (pl) +toi | thee +ton | thy (masc) +tu | thou +un | a +une | a +vos | your (pl) +votre | your +vous | you + + | single letter forms + +c | c' +d | d' +j | j' +l | l' +à | to, at +m | m' +n | n' +s | s' +t | t' +y | there + + | forms of être (not including the infinitive): +été +étée +étées +étés +étant +suis +es +est +sommes +êtes +sont +serai +seras +sera +serons +serez +seront +serais +serait +serions +seriez +seraient +étais +était +étions +étiez +étaient +fus +fut +fûmes +fûtes +furent +sois +soit +soyons +soyez +soient +fusse +fusses +fût +fussions +fussiez +fussent + + | forms of avoir (not including the infinitive): +ayant +eu +eue +eues +eus +ai +as +avons +avez +ont +aurai +auras +aura +aurons +aurez +auront +aurais +aurait +aurions +auriez +auraient +avais +avait +avions +aviez +avaient +eut +eûmes +eûtes +eurent +aie +aies +ait +ayons +ayez +aient +eusse +eusses +eût +eussions +eussiez +eussent + + | Later additions (from Jean-Christophe Deschamps) +ceci | this +cela | that (added 11 Apr 2012. Omission reported by Adrien Grand) +celà | that (incorrect, though common) +cet | this +cette | this +ici | here +ils | they +les | the (pl) +leurs | their (pl) +quel | which +quels | which +quelle | which +quelles | which +sans | without +soi | oneself +''') + +js_stemmer = """ +var JSX={};(function(l){function m(b,e){var a=function(){};a.prototype=e.prototype;var c=new a;for(var d in b){b[d].prototype=c}}function P(c,b){for(var a in b.prototype)if(b.prototype.hasOwnProperty(a))c.prototype[a]=b.prototype[a]}function g(a,b,d){function c(a,b,c){delete a[b];a[b]=c;return c}Object.defineProperty(a,b,{get:function(){return c(a,b,d())},set:function(d){c(a,b,d)},enumerable:true,configurable:true})}function O(a,b,c){return a[b]=a[b]/c|0}var u=parseInt;var v=parseFloat;function N(a){return a!==a}var x=isFinite;var y=encodeURIComponent;var z=decodeURIComponent;var A=encodeURI;var B=decodeURI;var C=Object.prototype.toString;var D=Object.prototype.hasOwnProperty;function k(){}l.require=function(b){var a=q[b];return a!==undefined?a:null};l.profilerIsRunning=function(){return k.getResults!=null};l.getProfileResults=function(){return(k.getResults||function(){return{}})()};l.postProfileResults=function(a,b){if(k.postResults==null)throw new Error('profiler has not been turned on');return k.postResults(a,b)};l.resetProfileResults=function(){if(k.resetResults==null)throw new Error('profiler has not been turned on');return k.resetResults()};l.DEBUG=false;function G(){};m([G],Error);function a(a,b,c){this.F=a.length;this.K=a;this.L=b;this.I=c;this.H=null;this.P=null};m([a],Object);function p(){};m([p],Object);function i(){var a;var b;var c;this.G={};a=this.E='';b=this._=0;c=this.A=a.length;this.B=0;this.D=b;this.C=c};m([i],p);function s(a,b){a.E=b.E;a._=b._;a.A=b.A;a.B=b.B;a.D=b.D;a.C=b.C};function e(b,d,c,e){var a;if(b._>=b.A){return false}a=b.E.charCodeAt(b._);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._++;return true};function r(b,d,c,e){var a;if(b._<=b.B){return false}a=b.E.charCodeAt(b._-1);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._--;return true};function o(a,d,c,e){var b;if(a._>=a.A){return false}b=a.E.charCodeAt(a._);if(b>e||b<c){a._++;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._++;return true}return false};function j(a,d,c,e){var b;if(a._<=a.B){return false}b=a.E.charCodeAt(a._-1);if(b>e||b<c){a._--;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._--;return true}return false};function h(a,b,d){var c;if(a.A-a._<b){return false}if(a.E.slice(c=a._,c+b)!==d){return false}a._+=b;return true};function d(a,b,d){var c;if(a._-a.B<b){return false}if(a.E.slice((c=a._)-b,c)!==d){return false}a._-=b;return true};function n(f,m,p){var b;var d;var e;var n;var g;var k;var l;var i;var h;var c;var a;var j;var o;b=0;d=p;e=f._;n=f.A;g=0;k=0;l=false;while(true){i=b+(d-b>>>1);h=0;c=g<k?g:k;a=m[i];for(j=c;j<a.F;j++){if(e+c===n){h=-1;break}h=f.E.charCodeAt(e+c)-a.K.charCodeAt(j);if(h!==0){break}c++}if(h<0){d=i;k=c}else{b=i;g=c}if(d-b<=1){if(b>0){break}if(d===b){break}if(l){break}l=true}}while(true){a=m[b];if(g>=a.F){f._=e+a.F|0;if(a.H==null){return a.I}o=a.H(a.P);f._=e+a.F|0;if(o){return a.I}}b=a.L;if(b<0){return 0}}return-1};function f(d,m,p){var b;var g;var e;var n;var f;var k;var l;var i;var h;var c;var a;var j;var o;b=0;g=p;e=d._;n=d.B;f=0;k=0;l=false;while(true){i=b+(g-b>>1);h=0;c=f<k?f:k;a=m[i];for(j=a.F-1-c;j>=0;j--){if(e-c===n){h=-1;break}h=d.E.charCodeAt(e-1-c)-a.K.charCodeAt(j);if(h!==0){break}c++}if(h<0){g=i;k=c}else{b=i;f=c}if(g-b<=1){if(b>0){break}if(g===b){break}if(l){break}l=true}}while(true){a=m[b];if(f>=a.F){d._=e-a.F|0;if(a.H==null){return a.I}o=a.H(d);d._=e-a.F|0;if(o){return a.I}}b=a.L;if(b<0){return 0}}return-1};function E(a,b,d,e){var c;c=e.length-(d-b);a.E=a.E.slice(0,b)+e+a.E.slice(d);a.A+=c|0;if(a._>=d){a._+=c|0}else if(a._>b){a._=b}return c|0};function c(a,f){var b;var c;var d;var e;b=false;if((c=a.D)<0||c>(d=a.C)||d>(e=a.A)||e>a.E.length?false:true){E(a,a.D,a.C,f);b=true}return b};i.prototype.J=function(){return false};i.prototype.c=function(b){var a;var c;var d;var e;a=this.G['.'+b];if(a==null){c=this.E=b;d=this._=0;e=this.A=c.length;this.B=0;this.D=d;this.C=e;this.J();a=this.E;this.G['.'+b]=a}return a};i.prototype.stemWord=i.prototype.c;i.prototype.d=function(e){var d;var b;var c;var a;var f;var g;var h;d=[];for(b=0;b<e.length;b++){c=e[b];a=this.G['.'+c];if(a==null){f=this.E=c;g=this._=0;h=this.A=f.length;this.B=0;this.D=g;this.C=h;this.J();a=this.E;this.G['.'+c]=a}d.push(a)}return d};i.prototype.stemWords=i.prototype.d;function b(){i.call(this);this.I_p2=0;this.I_p1=0;this.I_pV=0};m([b],i);b.prototype.M=function(a){this.I_p2=a.I_p2;this.I_p1=a.I_p1;this.I_pV=a.I_pV;s(this,a)};b.prototype.copy_from=b.prototype.M;b.prototype.W=function(){var p;var j;var f;var g;var i;var a;var d;var k;var l;var m;var n;var o;var q;a:while(true){p=this._;i=true;g:while(i===true){i=false;h:while(true){j=this._;a=true;b:while(a===true){a=false;d=true;c:while(d===true){d=false;f=this._;k=true;d:while(k===true){k=false;if(!e(this,b.g_v,97,251)){break d}this.D=this._;l=true;e:while(l===true){l=false;g=this._;m=true;f:while(m===true){m=false;if(!h(this,1,'u')){break f}this.C=this._;if(!e(this,b.g_v,97,251)){break f}if(!c(this,'U')){return false}break e}this._=g;n=true;f:while(n===true){n=false;if(!h(this,1,'i')){break f}this.C=this._;if(!e(this,b.g_v,97,251)){break f}if(!c(this,'I')){return false}break e}this._=g;if(!h(this,1,'y')){break d}this.C=this._;if(!c(this,'Y')){return false}}break c}this._=f;o=true;d:while(o===true){o=false;this.D=this._;if(!h(this,1,'y')){break d}this.C=this._;if(!e(this,b.g_v,97,251)){break d}if(!c(this,'Y')){return false}break c}this._=f;if(!h(this,1,'q')){break b}this.D=this._;if(!h(this,1,'u')){break b}this.C=this._;if(!c(this,'U')){return false}}this._=j;break h}q=this._=j;if(q>=this.A){break g}this._++}continue a}this._=p;break a}return true};b.prototype.r_prelude=b.prototype.W;function H(a){var q;var k;var f;var g;var i;var j;var d;var l;var m;var n;var o;var p;var r;a:while(true){q=a._;i=true;g:while(i===true){i=false;h:while(true){k=a._;j=true;b:while(j===true){j=false;d=true;c:while(d===true){d=false;f=a._;l=true;d:while(l===true){l=false;if(!e(a,b.g_v,97,251)){break d}a.D=a._;m=true;e:while(m===true){m=false;g=a._;n=true;f:while(n===true){n=false;if(!h(a,1,'u')){break f}a.C=a._;if(!e(a,b.g_v,97,251)){break f}if(!c(a,'U')){return false}break e}a._=g;o=true;f:while(o===true){o=false;if(!h(a,1,'i')){break f}a.C=a._;if(!e(a,b.g_v,97,251)){break f}if(!c(a,'I')){return false}break e}a._=g;if(!h(a,1,'y')){break d}a.C=a._;if(!c(a,'Y')){return false}}break c}a._=f;p=true;d:while(p===true){p=false;a.D=a._;if(!h(a,1,'y')){break d}a.C=a._;if(!e(a,b.g_v,97,251)){break d}if(!c(a,'Y')){return false}break c}a._=f;if(!h(a,1,'q')){break b}a.D=a._;if(!h(a,1,'u')){break b}a.C=a._;if(!c(a,'U')){return false}}a._=k;break h}r=a._=k;if(r>=a.A){break g}a._++}continue a}a._=q;break a}return true};b.prototype.U=function(){var t;var i;var r;var d;var f;var g;var h;var c;var a;var j;var k;var l;var m;var s;var p;var q;this.I_pV=p=this.A;this.I_p1=p;this.I_p2=p;t=this._;d=true;b:while(d===true){d=false;f=true;c:while(f===true){f=false;i=this._;g=true;a:while(g===true){g=false;if(!e(this,b.g_v,97,251)){break a}if(!e(this,b.g_v,97,251)){break a}if(this._>=this.A){break a}this._++;break c}this._=i;h=true;a:while(h===true){h=false;if(n(this,b.a_0,3)===0){break a}break c}s=this._=i;if(s>=this.A){break b}this._++;a:while(true){c=true;d:while(c===true){c=false;if(!e(this,b.g_v,97,251)){break d}break a}if(this._>=this.A){break b}this._++}}this.I_pV=this._}q=this._=t;r=q;a=true;a:while(a===true){a=false;c:while(true){j=true;b:while(j===true){j=false;if(!e(this,b.g_v,97,251)){break b}break c}if(this._>=this.A){break a}this._++}b:while(true){k=true;c:while(k===true){k=false;if(!o(this,b.g_v,97,251)){break c}break b}if(this._>=this.A){break a}this._++}this.I_p1=this._;b:while(true){l=true;c:while(l===true){l=false;if(!e(this,b.g_v,97,251)){break c}break b}if(this._>=this.A){break a}this._++}c:while(true){m=true;b:while(m===true){m=false;if(!o(this,b.g_v,97,251)){break b}break c}if(this._>=this.A){break a}this._++}this.I_p2=this._}this._=r;return true};b.prototype.r_mark_regions=b.prototype.U;function I(a){var s;var i;var r;var d;var f;var g;var h;var c;var j;var k;var l;var m;var p;var t;var q;var u;a.I_pV=q=a.A;a.I_p1=q;a.I_p2=q;s=a._;d=true;b:while(d===true){d=false;f=true;c:while(f===true){f=false;i=a._;g=true;a:while(g===true){g=false;if(!e(a,b.g_v,97,251)){break a}if(!e(a,b.g_v,97,251)){break a}if(a._>=a.A){break a}a._++;break c}a._=i;h=true;a:while(h===true){h=false;if(n(a,b.a_0,3)===0){break a}break c}t=a._=i;if(t>=a.A){break b}a._++;a:while(true){c=true;d:while(c===true){c=false;if(!e(a,b.g_v,97,251)){break d}break a}if(a._>=a.A){break b}a._++}}a.I_pV=a._}u=a._=s;r=u;j=true;a:while(j===true){j=false;c:while(true){k=true;b:while(k===true){k=false;if(!e(a,b.g_v,97,251)){break b}break c}if(a._>=a.A){break a}a._++}b:while(true){l=true;c:while(l===true){l=false;if(!o(a,b.g_v,97,251)){break c}break b}if(a._>=a.A){break a}a._++}a.I_p1=a._;b:while(true){m=true;c:while(m===true){m=false;if(!e(a,b.g_v,97,251)){break c}break b}if(a._>=a.A){break a}a._++}c:while(true){p=true;b:while(p===true){p=false;if(!o(a,b.g_v,97,251)){break b}break c}if(a._>=a.A){break a}a._++}a.I_p2=a._}a._=r;return true};b.prototype.V=function(){var a;var e;var d;b:while(true){e=this._;d=true;a:while(d===true){d=false;this.D=this._;a=n(this,b.a_1,4);if(a===0){break a}this.C=this._;switch(a){case 0:break a;case 1:if(!c(this,'i')){return false}break;case 2:if(!c(this,'u')){return false}break;case 3:if(!c(this,'y')){return false}break;case 4:if(this._>=this.A){break a}this._++;break}continue b}this._=e;break b}return true};b.prototype.r_postlude=b.prototype.V;function J(a){var d;var f;var e;b:while(true){f=a._;e=true;a:while(e===true){e=false;a.D=a._;d=n(a,b.a_1,4);if(d===0){break a}a.C=a._;switch(d){case 0:break a;case 1:if(!c(a,'i')){return false}break;case 2:if(!c(a,'u')){return false}break;case 3:if(!c(a,'y')){return false}break;case 4:if(a._>=a.A){break a}a._++;break}continue b}a._=f;break b}return true};b.prototype.S=function(){return!(this.I_pV<=this._)?false:true};b.prototype.r_RV=b.prototype.S;b.prototype.Q=function(){return!(this.I_p1<=this._)?false:true};b.prototype.r_R1=b.prototype.Q;b.prototype.R=function(){return!(this.I_p2<=this._)?false:true};b.prototype.r_R2=b.prototype.R;b.prototype.Y=function(){var a;var E;var H;var e;var D;var g;var F;var G;var h;var I;var A;var B;var p;var k;var l;var m;var n;var o;var i;var q;var s;var t;var u;var v;var w;var x;var y;var z;var J;var K;var L;var C;this.C=this._;a=f(this,b.a_4,43);if(a===0){return false}this.D=this._;switch(a){case 0:return false;case 1:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'')){return false}break;case 2:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'')){return false}E=this.A-this._;p=true;c:while(p===true){p=false;this.C=this._;if(!d(this,2,'ic')){this._=this.A-E;break c}this.D=this._;k=true;b:while(k===true){k=false;H=this.A-this._;l=true;a:while(l===true){l=false;if(!(!(this.I_p2<=this._)?false:true)){break a}if(!c(this,'')){return false}break b}this._=this.A-H;if(!c(this,'iqU')){return false}}}break;case 3:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'log')){return false}break;case 4:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'u')){return false}break;case 5:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'ent')){return false}break;case 6:if(!(!(this.I_pV<=this._)?false:true)){return false}if(!c(this,'')){return false}e=this.A-this._;m=true;a:while(m===true){m=false;this.C=this._;a=f(this,b.a_2,6);if(a===0){this._=this.A-e;break a}this.D=this._;switch(a){case 0:this._=this.A-e;break a;case 1:if(!(!(this.I_p2<=this._)?false:true)){this._=this.A-e;break a}if(!c(this,'')){return false}this.C=this._;if(!d(this,2,'at')){this._=this.A-e;break a}this.D=J=this._;if(!(!(this.I_p2<=J)?false:true)){this._=this.A-e;break a}if(!c(this,'')){return false}break;case 2:n=true;b:while(n===true){n=false;D=this.A-this._;o=true;c:while(o===true){o=false;if(!(!(this.I_p2<=this._)?false:true)){break c}if(!c(this,'')){return false}break b}K=this._=this.A-D;if(!(!(this.I_p1<=K)?false:true)){this._=this.A-e;break a}if(!c(this,'eux')){return false}}break;case 3:if(!(!(this.I_p2<=this._)?false:true)){this._=this.A-e;break a}if(!c(this,'')){return false}break;case 4:if(!(!(this.I_pV<=this._)?false:true)){this._=this.A-e;break a}if(!c(this,'i')){return false}break}}break;case 7:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'')){return false}g=this.A-this._;i=true;a:while(i===true){i=false;this.C=this._;a=f(this,b.a_3,3);if(a===0){this._=this.A-g;break a}this.D=this._;switch(a){case 0:this._=this.A-g;break a;case 1:q=true;c:while(q===true){q=false;F=this.A-this._;s=true;b:while(s===true){s=false;if(!(!(this.I_p2<=this._)?false:true)){break b}if(!c(this,'')){return false}break c}this._=this.A-F;if(!c(this,'abl')){return false}}break;case 2:t=true;b:while(t===true){t=false;G=this.A-this._;u=true;c:while(u===true){u=false;if(!(!(this.I_p2<=this._)?false:true)){break c}if(!c(this,'')){return false}break b}this._=this.A-G;if(!c(this,'iqU')){return false}}break;case 3:if(!(!(this.I_p2<=this._)?false:true)){this._=this.A-g;break a}if(!c(this,'')){return false}break}}break;case 8:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'')){return false}h=this.A-this._;v=true;a:while(v===true){v=false;this.C=this._;if(!d(this,2,'at')){this._=this.A-h;break a}this.D=L=this._;if(!(!(this.I_p2<=L)?false:true)){this._=this.A-h;break a}if(!c(this,'')){return false}this.C=this._;if(!d(this,2,'ic')){this._=this.A-h;break a}this.D=this._;w=true;b:while(w===true){w=false;I=this.A-this._;x=true;c:while(x===true){x=false;if(!(!(this.I_p2<=this._)?false:true)){break c}if(!c(this,'')){return false}break b}this._=this.A-I;if(!c(this,'iqU')){return false}}}break;case 9:if(!c(this,'eau')){return false}break;case 10:if(!(!(this.I_p1<=this._)?false:true)){return false}if(!c(this,'al')){return false}break;case 11:y=true;a:while(y===true){y=false;A=this.A-this._;z=true;b:while(z===true){z=false;if(!(!(this.I_p2<=this._)?false:true)){break b}if(!c(this,'')){return false}break a}C=this._=this.A-A;if(!(!(this.I_p1<=C)?false:true)){return false}if(!c(this,'eux')){return false}}break;case 12:if(!(!(this.I_p1<=this._)?false:true)){return false}if(!j(this,b.g_v,97,251)){return false}if(!c(this,'')){return false}break;case 13:if(!(!(this.I_pV<=this._)?false:true)){return false}if(!c(this,'ant')){return false}return false;case 14:if(!(!(this.I_pV<=this._)?false:true)){return false}if(!c(this,'ent')){return false}return false;case 15:B=this.A-this._;if(!r(this,b.g_v,97,251)){return false}if(!(!(this.I_pV<=this._)?false:true)){return false}this._=this.A-B;if(!c(this,'')){return false}return false}return true};b.prototype.r_standard_suffix=b.prototype.Y;function K(a){var g;var F;var I;var e;var E;var h;var G;var H;var i;var J;var B;var C;var p;var l;var m;var n;var o;var k;var q;var s;var t;var u;var v;var w;var x;var y;var z;var A;var K;var L;var M;var D;a.C=a._;g=f(a,b.a_4,43);if(g===0){return false}a.D=a._;switch(g){case 0:return false;case 1:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'')){return false}break;case 2:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'')){return false}F=a.A-a._;p=true;c:while(p===true){p=false;a.C=a._;if(!d(a,2,'ic')){a._=a.A-F;break c}a.D=a._;l=true;b:while(l===true){l=false;I=a.A-a._;m=true;a:while(m===true){m=false;if(!(!(a.I_p2<=a._)?false:true)){break a}if(!c(a,'')){return false}break b}a._=a.A-I;if(!c(a,'iqU')){return false}}}break;case 3:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'log')){return false}break;case 4:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'u')){return false}break;case 5:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'ent')){return false}break;case 6:if(!(!(a.I_pV<=a._)?false:true)){return false}if(!c(a,'')){return false}e=a.A-a._;n=true;a:while(n===true){n=false;a.C=a._;g=f(a,b.a_2,6);if(g===0){a._=a.A-e;break a}a.D=a._;switch(g){case 0:a._=a.A-e;break a;case 1:if(!(!(a.I_p2<=a._)?false:true)){a._=a.A-e;break a}if(!c(a,'')){return false}a.C=a._;if(!d(a,2,'at')){a._=a.A-e;break a}a.D=K=a._;if(!(!(a.I_p2<=K)?false:true)){a._=a.A-e;break a}if(!c(a,'')){return false}break;case 2:o=true;b:while(o===true){o=false;E=a.A-a._;k=true;c:while(k===true){k=false;if(!(!(a.I_p2<=a._)?false:true)){break c}if(!c(a,'')){return false}break b}L=a._=a.A-E;if(!(!(a.I_p1<=L)?false:true)){a._=a.A-e;break a}if(!c(a,'eux')){return false}}break;case 3:if(!(!(a.I_p2<=a._)?false:true)){a._=a.A-e;break a}if(!c(a,'')){return false}break;case 4:if(!(!(a.I_pV<=a._)?false:true)){a._=a.A-e;break a}if(!c(a,'i')){return false}break}}break;case 7:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'')){return false}h=a.A-a._;q=true;a:while(q===true){q=false;a.C=a._;g=f(a,b.a_3,3);if(g===0){a._=a.A-h;break a}a.D=a._;switch(g){case 0:a._=a.A-h;break a;case 1:s=true;c:while(s===true){s=false;G=a.A-a._;t=true;b:while(t===true){t=false;if(!(!(a.I_p2<=a._)?false:true)){break b}if(!c(a,'')){return false}break c}a._=a.A-G;if(!c(a,'abl')){return false}}break;case 2:u=true;b:while(u===true){u=false;H=a.A-a._;v=true;c:while(v===true){v=false;if(!(!(a.I_p2<=a._)?false:true)){break c}if(!c(a,'')){return false}break b}a._=a.A-H;if(!c(a,'iqU')){return false}}break;case 3:if(!(!(a.I_p2<=a._)?false:true)){a._=a.A-h;break a}if(!c(a,'')){return false}break}}break;case 8:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'')){return false}i=a.A-a._;w=true;a:while(w===true){w=false;a.C=a._;if(!d(a,2,'at')){a._=a.A-i;break a}a.D=M=a._;if(!(!(a.I_p2<=M)?false:true)){a._=a.A-i;break a}if(!c(a,'')){return false}a.C=a._;if(!d(a,2,'ic')){a._=a.A-i;break a}a.D=a._;x=true;b:while(x===true){x=false;J=a.A-a._;y=true;c:while(y===true){y=false;if(!(!(a.I_p2<=a._)?false:true)){break c}if(!c(a,'')){return false}break b}a._=a.A-J;if(!c(a,'iqU')){return false}}}break;case 9:if(!c(a,'eau')){return false}break;case 10:if(!(!(a.I_p1<=a._)?false:true)){return false}if(!c(a,'al')){return false}break;case 11:z=true;a:while(z===true){z=false;B=a.A-a._;A=true;b:while(A===true){A=false;if(!(!(a.I_p2<=a._)?false:true)){break b}if(!c(a,'')){return false}break a}D=a._=a.A-B;if(!(!(a.I_p1<=D)?false:true)){return false}if(!c(a,'eux')){return false}}break;case 12:if(!(!(a.I_p1<=a._)?false:true)){return false}if(!j(a,b.g_v,97,251)){return false}if(!c(a,'')){return false}break;case 13:if(!(!(a.I_pV<=a._)?false:true)){return false}if(!c(a,'ant')){return false}return false;case 14:if(!(!(a.I_pV<=a._)?false:true)){return false}if(!c(a,'ent')){return false}return false;case 15:C=a.A-a._;if(!r(a,b.g_v,97,251)){return false}if(!(!(a.I_pV<=a._)?false:true)){return false}a._=a.A-C;if(!c(a,'')){return false}return false}return true};b.prototype.T=function(){var d;var e;var a;var g;var h;var i;e=this.A-(g=this._);if(g<this.I_pV){return false}h=this._=this.I_pV;a=this.B;this.B=h;i=this._=this.A-e;this.C=i;d=f(this,b.a_5,35);if(d===0){this.B=a;return false}this.D=this._;switch(d){case 0:this.B=a;return false;case 1:if(!j(this,b.g_v,97,251)){this.B=a;return false}if(!c(this,'')){return false}break}this.B=a;return true};b.prototype.r_i_verb_suffix=b.prototype.T;function L(a){var e;var g;var d;var h;var i;var k;g=a.A-(h=a._);if(h<a.I_pV){return false}i=a._=a.I_pV;d=a.B;a.B=i;k=a._=a.A-g;a.C=k;e=f(a,b.a_5,35);if(e===0){a.B=d;return false}a.D=a._;switch(e){case 0:a.B=d;return false;case 1:if(!j(a,b.g_v,97,251)){a.B=d;return false}if(!c(a,'')){return false}break}a.B=d;return true};b.prototype.b=function(){var e;var h;var a;var i;var g;var j;var k;var l;h=this.A-(j=this._);if(j<this.I_pV){return false}k=this._=this.I_pV;a=this.B;this.B=k;l=this._=this.A-h;this.C=l;e=f(this,b.a_6,38);if(e===0){this.B=a;return false}this.D=this._;switch(e){case 0:this.B=a;return false;case 1:if(!(!(this.I_p2<=this._)?false:true)){this.B=a;return false}if(!c(this,'')){return false}break;case 2:if(!c(this,'')){return false}break;case 3:if(!c(this,'')){return false}i=this.A-this._;g=true;a:while(g===true){g=false;this.C=this._;if(!d(this,1,'e')){this._=this.A-i;break a}this.D=this._;if(!c(this,'')){return false}}break}this.B=a;return true};b.prototype.r_verb_suffix=b.prototype.b;function M(a){var g;var i;var e;var j;var h;var k;var l;var m;i=a.A-(k=a._);if(k<a.I_pV){return false}l=a._=a.I_pV;e=a.B;a.B=l;m=a._=a.A-i;a.C=m;g=f(a,b.a_6,38);if(g===0){a.B=e;return false}a.D=a._;switch(g){case 0:a.B=e;return false;case 1:if(!(!(a.I_p2<=a._)?false:true)){a.B=e;return false}if(!c(a,'')){return false}break;case 2:if(!c(a,'')){return false}break;case 3:if(!c(a,'')){return false}j=a.A-a._;h=true;a:while(h===true){h=false;a.C=a._;if(!d(a,1,'e')){a._=a.A-j;break a}a.D=a._;if(!c(a,'')){return false}}break}a.B=e;return true};b.prototype.X=function(){var h;var g;var m;var n;var a;var l;var e;var i;var k;var p;var q;var r;var o;g=this.A-this._;e=true;a:while(e===true){e=false;this.C=this._;if(!d(this,1,'s')){this._=this.A-g;break a}this.D=p=this._;m=this.A-p;if(!j(this,b.g_keep_with_s,97,232)){this._=this.A-g;break a}this._=this.A-m;if(!c(this,'')){return false}}n=this.A-(q=this._);if(q<this.I_pV){return false}r=this._=this.I_pV;a=this.B;this.B=r;o=this._=this.A-n;this.C=o;h=f(this,b.a_7,7);if(h===0){this.B=a;return false}this.D=this._;switch(h){case 0:this.B=a;return false;case 1:if(!(!(this.I_p2<=this._)?false:true)){this.B=a;return false}i=true;a:while(i===true){i=false;l=this.A-this._;k=true;b:while(k===true){k=false;if(!d(this,1,'s')){break b}break a}this._=this.A-l;if(!d(this,1,'t')){this.B=a;return false}}if(!c(this,'')){return false}break;case 2:if(!c(this,'i')){return false}break;case 3:if(!c(this,'')){return false}break;case 4:if(!d(this,2,'gu')){this.B=a;return false}if(!c(this,'')){return false}break}this.B=a;return true};b.prototype.r_residual_suffix=b.prototype.X;function w(a){var g;var h;var p;var n;var e;var m;var i;var k;var l;var q;var r;var s;var o;h=a.A-a._;i=true;a:while(i===true){i=false;a.C=a._;if(!d(a,1,'s')){a._=a.A-h;break a}a.D=q=a._;p=a.A-q;if(!j(a,b.g_keep_with_s,97,232)){a._=a.A-h;break a}a._=a.A-p;if(!c(a,'')){return false}}n=a.A-(r=a._);if(r<a.I_pV){return false}s=a._=a.I_pV;e=a.B;a.B=s;o=a._=a.A-n;a.C=o;g=f(a,b.a_7,7);if(g===0){a.B=e;return false}a.D=a._;switch(g){case 0:a.B=e;return false;case 1:if(!(!(a.I_p2<=a._)?false:true)){a.B=e;return false}k=true;a:while(k===true){k=false;m=a.A-a._;l=true;b:while(l===true){l=false;if(!d(a,1,'s')){break b}break a}a._=a.A-m;if(!d(a,1,'t')){a.B=e;return false}}if(!c(a,'')){return false}break;case 2:if(!c(a,'i')){return false}break;case 3:if(!c(a,'')){return false}break;case 4:if(!d(a,2,'gu')){a.B=e;return false}if(!c(a,'')){return false}break}a.B=e;return true};b.prototype.a=function(){var d;var a;d=this.A-this._;if(f(this,b.a_8,5)===0){return false}a=this._=this.A-d;this.C=a;if(a<=this.B){return false}this._--;this.D=this._;return!c(this,'')?false:true};b.prototype.r_un_double=b.prototype.a;function t(a){var e;var d;e=a.A-a._;if(f(a,b.a_8,5)===0){return false}d=a._=a.A-e;a.C=d;if(d<=a.B){return false}a._--;a.D=a._;return!c(a,'')?false:true};b.prototype.Z=function(){var h;var a;var e;var f;var g;a=1;a:while(true){e=true;b:while(e===true){e=false;if(!j(this,b.g_v,97,251)){break b}a--;continue a}break a}if(a>0){return false}this.C=this._;f=true;a:while(f===true){f=false;h=this.A-this._;g=true;b:while(g===true){g=false;if(!d(this,1,'é')){break b}break a}this._=this.A-h;if(!d(this,1,'è')){return false}}this.D=this._;return!c(this,'e')?false:true};b.prototype.r_un_accent=b.prototype.Z;function F(a){var i;var e;var f;var g;var h;e=1;a:while(true){f=true;b:while(f===true){f=false;if(!j(a,b.g_v,97,251)){break b}e--;continue a}break a}if(e>0){return false}a.C=a._;g=true;a:while(g===true){g=false;i=a.A-a._;h=true;b:while(h===true){h=false;if(!d(a,1,'é')){break b}break a}a._=a.A-i;if(!d(a,1,'è')){return false}}a.D=a._;return!c(a,'e')?false:true};b.prototype.J=function(){var u;var z;var A;var B;var C;var j;var s;var v;var x;var y;var e;var f;var g;var h;var i;var a;var b;var k;var l;var m;var n;var o;var p;var q;var D;var E;var G;var N;var O;var P;var Q;var R;var r;u=this._;e=true;a:while(e===true){e=false;if(!H(this)){break a}}D=this._=u;z=D;f=true;a:while(f===true){f=false;if(!I(this)){break a}}N=this._=z;this.B=N;P=this._=O=this.A;A=O-P;g=true;c:while(g===true){g=false;h=true;d:while(h===true){h=false;B=this.A-this._;i=true;e:while(i===true){i=false;C=this.A-this._;a=true;a:while(a===true){a=false;j=this.A-this._;b=true;b:while(b===true){b=false;if(!K(this)){break b}break a}this._=this.A-j;k=true;b:while(k===true){k=false;if(!L(this)){break b}break a}this._=this.A-j;if(!M(this)){break e}}G=this._=(E=this.A)-C;s=E-G;l=true;a:while(l===true){l=false;this.C=this._;m=true;b:while(m===true){m=false;v=this.A-this._;n=true;f:while(n===true){n=false;if(!d(this,1,'Y')){break f}this.D=this._;if(!c(this,'i')){return false}break b}this._=this.A-v;if(!d(this,1,'ç')){this._=this.A-s;break a}this.D=this._;if(!c(this,'c')){return false}}}break d}this._=this.A-B;if(!w(this)){break c}}}R=this._=(Q=this.A)-A;x=Q-R;o=true;a:while(o===true){o=false;if(!t(this)){break a}}this._=this.A-x;p=true;a:while(p===true){p=false;if(!F(this)){break a}}r=this._=this.B;y=r;q=true;a:while(q===true){q=false;if(!J(this)){break a}}this._=y;return true};b.prototype.stem=b.prototype.J;b.prototype.N=function(a){return a instanceof b};b.prototype.equals=b.prototype.N;b.prototype.O=function(){var c;var a;var b;var d;c='FrenchStemmer';a=0;for(b=0;b<c.length;b++){d=c.charCodeAt(b);a=(a<<5)-a+d;a=a&a}return a|0};b.prototype.hashCode=b.prototype.O;b.serialVersionUID=1;g(b,'methodObject',function(){return new b});g(b,'a_0',function(){return[new a('col',-1,-1),new a('par',-1,-1),new a('tap',-1,-1)]});g(b,'a_1',function(){return[new a('',-1,4),new a('I',0,1),new a('U',0,2),new a('Y',0,3)]});g(b,'a_2',function(){return[new a('iqU',-1,3),new a('abl',-1,3),new a('Ièr',-1,4),new a('ièr',-1,4),new a('eus',-1,2),new a('iv',-1,1)]});g(b,'a_3',function(){return[new a('ic',-1,2),new a('abil',-1,1),new a('iv',-1,3)]});g(b,'a_4',function(){return[new a('iqUe',-1,1),new a('atrice',-1,2),new a('ance',-1,1),new a('ence',-1,5),new a('logie',-1,3),new a('able',-1,1),new a('isme',-1,1),new a('euse',-1,11),new a('iste',-1,1),new a('ive',-1,8),new a('if',-1,8),new a('usion',-1,4),new a('ation',-1,2),new a('ution',-1,4),new a('ateur',-1,2),new a('iqUes',-1,1),new a('atrices',-1,2),new a('ances',-1,1),new a('ences',-1,5),new a('logies',-1,3),new a('ables',-1,1),new a('ismes',-1,1),new a('euses',-1,11),new a('istes',-1,1),new a('ives',-1,8),new a('ifs',-1,8),new a('usions',-1,4),new a('ations',-1,2),new a('utions',-1,4),new a('ateurs',-1,2),new a('ments',-1,15),new a('ements',30,6),new a('issements',31,12),new a('ités',-1,7),new a('ment',-1,15),new a('ement',34,6),new a('issement',35,12),new a('amment',34,13),new a('emment',34,14),new a('aux',-1,10),new a('eaux',39,9),new a('eux',-1,1),new a('ité',-1,7)]});g(b,'a_5',function(){return[new a('ira',-1,1),new a('ie',-1,1),new a('isse',-1,1),new a('issante',-1,1),new a('i',-1,1),new a('irai',4,1),new a('ir',-1,1),new a('iras',-1,1),new a('ies',-1,1),new a('îmes',-1,1),new a('isses',-1,1),new a('issantes',-1,1),new a('îtes',-1,1),new a('is',-1,1),new a('irais',13,1),new a('issais',13,1),new a('irions',-1,1),new a('issions',-1,1),new a('irons',-1,1),new a('issons',-1,1),new a('issants',-1,1),new a('it',-1,1),new a('irait',21,1),new a('issait',21,1),new a('issant',-1,1),new a('iraIent',-1,1),new a('issaIent',-1,1),new a('irent',-1,1),new a('issent',-1,1),new a('iront',-1,1),new a('ît',-1,1),new a('iriez',-1,1),new a('issiez',-1,1),new a('irez',-1,1),new a('issez',-1,1)]});g(b,'a_6',function(){return[new a('a',-1,3),new a('era',0,2),new a('asse',-1,3),new a('ante',-1,3),new a('ée',-1,2),new a('ai',-1,3),new a('erai',5,2),new a('er',-1,2),new a('as',-1,3),new a('eras',8,2),new a('âmes',-1,3),new a('asses',-1,3),new a('antes',-1,3),new a('âtes',-1,3),new a('ées',-1,2),new a('ais',-1,3),new a('erais',15,2),new a('ions',-1,1),new a('erions',17,2),new a('assions',17,3),new a('erons',-1,2),new a('ants',-1,3),new a('és',-1,2),new a('ait',-1,3),new a('erait',23,2),new a('ant',-1,3),new a('aIent',-1,3),new a('eraIent',26,2),new a('èrent',-1,2),new a('assent',-1,3),new a('eront',-1,2),new a('ât',-1,3),new a('ez',-1,2),new a('iez',32,2),new a('eriez',33,2),new a('assiez',33,3),new a('erez',32,2),new a('é',-1,2)]});g(b,'a_7',function(){return[new a('e',-1,3),new a('Ière',0,2),new a('ière',0,2),new a('ion',-1,1),new a('Ier',-1,2),new a('ier',-1,2),new a('ë',-1,4)]});g(b,'a_8',function(){return[new a('ell',-1,-1),new a('eill',-1,-1),new a('enn',-1,-1),new a('onn',-1,-1),new a('ett',-1,-1)]});g(b,'g_v',function(){return[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,128,130,103,8,5]});g(b,'g_keep_with_s',function(){return[1,65,20,0,0,0,0,0,0,0,0,0,0,0,0,0,128]});var q={'src/stemmer.jsx':{Stemmer:p},'src/french-stemmer.jsx':{FrenchStemmer:b}}}(JSX)) +var Stemmer = JSX.require("src/french-stemmer.jsx").FrenchStemmer; +""" + + +class SearchFrench(SearchLanguage): + lang = 'fr' + language_name = 'French' + js_stemmer_rawcode = 'french-stemmer.js' + js_stemmer_code = js_stemmer + stopwords = french_stopwords + + def init(self, options: Dict) -> None: + self.stemmer = snowballstemmer.stemmer('french') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/sphinx/search/hu.py b/sphinx/sphinx/search/hu.py new file mode 100644 index 0000000..0857733 --- /dev/null +++ b/sphinx/sphinx/search/hu.py @@ -0,0 +1,240 @@ +""" + sphinx.search.hu + ~~~~~~~~~~~~~~~~ + + Hungarian search language: includes the JS Hungarian stemmer. + + :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + + +hungarian_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/hungarian/stop.txt +| prepared by Anna Tordai +a +ahogy +ahol +aki +akik +akkor +alatt +által +általában +amely +amelyek +amelyekben +amelyeket +amelyet +amelynek +ami +amit +amolyan +amíg +amikor +át +abban +ahhoz +annak +arra +arról +az +azok +azon +azt +azzal +azért +aztán +azután +azonban +bár +be +belül +benne +cikk +cikkek +cikkeket +csak +de +e +eddig +egész +egy +egyes +egyetlen +egyéb +egyik +egyre +ekkor +el +elég +ellen +elő +először +előtt +első +én +éppen +ebben +ehhez +emilyen +ennek +erre +ez +ezt +ezek +ezen +ezzel +ezért +és +fel +felé +hanem +hiszen +hogy +hogyan +igen +így +illetve +ill. +ill +ilyen +ilyenkor +ison +ismét +itt +jó +jól +jobban +kell +kellett +keresztül +keressünk +ki +kívül +között +közül +legalább +lehet +lehetett +legyen +lenne +lenni +lesz +lett +maga +magát +majd +majd +már +más +másik +meg +még +mellett +mert +mely +melyek +mi +mit +míg +miért +milyen +mikor +minden +mindent +mindenki +mindig +mint +mintha +mivel +most +nagy +nagyobb +nagyon +ne +néha +nekem +neki +nem +néhány +nélkül +nincs +olyan +ott +össze +ő +ők +őket +pedig +persze +rá +s +saját +sem +semmi +sok +sokat +sokkal +számára +szemben +szerint +szinte +talán +tehát +teljes +tovább +továbbá +több +úgy +ugyanis +új +újabb +újra +után +utána +utolsó +vagy +vagyis +valaki +valami +valamint +való +vagyok +van +vannak +volt +voltam +voltak +voltunk +vissza +vele +viszont +volna +''') + +js_stemmer = """ + +var JSX={};(function(h){function j(b,e){var a=function(){};a.prototype=e.prototype;var c=new a;for(var d in b){b[d].prototype=c}}function P(c,b){for(var a in b.prototype)if(b.prototype.hasOwnProperty(a))c.prototype[a]=b.prototype[a]}function e(a,b,d){function c(a,b,c){delete a[b];a[b]=c;return c}Object.defineProperty(a,b,{get:function(){return c(a,b,d())},set:function(d){c(a,b,d)},enumerable:true,configurable:true})}function O(a,b,c){return a[b]=a[b]/c|0}var u=parseInt;var v=parseFloat;function N(a){return a!==a}var x=isFinite;var y=encodeURIComponent;var z=decodeURIComponent;var B=encodeURI;var C=decodeURI;var E=Object.prototype.toString;var F=Object.prototype.hasOwnProperty;function i(){}h.require=function(b){var a=q[b];return a!==undefined?a:null};h.profilerIsRunning=function(){return i.getResults!=null};h.getProfileResults=function(){return(i.getResults||function(){return{}})()};h.postProfileResults=function(a,b){if(i.postResults==null)throw new Error('profiler has not been turned on');return i.postResults(a,b)};h.resetProfileResults=function(){if(i.resetResults==null)throw new Error('profiler has not been turned on');return i.resetResults()};h.DEBUG=false;function r(){};j([r],Error);function a(a,b,c){this.F=a.length;this.K=a;this.L=b;this.I=c;this.H=null;this.P=null};j([a],Object);function n(){};j([n],Object);function f(){var a;var b;var c;this.G={};a=this.D='';b=this._=0;c=this.A=a.length;this.E=0;this.B=b;this.C=c};j([f],n);function s(a,b){a.D=b.D;a._=b._;a.A=b.A;a.E=b.E;a.B=b.B;a.C=b.C};function k(b,d,c,e){var a;if(b._>=b.A){return false}a=b.D.charCodeAt(b._);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._++;return true};function l(a,d,c,e){var b;if(a._>=a.A){return false}b=a.D.charCodeAt(a._);if(b>e||b<c){a._++;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._++;return true}return false};function o(f,m,p){var b;var d;var e;var n;var g;var k;var l;var i;var h;var c;var a;var j;var o;b=0;d=p;e=f._;n=f.A;g=0;k=0;l=false;while(true){i=b+(d-b>>>1);h=0;c=g<k?g:k;a=m[i];for(j=c;j<a.F;j++){if(e+c===n){h=-1;break}h=f.D.charCodeAt(e+c)-a.K.charCodeAt(j);if(h!==0){break}c++}if(h<0){d=i;k=c}else{b=i;g=c}if(d-b<=1){if(b>0){break}if(d===b){break}if(l){break}l=true}}while(true){a=m[b];if(g>=a.F){f._=e+a.F|0;if(a.H==null){return a.I}o=a.H(a.P);f._=e+a.F|0;if(o){return a.I}}b=a.L;if(b<0){return 0}}return-1};function d(d,m,p){var b;var g;var e;var n;var f;var k;var l;var i;var h;var c;var a;var j;var o;b=0;g=p;e=d._;n=d.E;f=0;k=0;l=false;while(true){i=b+(g-b>>1);h=0;c=f<k?f:k;a=m[i];for(j=a.F-1-c;j>=0;j--){if(e-c===n){h=-1;break}h=d.D.charCodeAt(e-1-c)-a.K.charCodeAt(j);if(h!==0){break}c++}if(h<0){g=i;k=c}else{b=i;f=c}if(g-b<=1){if(b>0){break}if(g===b){break}if(l){break}l=true}}while(true){a=m[b];if(f>=a.F){d._=e-a.F|0;if(a.H==null){return a.I}o=a.H(d);d._=e-a.F|0;if(o){return a.I}}b=a.L;if(b<0){return 0}}return-1};function A(a,b,d,e){var c;c=e.length-(d-b);a.D=a.D.slice(0,b)+e+a.D.slice(d);a.A+=c|0;if(a._>=d){a._+=c|0}else if(a._>b){a._=b}return c|0};function b(a,f){var b;var c;var d;var e;b=false;if((c=a.B)<0||c>(d=a.C)||d>(e=a.A)||e>a.D.length?false:true){A(a,a.B,a.C,f);b=true}return b};f.prototype.J=function(){return false};f.prototype.e=function(b){var a;var c;var d;var e;a=this.G['.'+b];if(a==null){c=this.D=b;d=this._=0;e=this.A=c.length;this.E=0;this.B=d;this.C=e;this.J();a=this.D;this.G['.'+b]=a}return a};f.prototype.stemWord=f.prototype.e;f.prototype.f=function(e){var d;var b;var c;var a;var f;var g;var h;d=[];for(b=0;b<e.length;b++){c=e[b];a=this.G['.'+c];if(a==null){f=this.D=c;g=this._=0;h=this.A=f.length;this.E=0;this.B=g;this.C=h;this.J();a=this.D;this.G['.'+c]=a}d.push(a)}return d};f.prototype.stemWords=f.prototype.f;function c(){f.call(this);this.I_p1=0};j([c],f);c.prototype.M=function(a){this.I_p1=a.I_p1;s(this,a)};c.prototype.copy_from=c.prototype.M;c.prototype.X=function(){var m;var b;var j;var d;var e;var a;var f;var g;var h;var n;var i;this.I_p1=this.A;d=true;b:while(d===true){d=false;m=this._;e=true;a:while(e===true){e=false;if(!k(this,c.g_v,97,252)){break a}c:while(true){b=this._;a=true;d:while(a===true){a=false;if(!l(this,c.g_v,97,252)){break d}this._=b;break c}n=this._=b;if(n>=this.A){break a}this._++}f=true;c:while(f===true){f=false;j=this._;g=true;d:while(g===true){g=false;if(o(this,c.a_0,8)===0){break d}break c}i=this._=j;if(i>=this.A){break a}this._++}this.I_p1=this._;break b}this._=m;if(!l(this,c.g_v,97,252)){return false}a:while(true){h=true;c:while(h===true){h=false;if(!k(this,c.g_v,97,252)){break c}break a}if(this._>=this.A){return false}this._++}this.I_p1=this._}return true};c.prototype.r_mark_regions=c.prototype.X;function D(a){var j;var d;var n;var e;var b;var f;var g;var h;var i;var p;var m;a.I_p1=a.A;e=true;b:while(e===true){e=false;j=a._;b=true;a:while(b===true){b=false;if(!k(a,c.g_v,97,252)){break a}c:while(true){d=a._;f=true;d:while(f===true){f=false;if(!l(a,c.g_v,97,252)){break d}a._=d;break c}p=a._=d;if(p>=a.A){break a}a._++}g=true;c:while(g===true){g=false;n=a._;h=true;d:while(h===true){h=false;if(o(a,c.a_0,8)===0){break d}break c}m=a._=n;if(m>=a.A){break a}a._++}a.I_p1=a._;break b}a._=j;if(!l(a,c.g_v,97,252)){return false}a:while(true){i=true;c:while(i===true){i=false;if(!k(a,c.g_v,97,252)){break c}break a}if(a._>=a.A){return false}a._++}a.I_p1=a._}return true};c.prototype.Q=function(){return!(this.I_p1<=this._)?false:true};c.prototype.r_R1=c.prototype.Q;c.prototype.d=function(){var a;var e;this.C=this._;a=d(this,c.a_1,2);if(a===0){return false}this.B=e=this._;if(!(!(this.I_p1<=e)?false:true)){return false}switch(a){case 0:return false;case 1:if(!b(this,'a')){return false}break;case 2:if(!b(this,'e')){return false}break}return true};c.prototype.r_v_ending=c.prototype.d;function p(a){var e;var f;a.C=a._;e=d(a,c.a_1,2);if(e===0){return false}a.B=f=a._;if(!(!(a.I_p1<=f)?false:true)){return false}switch(e){case 0:return false;case 1:if(!b(a,'a')){return false}break;case 2:if(!b(a,'e')){return false}break}return true};c.prototype.U=function(){var a;a=this.A-this._;if(d(this,c.a_2,23)===0){return false}this._=this.A-a;return true};c.prototype.r_double=c.prototype.U;function g(a){var b;b=a.A-a._;if(d(a,c.a_2,23)===0){return false}a._=a.A-b;return true};c.prototype.c=function(){var a;var c;var d;if(this._<=this.E){return false}this._--;this.C=c=this._;a=c-1|0;if(this.E>a||a>this.A){return false}d=this._=a;this.B=d;return!b(this,'')?false:true};c.prototype.r_undouble=c.prototype.c;function m(a){var c;var d;var e;if(a._<=a.E){return false}a._--;a.C=d=a._;c=d-1|0;if(a.E>c||c>a.A){return false}e=a._=c;a.B=e;return!b(a,'')?false:true};c.prototype.W=function(){var a;var e;this.C=this._;a=d(this,c.a_3,2);if(a===0){return false}this.B=e=this._;if(!(!(this.I_p1<=e)?false:true)){return false}switch(a){case 0:return false;case 1:if(!g(this)){return false}break;case 2:if(!g(this)){return false}break}return!b(this,'')?false:!m(this)?false:true};c.prototype.r_instrum=c.prototype.W;function H(a){var e;var f;a.C=a._;e=d(a,c.a_3,2);if(e===0){return false}a.B=f=a._;if(!(!(a.I_p1<=f)?false:true)){return false}switch(e){case 0:return false;case 1:if(!g(a)){return false}break;case 2:if(!g(a)){return false}break}return!b(a,'')?false:!m(a)?false:true};c.prototype.R=function(){var a;this.C=this._;if(d(this,c.a_4,44)===0){return false}this.B=a=this._;return!(!(this.I_p1<=a)?false:true)?false:!b(this,'')?false:!p(this)?false:true};c.prototype.r_case=c.prototype.R;function I(a){var e;a.C=a._;if(d(a,c.a_4,44)===0){return false}a.B=e=a._;return!(!(a.I_p1<=e)?false:true)?false:!b(a,'')?false:!p(a)?false:true};c.prototype.T=function(){var a;var e;this.C=this._;a=d(this,c.a_5,3);if(a===0){return false}this.B=e=this._;if(!(!(this.I_p1<=e)?false:true)){return false}switch(a){case 0:return false;case 1:if(!b(this,'e')){return false}break;case 2:if(!b(this,'a')){return false}break;case 3:if(!b(this,'a')){return false}break}return true};c.prototype.r_case_special=c.prototype.T;function J(a){var e;var f;a.C=a._;e=d(a,c.a_5,3);if(e===0){return false}a.B=f=a._;if(!(!(a.I_p1<=f)?false:true)){return false}switch(e){case 0:return false;case 1:if(!b(a,'e')){return false}break;case 2:if(!b(a,'a')){return false}break;case 3:if(!b(a,'a')){return false}break}return true};c.prototype.S=function(){var a;var e;this.C=this._;a=d(this,c.a_6,6);if(a===0){return false}this.B=e=this._;if(!(!(this.I_p1<=e)?false:true)){return false}switch(a){case 0:return false;case 1:if(!b(this,'')){return false}break;case 2:if(!b(this,'')){return false}break;case 3:if(!b(this,'a')){return false}break;case 4:if(!b(this,'e')){return false}break}return true};c.prototype.r_case_other=c.prototype.S;function K(a){var e;var f;a.C=a._;e=d(a,c.a_6,6);if(e===0){return false}a.B=f=a._;if(!(!(a.I_p1<=f)?false:true)){return false}switch(e){case 0:return false;case 1:if(!b(a,'')){return false}break;case 2:if(!b(a,'')){return false}break;case 3:if(!b(a,'a')){return false}break;case 4:if(!b(a,'e')){return false}break}return true};c.prototype.V=function(){var a;var e;this.C=this._;a=d(this,c.a_7,2);if(a===0){return false}this.B=e=this._;if(!(!(this.I_p1<=e)?false:true)){return false}switch(a){case 0:return false;case 1:if(!g(this)){return false}break;case 2:if(!g(this)){return false}break}return!b(this,'')?false:!m(this)?false:true};c.prototype.r_factive=c.prototype.V;function L(a){var e;var f;a.C=a._;e=d(a,c.a_7,2);if(e===0){return false}a.B=f=a._;if(!(!(a.I_p1<=f)?false:true)){return false}switch(e){case 0:return false;case 1:if(!g(a)){return false}break;case 2:if(!g(a)){return false}break}return!b(a,'')?false:!m(a)?false:true};c.prototype.a=function(){var a;var e;this.C=this._;a=d(this,c.a_8,7);if(a===0){return false}this.B=e=this._;if(!(!(this.I_p1<=e)?false:true)){return false}switch(a){case 0:return false;case 1:if(!b(this,'a')){return false}break;case 2:if(!b(this,'e')){return false}break;case 3:if(!b(this,'')){return false}break;case 4:if(!b(this,'')){return false}break;case 5:if(!b(this,'')){return false}break;case 6:if(!b(this,'')){return false}break;case 7:if(!b(this,'')){return false}break}return true};c.prototype.r_plural=c.prototype.a;function M(a){var e;var f;a.C=a._;e=d(a,c.a_8,7);if(e===0){return false}a.B=f=a._;if(!(!(a.I_p1<=f)?false:true)){return false}switch(e){case 0:return false;case 1:if(!b(a,'a')){return false}break;case 2:if(!b(a,'e')){return false}break;case 3:if(!b(a,'')){return false}break;case 4:if(!b(a,'')){return false}break;case 5:if(!b(a,'')){return false}break;case 6:if(!b(a,'')){return false}break;case 7:if(!b(a,'')){return false}break}return true};c.prototype.Y=function(){var a;var e;this.C=this._;a=d(this,c.a_9,12);if(a===0){return false}this.B=e=this._;if(!(!(this.I_p1<=e)?false:true)){return false}switch(a){case 0:return false;case 1:if(!b(this,'')){return false}break;case 2:if(!b(this,'e')){return false}break;case 3:if(!b(this,'a')){return false}break;case 4:if(!b(this,'')){return false}break;case 5:if(!b(this,'e')){return false}break;case 6:if(!b(this,'a')){return false}break;case 7:if(!b(this,'')){return false}break;case 8:if(!b(this,'e')){return false}break;case 9:if(!b(this,'')){return false}break}return true};c.prototype.r_owned=c.prototype.Y;function w(a){var e;var f;a.C=a._;e=d(a,c.a_9,12);if(e===0){return false}a.B=f=a._;if(!(!(a.I_p1<=f)?false:true)){return false}switch(e){case 0:return false;case 1:if(!b(a,'')){return false}break;case 2:if(!b(a,'e')){return false}break;case 3:if(!b(a,'a')){return false}break;case 4:if(!b(a,'')){return false}break;case 5:if(!b(a,'e')){return false}break;case 6:if(!b(a,'a')){return false}break;case 7:if(!b(a,'')){return false}break;case 8:if(!b(a,'e')){return false}break;case 9:if(!b(a,'')){return false}break}return true};c.prototype.b=function(){var a;var e;this.C=this._;a=d(this,c.a_10,31);if(a===0){return false}this.B=e=this._;if(!(!(this.I_p1<=e)?false:true)){return false}switch(a){case 0:return false;case 1:if(!b(this,'')){return false}break;case 2:if(!b(this,'a')){return false}break;case 3:if(!b(this,'e')){return false}break;case 4:if(!b(this,'')){return false}break;case 5:if(!b(this,'a')){return false}break;case 6:if(!b(this,'e')){return false}break;case 7:if(!b(this,'')){return false}break;case 8:if(!b(this,'')){return false}break;case 9:if(!b(this,'')){return false}break;case 10:if(!b(this,'a')){return false}break;case 11:if(!b(this,'e')){return false}break;case 12:if(!b(this,'')){return false}break;case 13:if(!b(this,'')){return false}break;case 14:if(!b(this,'a')){return false}break;case 15:if(!b(this,'e')){return false}break;case 16:if(!b(this,'')){return false}break;case 17:if(!b(this,'')){return false}break;case 18:if(!b(this,'')){return false}break;case 19:if(!b(this,'a')){return false}break;case 20:if(!b(this,'e')){return false}break}return true};c.prototype.r_sing_owner=c.prototype.b;function t(a){var e;var f;a.C=a._;e=d(a,c.a_10,31);if(e===0){return false}a.B=f=a._;if(!(!(a.I_p1<=f)?false:true)){return false}switch(e){case 0:return false;case 1:if(!b(a,'')){return false}break;case 2:if(!b(a,'a')){return false}break;case 3:if(!b(a,'e')){return false}break;case 4:if(!b(a,'')){return false}break;case 5:if(!b(a,'a')){return false}break;case 6:if(!b(a,'e')){return false}break;case 7:if(!b(a,'')){return false}break;case 8:if(!b(a,'')){return false}break;case 9:if(!b(a,'')){return false}break;case 10:if(!b(a,'a')){return false}break;case 11:if(!b(a,'e')){return false}break;case 12:if(!b(a,'')){return false}break;case 13:if(!b(a,'')){return false}break;case 14:if(!b(a,'a')){return false}break;case 15:if(!b(a,'e')){return false}break;case 16:if(!b(a,'')){return false}break;case 17:if(!b(a,'')){return false}break;case 18:if(!b(a,'')){return false}break;case 19:if(!b(a,'a')){return false}break;case 20:if(!b(a,'e')){return false}break}return true};c.prototype.Z=function(){var a;var e;this.C=this._;a=d(this,c.a_11,42);if(a===0){return false}this.B=e=this._;if(!(!(this.I_p1<=e)?false:true)){return false}switch(a){case 0:return false;case 1:if(!b(this,'')){return false}break;case 2:if(!b(this,'a')){return false}break;case 3:if(!b(this,'e')){return false}break;case 4:if(!b(this,'')){return false}break;case 5:if(!b(this,'')){return false}break;case 6:if(!b(this,'')){return false}break;case 7:if(!b(this,'a')){return false}break;case 8:if(!b(this,'e')){return false}break;case 9:if(!b(this,'')){return false}break;case 10:if(!b(this,'')){return false}break;case 11:if(!b(this,'')){return false}break;case 12:if(!b(this,'a')){return false}break;case 13:if(!b(this,'e')){return false}break;case 14:if(!b(this,'')){return false}break;case 15:if(!b(this,'')){return false}break;case 16:if(!b(this,'')){return false}break;case 17:if(!b(this,'')){return false}break;case 18:if(!b(this,'a')){return false}break;case 19:if(!b(this,'e')){return false}break;case 20:if(!b(this,'')){return false}break;case 21:if(!b(this,'')){return false}break;case 22:if(!b(this,'a')){return false}break;case 23:if(!b(this,'e')){return false}break;case 24:if(!b(this,'')){return false}break;case 25:if(!b(this,'')){return false}break;case 26:if(!b(this,'')){return false}break;case 27:if(!b(this,'a')){return false}break;case 28:if(!b(this,'e')){return false}break;case 29:if(!b(this,'')){return false}break}return true};c.prototype.r_plur_owner=c.prototype.Z;function G(a){var e;var f;a.C=a._;e=d(a,c.a_11,42);if(e===0){return false}a.B=f=a._;if(!(!(a.I_p1<=f)?false:true)){return false}switch(e){case 0:return false;case 1:if(!b(a,'')){return false}break;case 2:if(!b(a,'a')){return false}break;case 3:if(!b(a,'e')){return false}break;case 4:if(!b(a,'')){return false}break;case 5:if(!b(a,'')){return false}break;case 6:if(!b(a,'')){return false}break;case 7:if(!b(a,'a')){return false}break;case 8:if(!b(a,'e')){return false}break;case 9:if(!b(a,'')){return false}break;case 10:if(!b(a,'')){return false}break;case 11:if(!b(a,'')){return false}break;case 12:if(!b(a,'a')){return false}break;case 13:if(!b(a,'e')){return false}break;case 14:if(!b(a,'')){return false}break;case 15:if(!b(a,'')){return false}break;case 16:if(!b(a,'')){return false}break;case 17:if(!b(a,'')){return false}break;case 18:if(!b(a,'a')){return false}break;case 19:if(!b(a,'e')){return false}break;case 20:if(!b(a,'')){return false}break;case 21:if(!b(a,'')){return false}break;case 22:if(!b(a,'a')){return false}break;case 23:if(!b(a,'e')){return false}break;case 24:if(!b(a,'')){return false}break;case 25:if(!b(a,'')){return false}break;case 26:if(!b(a,'')){return false}break;case 27:if(!b(a,'a')){return false}break;case 28:if(!b(a,'e')){return false}break;case 29:if(!b(a,'')){return false}break}return true};c.prototype.J=function(){var s;var l;var m;var n;var o;var p;var q;var r;var u;var b;var c;var d;var e;var f;var g;var h;var i;var a;var j;var v;var x;var y;var z;var A;var B;var C;var E;var F;var N;var O;var P;var Q;var R;var S;var T;var k;s=this._;b=true;a:while(b===true){b=false;if(!D(this)){break a}}v=this._=s;this.E=v;y=this._=x=this.A;l=x-y;c=true;a:while(c===true){c=false;if(!H(this)){break a}}A=this._=(z=this.A)-l;m=z-A;d=true;a:while(d===true){d=false;if(!I(this)){break a}}C=this._=(B=this.A)-m;n=B-C;e=true;a:while(e===true){e=false;if(!J(this)){break a}}F=this._=(E=this.A)-n;o=E-F;f=true;a:while(f===true){f=false;if(!K(this)){break a}}O=this._=(N=this.A)-o;p=N-O;g=true;a:while(g===true){g=false;if(!L(this)){break a}}Q=this._=(P=this.A)-p;q=P-Q;h=true;a:while(h===true){h=false;if(!w(this)){break a}}S=this._=(R=this.A)-q;r=R-S;i=true;a:while(i===true){i=false;if(!t(this)){break a}}k=this._=(T=this.A)-r;u=T-k;a=true;a:while(a===true){a=false;if(!G(this)){break a}}this._=this.A-u;j=true;a:while(j===true){j=false;if(!M(this)){break a}}this._=this.E;return true};c.prototype.stem=c.prototype.J;c.prototype.N=function(a){return a instanceof c};c.prototype.equals=c.prototype.N;c.prototype.O=function(){var c;var a;var b;var d;c='HungarianStemmer';a=0;for(b=0;b<c.length;b++){d=c.charCodeAt(b);a=(a<<5)-a+d;a=a&a}return a|0};c.prototype.hashCode=c.prototype.O;c.serialVersionUID=1;e(c,'methodObject',function(){return new c});e(c,'a_0',function(){return[new a('cs',-1,-1),new a('dzs',-1,-1),new a('gy',-1,-1),new a('ly',-1,-1),new a('ny',-1,-1),new a('sz',-1,-1),new a('ty',-1,-1),new a('zs',-1,-1)]});e(c,'a_1',function(){return[new a('á',-1,1),new a('é',-1,2)]});e(c,'a_2',function(){return[new a('bb',-1,-1),new a('cc',-1,-1),new a('dd',-1,-1),new a('ff',-1,-1),new a('gg',-1,-1),new a('jj',-1,-1),new a('kk',-1,-1),new a('ll',-1,-1),new a('mm',-1,-1),new a('nn',-1,-1),new a('pp',-1,-1),new a('rr',-1,-1),new a('ccs',-1,-1),new a('ss',-1,-1),new a('zzs',-1,-1),new a('tt',-1,-1),new a('vv',-1,-1),new a('ggy',-1,-1),new a('lly',-1,-1),new a('nny',-1,-1),new a('tty',-1,-1),new a('ssz',-1,-1),new a('zz',-1,-1)]});e(c,'a_3',function(){return[new a('al',-1,1),new a('el',-1,2)]});e(c,'a_4',function(){return[new a('ba',-1,-1),new a('ra',-1,-1),new a('be',-1,-1),new a('re',-1,-1),new a('ig',-1,-1),new a('nak',-1,-1),new a('nek',-1,-1),new a('val',-1,-1),new a('vel',-1,-1),new a('ul',-1,-1),new a('nál',-1,-1),new a('nél',-1,-1),new a('ból',-1,-1),new a('ról',-1,-1),new a('tól',-1,-1),new a('bõl',-1,-1),new a('rõl',-1,-1),new a('tõl',-1,-1),new a('ül',-1,-1),new a('n',-1,-1),new a('an',19,-1),new a('ban',20,-1),new a('en',19,-1),new a('ben',22,-1),new a('képpen',22,-1),new a('on',19,-1),new a('ön',19,-1),new a('képp',-1,-1),new a('kor',-1,-1),new a('t',-1,-1),new a('at',29,-1),new a('et',29,-1),new a('ként',29,-1),new a('anként',32,-1),new a('enként',32,-1),new a('onként',32,-1),new a('ot',29,-1),new a('ért',29,-1),new a('öt',29,-1),new a('hez',-1,-1),new a('hoz',-1,-1),new a('höz',-1,-1),new a('vá',-1,-1),new a('vé',-1,-1)]});e(c,'a_5',function(){return[new a('án',-1,2),new a('én',-1,1),new a('ánként',-1,3)]});e(c,'a_6',function(){return[new a('stul',-1,2),new a('astul',0,1),new a('ástul',0,3),new a('stül',-1,2),new a('estül',3,1),new a('éstül',3,4)]});e(c,'a_7',function(){return[new a('á',-1,1),new a('é',-1,2)]});e(c,'a_8',function(){return[new a('k',-1,7),new a('ak',0,4),new a('ek',0,6),new a('ok',0,5),new a('ák',0,1),new a('ék',0,2),new a('ök',0,3)]});e(c,'a_9',function(){return[new a('éi',-1,7),new a('áéi',0,6),new a('ééi',0,5),new a('é',-1,9),new a('ké',3,4),new a('aké',4,1),new a('eké',4,1),new a('oké',4,1),new a('áké',4,3),new a('éké',4,2),new a('öké',4,1),new a('éé',3,8)]});e(c,'a_10',function(){return[new a('a',-1,18),new a('ja',0,17),new a('d',-1,16),new a('ad',2,13),new a('ed',2,13),new a('od',2,13),new a('ád',2,14),new a('éd',2,15),new a('öd',2,13),new a('e',-1,18),new a('je',9,17),new a('nk',-1,4),new a('unk',11,1),new a('ánk',11,2),new a('énk',11,3),new a('ünk',11,1),new a('uk',-1,8),new a('juk',16,7),new a('ájuk',17,5),new a('ük',-1,8),new a('jük',19,7),new a('éjük',20,6),new a('m',-1,12),new a('am',22,9),new a('em',22,9),new a('om',22,9),new a('ám',22,10),new a('ém',22,11),new a('o',-1,18),new a('á',-1,19),new a('é',-1,20)]});e(c,'a_11',function(){return[new a('id',-1,10),new a('aid',0,9),new a('jaid',1,6),new a('eid',0,9),new a('jeid',3,6),new a('áid',0,7),new a('éid',0,8),new a('i',-1,15),new a('ai',7,14),new a('jai',8,11),new a('ei',7,14),new a('jei',10,11),new a('ái',7,12),new a('éi',7,13),new a('itek',-1,24),new a('eitek',14,21),new a('jeitek',15,20),new a('éitek',14,23),new a('ik',-1,29),new a('aik',18,26),new a('jaik',19,25),new a('eik',18,26),new a('jeik',21,25),new a('áik',18,27),new a('éik',18,28),new a('ink',-1,20),new a('aink',25,17),new a('jaink',26,16),new a('eink',25,17),new a('jeink',28,16),new a('áink',25,18),new a('éink',25,19),new a('aitok',-1,21),new a('jaitok',32,20),new a('áitok',-1,22),new a('im',-1,5),new a('aim',35,4),new a('jaim',36,1),new a('eim',35,4),new a('jeim',38,1),new a('áim',35,2),new a('éim',35,3)]});e(c,'g_v',function(){return[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,52,14]});var q={'src/stemmer.jsx':{Stemmer:n},'src/hungarian-stemmer.jsx':{HungarianStemmer:c}}}(JSX)) +var Stemmer = JSX.require("src/hungarian-stemmer.jsx").HungarianStemmer; +""" + + +class SearchHungarian(SearchLanguage): + lang = 'hu' + language_name = 'Hungarian' + js_stemmer_rawcode = 'hungarian-stemmer.js' + js_stemmer_code = js_stemmer + stopwords = hungarian_stopwords + + def init(self, options: Dict) -> None: + self.stemmer = snowballstemmer.stemmer('hungarian') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/sphinx/search/it.py b/sphinx/sphinx/search/it.py new file mode 100644 index 0000000..e76cd99 --- /dev/null +++ b/sphinx/sphinx/search/it.py @@ -0,0 +1,329 @@ +""" + sphinx.search.it + ~~~~~~~~~~~~~~~~ + + Italian search language: includes the JS Italian stemmer. + + :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + + +italian_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/italian/stop.txt +ad | a (to) before vowel +al | a + il +allo | a + lo +ai | a + i +agli | a + gli +all | a + l' +agl | a + gl' +alla | a + la +alle | a + le +con | with +col | con + il +coi | con + i (forms collo, cogli etc are now very rare) +da | from +dal | da + il +dallo | da + lo +dai | da + i +dagli | da + gli +dall | da + l' +dagl | da + gll' +dalla | da + la +dalle | da + le +di | of +del | di + il +dello | di + lo +dei | di + i +degli | di + gli +dell | di + l' +degl | di + gl' +della | di + la +delle | di + le +in | in +nel | in + el +nello | in + lo +nei | in + i +negli | in + gli +nell | in + l' +negl | in + gl' +nella | in + la +nelle | in + le +su | on +sul | su + il +sullo | su + lo +sui | su + i +sugli | su + gli +sull | su + l' +sugl | su + gl' +sulla | su + la +sulle | su + le +per | through, by +tra | among +contro | against +io | I +tu | thou +lui | he +lei | she +noi | we +voi | you +loro | they +mio | my +mia | +miei | +mie | +tuo | +tua | +tuoi | thy +tue | +suo | +sua | +suoi | his, her +sue | +nostro | our +nostra | +nostri | +nostre | +vostro | your +vostra | +vostri | +vostre | +mi | me +ti | thee +ci | us, there +vi | you, there +lo | him, the +la | her, the +li | them +le | them, the +gli | to him, the +ne | from there etc +il | the +un | a +uno | a +una | a +ma | but +ed | and +se | if +perché | why, because +anche | also +come | how +dov | where (as dov') +dove | where +che | who, that +chi | who +cui | whom +non | not +più | more +quale | who, that +quanto | how much +quanti | +quanta | +quante | +quello | that +quelli | +quella | +quelle | +questo | this +questi | +questa | +queste | +si | yes +tutto | all +tutti | all + + | single letter forms: + +a | at +c | as c' for ce or ci +e | and +i | the +l | as l' +o | or + + | forms of avere, to have (not including the infinitive): + +ho +hai +ha +abbiamo +avete +hanno +abbia +abbiate +abbiano +avrò +avrai +avrà +avremo +avrete +avranno +avrei +avresti +avrebbe +avremmo +avreste +avrebbero +avevo +avevi +aveva +avevamo +avevate +avevano +ebbi +avesti +ebbe +avemmo +aveste +ebbero +avessi +avesse +avessimo +avessero +avendo +avuto +avuta +avuti +avute + + | forms of essere, to be (not including the infinitive): +sono +sei +è +siamo +siete +sia +siate +siano +sarò +sarai +sarà +saremo +sarete +saranno +sarei +saresti +sarebbe +saremmo +sareste +sarebbero +ero +eri +era +eravamo +eravate +erano +fui +fosti +fu +fummo +foste +furono +fossi +fosse +fossimo +fossero +essendo + + | forms of fare, to do (not including the infinitive, fa, fat-): +faccio +fai +facciamo +fanno +faccia +facciate +facciano +farò +farai +farà +faremo +farete +faranno +farei +faresti +farebbe +faremmo +fareste +farebbero +facevo +facevi +faceva +facevamo +facevate +facevano +feci +facesti +fece +facemmo +faceste +fecero +facessi +facesse +facessimo +facessero +facendo + + | forms of stare, to be (not including the infinitive): +sto +stai +sta +stiamo +stanno +stia +stiate +stiano +starò +starai +starà +staremo +starete +staranno +starei +staresti +starebbe +staremmo +stareste +starebbero +stavo +stavi +stava +stavamo +stavate +stavano +stetti +stesti +stette +stemmo +steste +stettero +stessi +stesse +stessimo +stessero +''') + +js_stemmer = """ +var JSX={};(function(k){function l(b,e){var a=function(){};a.prototype=e.prototype;var c=new a;for(var d in b){b[d].prototype=c}}function K(c,b){for(var a in b.prototype)if(b.prototype.hasOwnProperty(a))c.prototype[a]=b.prototype[a]}function e(a,b,d){function c(a,b,c){delete a[b];a[b]=c;return c}Object.defineProperty(a,b,{get:function(){return c(a,b,d())},set:function(d){c(a,b,d)},enumerable:true,configurable:true})}function L(a,b,c){return a[b]=a[b]/c|0}var r=parseInt;var B=parseFloat;function M(a){return a!==a}var z=isFinite;var y=encodeURIComponent;var x=decodeURIComponent;var w=encodeURI;var u=decodeURI;var t=Object.prototype.toString;var C=Object.prototype.hasOwnProperty;function j(){}k.require=function(b){var a=q[b];return a!==undefined?a:null};k.profilerIsRunning=function(){return j.getResults!=null};k.getProfileResults=function(){return(j.getResults||function(){return{}})()};k.postProfileResults=function(a,b){if(j.postResults==null)throw new Error('profiler has not been turned on');return j.postResults(a,b)};k.resetProfileResults=function(){if(j.resetResults==null)throw new Error('profiler has not been turned on');return j.resetResults()};k.DEBUG=false;function s(){};l([s],Error);function a(a,b,c){this.F=a.length;this.K=a;this.L=b;this.I=c;this.H=null;this.P=null};l([a],Object);function p(){};l([p],Object);function i(){var a;var b;var c;this.G={};a=this.E='';b=this._=0;c=this.A=a.length;this.D=0;this.C=b;this.B=c};l([i],p);function v(a,b){a.E=b.E;a._=b._;a.A=b.A;a.D=b.D;a.C=b.C;a.B=b.B};function d(b,d,c,e){var a;if(b._>=b.A){return false}a=b.E.charCodeAt(b._);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._++;return true};function m(b,d,c,e){var a;if(b._<=b.D){return false}a=b.E.charCodeAt(b._-1);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._--;return true};function h(a,d,c,e){var b;if(a._>=a.A){return false}b=a.E.charCodeAt(a._);if(b>e||b<c){a._++;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._++;return true}return false};function o(a,b,d){var c;if(a.A-a._<b){return false}if(a.E.slice(c=a._,c+b)!==d){return false}a._+=b;return true};function g(a,b,d){var c;if(a._-a.D<b){return false}if(a.E.slice((c=a._)-b,c)!==d){return false}a._-=b;return true};function n(f,m,p){var b;var d;var e;var n;var g;var k;var l;var i;var h;var c;var a;var j;var o;b=0;d=p;e=f._;n=f.A;g=0;k=0;l=false;while(true){i=b+(d-b>>>1);h=0;c=g<k?g:k;a=m[i];for(j=c;j<a.F;j++){if(e+c===n){h=-1;break}h=f.E.charCodeAt(e+c)-a.K.charCodeAt(j);if(h!==0){break}c++}if(h<0){d=i;k=c}else{b=i;g=c}if(d-b<=1){if(b>0){break}if(d===b){break}if(l){break}l=true}}while(true){a=m[b];if(g>=a.F){f._=e+a.F|0;if(a.H==null){return a.I}o=a.H(a.P);f._=e+a.F|0;if(o){return a.I}}b=a.L;if(b<0){return 0}}return-1};function f(d,m,p){var b;var g;var e;var n;var f;var k;var l;var i;var h;var c;var a;var j;var o;b=0;g=p;e=d._;n=d.D;f=0;k=0;l=false;while(true){i=b+(g-b>>1);h=0;c=f<k?f:k;a=m[i];for(j=a.F-1-c;j>=0;j--){if(e-c===n){h=-1;break}h=d.E.charCodeAt(e-1-c)-a.K.charCodeAt(j);if(h!==0){break}c++}if(h<0){g=i;k=c}else{b=i;f=c}if(g-b<=1){if(b>0){break}if(g===b){break}if(l){break}l=true}}while(true){a=m[b];if(f>=a.F){d._=e-a.F|0;if(a.H==null){return a.I}o=a.H(d);d._=e-a.F|0;if(o){return a.I}}b=a.L;if(b<0){return 0}}return-1};function D(a,b,d,e){var c;c=e.length-(d-b);a.E=a.E.slice(0,b)+e+a.E.slice(d);a.A+=c|0;if(a._>=d){a._+=c|0}else if(a._>b){a._=b}return c|0};function c(a,f){var b;var c;var d;var e;b=false;if((c=a.C)<0||c>(d=a.B)||d>(e=a.A)||e>a.E.length?false:true){D(a,a.C,a.B,f);b=true}return b};i.prototype.J=function(){return false};i.prototype.a=function(b){var a;var c;var d;var e;a=this.G['.'+b];if(a==null){c=this.E=b;d=this._=0;e=this.A=c.length;this.D=0;this.C=d;this.B=e;this.J();a=this.E;this.G['.'+b]=a}return a};i.prototype.stemWord=i.prototype.a;i.prototype.b=function(e){var d;var b;var c;var a;var f;var g;var h;d=[];for(b=0;b<e.length;b++){c=e[b];a=this.G['.'+c];if(a==null){f=this.E=c;g=this._=0;h=this.A=f.length;this.D=0;this.C=g;this.B=h;this.J();a=this.E;this.G['.'+c]=a}d.push(a)}return d};i.prototype.stemWords=i.prototype.b;function b(){i.call(this);this.I_p2=0;this.I_p1=0;this.I_pV=0};l([b],i);b.prototype.M=function(a){this.I_p2=a.I_p2;this.I_p1=a.I_p1;this.I_pV=a.I_pV;v(this,a)};b.prototype.copy_from=b.prototype.M;b.prototype.W=function(){var e;var p;var q;var l;var a;var k;var f;var g;var h;var i;var j;var m;p=this._;b:while(true){q=this._;f=true;a:while(f===true){f=false;this.C=this._;e=n(this,b.a_0,7);if(e===0){break a}this.B=this._;switch(e){case 0:break a;case 1:if(!c(this,'à')){return false}break;case 2:if(!c(this,'è')){return false}break;case 3:if(!c(this,'ì')){return false}break;case 4:if(!c(this,'ò')){return false}break;case 5:if(!c(this,'ù')){return false}break;case 6:if(!c(this,'qU')){return false}break;case 7:if(this._>=this.A){break a}this._++;break}continue b}this._=q;break b}this._=p;b:while(true){l=this._;g=true;d:while(g===true){g=false;e:while(true){a=this._;h=true;a:while(h===true){h=false;if(!d(this,b.g_v,97,249)){break a}this.C=this._;i=true;f:while(i===true){i=false;k=this._;j=true;c:while(j===true){j=false;if(!o(this,1,'u')){break c}this.B=this._;if(!d(this,b.g_v,97,249)){break c}if(!c(this,'U')){return false}break f}this._=k;if(!o(this,1,'i')){break a}this.B=this._;if(!d(this,b.g_v,97,249)){break a}if(!c(this,'I')){return false}}this._=a;break e}m=this._=a;if(m>=this.A){break d}this._++}continue b}this._=l;break b}return true};b.prototype.r_prelude=b.prototype.W;function G(a){var e;var q;var r;var m;var f;var l;var g;var h;var i;var j;var k;var p;q=a._;b:while(true){r=a._;g=true;a:while(g===true){g=false;a.C=a._;e=n(a,b.a_0,7);if(e===0){break a}a.B=a._;switch(e){case 0:break a;case 1:if(!c(a,'à')){return false}break;case 2:if(!c(a,'è')){return false}break;case 3:if(!c(a,'ì')){return false}break;case 4:if(!c(a,'ò')){return false}break;case 5:if(!c(a,'ù')){return false}break;case 6:if(!c(a,'qU')){return false}break;case 7:if(a._>=a.A){break a}a._++;break}continue b}a._=r;break b}a._=q;b:while(true){m=a._;h=true;d:while(h===true){h=false;e:while(true){f=a._;i=true;a:while(i===true){i=false;if(!d(a,b.g_v,97,249)){break a}a.C=a._;j=true;f:while(j===true){j=false;l=a._;k=true;c:while(k===true){k=false;if(!o(a,1,'u')){break c}a.B=a._;if(!d(a,b.g_v,97,249)){break c}if(!c(a,'U')){return false}break f}a._=l;if(!o(a,1,'i')){break a}a.B=a._;if(!d(a,b.g_v,97,249)){break a}if(!c(a,'I')){return false}}a._=f;break e}p=a._=f;if(p>=a.A){break d}a._++}continue b}a._=m;break b}return true};b.prototype.U=function(){var u;var w;var x;var y;var t;var l;var e;var f;var g;var i;var c;var j;var k;var a;var m;var n;var o;var p;var q;var r;var s;var v;this.I_pV=s=this.A;this.I_p1=s;this.I_p2=s;u=this._;l=true;a:while(l===true){l=false;e=true;g:while(e===true){e=false;w=this._;f=true;b:while(f===true){f=false;if(!d(this,b.g_v,97,249)){break b}g=true;f:while(g===true){g=false;x=this._;i=true;c:while(i===true){i=false;if(!h(this,b.g_v,97,249)){break c}d:while(true){c=true;e:while(c===true){c=false;if(!d(this,b.g_v,97,249)){break e}break d}if(this._>=this.A){break c}this._++}break f}this._=x;if(!d(this,b.g_v,97,249)){break b}c:while(true){j=true;d:while(j===true){j=false;if(!h(this,b.g_v,97,249)){break d}break c}if(this._>=this.A){break b}this._++}}break g}this._=w;if(!h(this,b.g_v,97,249)){break a}k=true;c:while(k===true){k=false;y=this._;a=true;b:while(a===true){a=false;if(!h(this,b.g_v,97,249)){break b}e:while(true){m=true;d:while(m===true){m=false;if(!d(this,b.g_v,97,249)){break d}break e}if(this._>=this.A){break b}this._++}break c}this._=y;if(!d(this,b.g_v,97,249)){break a}if(this._>=this.A){break a}this._++}}this.I_pV=this._}v=this._=u;t=v;n=true;a:while(n===true){n=false;b:while(true){o=true;c:while(o===true){o=false;if(!d(this,b.g_v,97,249)){break c}break b}if(this._>=this.A){break a}this._++}b:while(true){p=true;c:while(p===true){p=false;if(!h(this,b.g_v,97,249)){break c}break b}if(this._>=this.A){break a}this._++}this.I_p1=this._;b:while(true){q=true;c:while(q===true){q=false;if(!d(this,b.g_v,97,249)){break c}break b}if(this._>=this.A){break a}this._++}c:while(true){r=true;b:while(r===true){r=false;if(!h(this,b.g_v,97,249)){break b}break c}if(this._>=this.A){break a}this._++}this.I_p2=this._}this._=t;return true};b.prototype.r_mark_regions=b.prototype.U;function H(a){var x;var y;var z;var u;var v;var l;var e;var f;var g;var i;var j;var k;var c;var m;var n;var o;var p;var q;var r;var s;var t;var w;a.I_pV=t=a.A;a.I_p1=t;a.I_p2=t;x=a._;l=true;a:while(l===true){l=false;e=true;g:while(e===true){e=false;y=a._;f=true;b:while(f===true){f=false;if(!d(a,b.g_v,97,249)){break b}g=true;f:while(g===true){g=false;z=a._;i=true;c:while(i===true){i=false;if(!h(a,b.g_v,97,249)){break c}d:while(true){j=true;e:while(j===true){j=false;if(!d(a,b.g_v,97,249)){break e}break d}if(a._>=a.A){break c}a._++}break f}a._=z;if(!d(a,b.g_v,97,249)){break b}c:while(true){k=true;d:while(k===true){k=false;if(!h(a,b.g_v,97,249)){break d}break c}if(a._>=a.A){break b}a._++}}break g}a._=y;if(!h(a,b.g_v,97,249)){break a}c=true;c:while(c===true){c=false;u=a._;m=true;b:while(m===true){m=false;if(!h(a,b.g_v,97,249)){break b}e:while(true){n=true;d:while(n===true){n=false;if(!d(a,b.g_v,97,249)){break d}break e}if(a._>=a.A){break b}a._++}break c}a._=u;if(!d(a,b.g_v,97,249)){break a}if(a._>=a.A){break a}a._++}}a.I_pV=a._}w=a._=x;v=w;o=true;a:while(o===true){o=false;b:while(true){p=true;c:while(p===true){p=false;if(!d(a,b.g_v,97,249)){break c}break b}if(a._>=a.A){break a}a._++}b:while(true){q=true;c:while(q===true){q=false;if(!h(a,b.g_v,97,249)){break c}break b}if(a._>=a.A){break a}a._++}a.I_p1=a._;b:while(true){r=true;c:while(r===true){r=false;if(!d(a,b.g_v,97,249)){break c}break b}if(a._>=a.A){break a}a._++}c:while(true){s=true;b:while(s===true){s=false;if(!h(a,b.g_v,97,249)){break b}break c}if(a._>=a.A){break a}a._++}a.I_p2=a._}a._=v;return true};b.prototype.V=function(){var a;var e;var d;b:while(true){e=this._;d=true;a:while(d===true){d=false;this.C=this._;a=n(this,b.a_1,3);if(a===0){break a}this.B=this._;switch(a){case 0:break a;case 1:if(!c(this,'i')){return false}break;case 2:if(!c(this,'u')){return false}break;case 3:if(this._>=this.A){break a}this._++;break}continue b}this._=e;break b}return true};b.prototype.r_postlude=b.prototype.V;function I(a){var d;var f;var e;b:while(true){f=a._;e=true;a:while(e===true){e=false;a.C=a._;d=n(a,b.a_1,3);if(d===0){break a}a.B=a._;switch(d){case 0:break a;case 1:if(!c(a,'i')){return false}break;case 2:if(!c(a,'u')){return false}break;case 3:if(a._>=a.A){break a}a._++;break}continue b}a._=f;break b}return true};b.prototype.S=function(){return!(this.I_pV<=this._)?false:true};b.prototype.r_RV=b.prototype.S;b.prototype.Q=function(){return!(this.I_p1<=this._)?false:true};b.prototype.r_R1=b.prototype.Q;b.prototype.R=function(){return!(this.I_p2<=this._)?false:true};b.prototype.r_R2=b.prototype.R;b.prototype.T=function(){var a;this.B=this._;if(f(this,b.a_2,37)===0){return false}this.C=this._;a=f(this,b.a_3,5);if(a===0){return false}if(!(!(this.I_pV<=this._)?false:true)){return false}switch(a){case 0:return false;case 1:if(!c(this,'')){return false}break;case 2:if(!c(this,'e')){return false}break}return true};b.prototype.r_attached_pronoun=b.prototype.T;function J(a){var d;a.B=a._;if(f(a,b.a_2,37)===0){return false}a.C=a._;d=f(a,b.a_3,5);if(d===0){return false}if(!(!(a.I_pV<=a._)?false:true)){return false}switch(d){case 0:return false;case 1:if(!c(a,'')){return false}break;case 2:if(!c(a,'e')){return false}break}return true};b.prototype.X=function(){var a;var j;var d;var h;var e;var k;var i;var l;var m;var o;var p;var q;var r;var n;this.B=this._;a=f(this,b.a_6,51);if(a===0){return false}this.C=this._;switch(a){case 0:return false;case 1:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'')){return false}break;case 2:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'')){return false}j=this.A-this._;k=true;a:while(k===true){k=false;this.B=this._;if(!g(this,2,'ic')){this._=this.A-j;break a}this.C=o=this._;if(!(!(this.I_p2<=o)?false:true)){this._=this.A-j;break a}if(!c(this,'')){return false}}break;case 3:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'log')){return false}break;case 4:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'u')){return false}break;case 5:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'ente')){return false}break;case 6:if(!(!(this.I_pV<=this._)?false:true)){return false}if(!c(this,'')){return false}break;case 7:if(!(!(this.I_p1<=this._)?false:true)){return false}if(!c(this,'')){return false}d=this.A-this._;i=true;a:while(i===true){i=false;this.B=this._;a=f(this,b.a_4,4);if(a===0){this._=this.A-d;break a}this.C=p=this._;if(!(!(this.I_p2<=p)?false:true)){this._=this.A-d;break a}if(!c(this,'')){return false}switch(a){case 0:this._=this.A-d;break a;case 1:this.B=this._;if(!g(this,2,'at')){this._=this.A-d;break a}this.C=q=this._;if(!(!(this.I_p2<=q)?false:true)){this._=this.A-d;break a}if(!c(this,'')){return false}break}}break;case 8:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'')){return false}h=this.A-this._;l=true;a:while(l===true){l=false;this.B=this._;a=f(this,b.a_5,3);if(a===0){this._=this.A-h;break a}this.C=this._;switch(a){case 0:this._=this.A-h;break a;case 1:if(!(!(this.I_p2<=this._)?false:true)){this._=this.A-h;break a}if(!c(this,'')){return false}break}}break;case 9:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'')){return false}e=this.A-this._;m=true;a:while(m===true){m=false;this.B=this._;if(!g(this,2,'at')){this._=this.A-e;break a}this.C=r=this._;if(!(!(this.I_p2<=r)?false:true)){this._=this.A-e;break a}if(!c(this,'')){return false}this.B=this._;if(!g(this,2,'ic')){this._=this.A-e;break a}this.C=n=this._;if(!(!(this.I_p2<=n)?false:true)){this._=this.A-e;break a}if(!c(this,'')){return false}}break}return true};b.prototype.r_standard_suffix=b.prototype.X;function F(a){var d;var k;var e;var i;var h;var l;var j;var m;var n;var p;var q;var r;var s;var o;a.B=a._;d=f(a,b.a_6,51);if(d===0){return false}a.C=a._;switch(d){case 0:return false;case 1:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'')){return false}break;case 2:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'')){return false}k=a.A-a._;l=true;a:while(l===true){l=false;a.B=a._;if(!g(a,2,'ic')){a._=a.A-k;break a}a.C=p=a._;if(!(!(a.I_p2<=p)?false:true)){a._=a.A-k;break a}if(!c(a,'')){return false}}break;case 3:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'log')){return false}break;case 4:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'u')){return false}break;case 5:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'ente')){return false}break;case 6:if(!(!(a.I_pV<=a._)?false:true)){return false}if(!c(a,'')){return false}break;case 7:if(!(!(a.I_p1<=a._)?false:true)){return false}if(!c(a,'')){return false}e=a.A-a._;j=true;a:while(j===true){j=false;a.B=a._;d=f(a,b.a_4,4);if(d===0){a._=a.A-e;break a}a.C=q=a._;if(!(!(a.I_p2<=q)?false:true)){a._=a.A-e;break a}if(!c(a,'')){return false}switch(d){case 0:a._=a.A-e;break a;case 1:a.B=a._;if(!g(a,2,'at')){a._=a.A-e;break a}a.C=r=a._;if(!(!(a.I_p2<=r)?false:true)){a._=a.A-e;break a}if(!c(a,'')){return false}break}}break;case 8:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'')){return false}i=a.A-a._;m=true;a:while(m===true){m=false;a.B=a._;d=f(a,b.a_5,3);if(d===0){a._=a.A-i;break a}a.C=a._;switch(d){case 0:a._=a.A-i;break a;case 1:if(!(!(a.I_p2<=a._)?false:true)){a._=a.A-i;break a}if(!c(a,'')){return false}break}}break;case 9:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'')){return false}h=a.A-a._;n=true;a:while(n===true){n=false;a.B=a._;if(!g(a,2,'at')){a._=a.A-h;break a}a.C=s=a._;if(!(!(a.I_p2<=s)?false:true)){a._=a.A-h;break a}if(!c(a,'')){return false}a.B=a._;if(!g(a,2,'ic')){a._=a.A-h;break a}a.C=o=a._;if(!(!(a.I_p2<=o)?false:true)){a._=a.A-h;break a}if(!c(a,'')){return false}}break}return true};b.prototype.Y=function(){var d;var e;var a;var g;var h;var i;e=this.A-(g=this._);if(g<this.I_pV){return false}h=this._=this.I_pV;a=this.D;this.D=h;i=this._=this.A-e;this.B=i;d=f(this,b.a_7,87);if(d===0){this.D=a;return false}this.C=this._;switch(d){case 0:this.D=a;return false;case 1:if(!c(this,'')){return false}break}this.D=a;return true};b.prototype.r_verb_suffix=b.prototype.Y;function E(a){var e;var g;var d;var h;var i;var j;g=a.A-(h=a._);if(h<a.I_pV){return false}i=a._=a.I_pV;d=a.D;a.D=i;j=a._=a.A-g;a.B=j;e=f(a,b.a_7,87);if(e===0){a.D=d;return false}a.C=a._;switch(e){case 0:a.D=d;return false;case 1:if(!c(a,'')){return false}break}a.D=d;return true};b.prototype.Z=function(){var a;var d;var e;var f;var h;var i;a=this.A-this._;e=true;a:while(e===true){e=false;this.B=this._;if(!m(this,b.g_AEIO,97,242)){this._=this.A-a;break a}this.C=h=this._;if(!(!(this.I_pV<=h)?false:true)){this._=this.A-a;break a}if(!c(this,'')){return false}this.B=this._;if(!g(this,1,'i')){this._=this.A-a;break a}this.C=i=this._;if(!(!(this.I_pV<=i)?false:true)){this._=this.A-a;break a}if(!c(this,'')){return false}}d=this.A-this._;f=true;a:while(f===true){f=false;this.B=this._;if(!g(this,1,'h')){this._=this.A-d;break a}this.C=this._;if(!m(this,b.g_CG,99,103)){this._=this.A-d;break a}if(!(!(this.I_pV<=this._)?false:true)){this._=this.A-d;break a}if(!c(this,'')){return false}}return true};b.prototype.r_vowel_suffix=b.prototype.Z;function A(a){var d;var e;var f;var h;var i;var j;d=a.A-a._;f=true;a:while(f===true){f=false;a.B=a._;if(!m(a,b.g_AEIO,97,242)){a._=a.A-d;break a}a.C=i=a._;if(!(!(a.I_pV<=i)?false:true)){a._=a.A-d;break a}if(!c(a,'')){return false}a.B=a._;if(!g(a,1,'i')){a._=a.A-d;break a}a.C=j=a._;if(!(!(a.I_pV<=j)?false:true)){a._=a.A-d;break a}if(!c(a,'')){return false}}e=a.A-a._;h=true;a:while(h===true){h=false;a.B=a._;if(!g(a,1,'h')){a._=a.A-e;break a}a.C=a._;if(!m(a,b.g_CG,99,103)){a._=a.A-e;break a}if(!(!(a.I_pV<=a._)?false:true)){a._=a.A-e;break a}if(!c(a,'')){return false}}return true};b.prototype.J=function(){var l;var i;var j;var k;var m;var n;var b;var c;var d;var e;var a;var f;var g;var h;var p;var q;var r;var s;var t;var u;var o;l=this._;b=true;a:while(b===true){b=false;if(!G(this)){break a}}p=this._=l;i=p;c=true;a:while(c===true){c=false;if(!H(this)){break a}}q=this._=i;this.D=q;s=this._=r=this.A;j=r-s;d=true;a:while(d===true){d=false;if(!J(this)){break a}}u=this._=(t=this.A)-j;k=t-u;e=true;a:while(e===true){e=false;a=true;b:while(a===true){a=false;m=this.A-this._;f=true;c:while(f===true){f=false;if(!F(this)){break c}break b}this._=this.A-m;if(!E(this)){break a}}}this._=this.A-k;g=true;a:while(g===true){g=false;if(!A(this)){break a}}o=this._=this.D;n=o;h=true;a:while(h===true){h=false;if(!I(this)){break a}}this._=n;return true};b.prototype.stem=b.prototype.J;b.prototype.N=function(a){return a instanceof b};b.prototype.equals=b.prototype.N;b.prototype.O=function(){var c;var a;var b;var d;c='ItalianStemmer';a=0;for(b=0;b<c.length;b++){d=c.charCodeAt(b);a=(a<<5)-a+d;a=a&a}return a|0};b.prototype.hashCode=b.prototype.O;b.serialVersionUID=1;e(b,'methodObject',function(){return new b});e(b,'a_0',function(){return[new a('',-1,7),new a('qu',0,6),new a('á',0,1),new a('é',0,2),new a('í',0,3),new a('ó',0,4),new a('ú',0,5)]});e(b,'a_1',function(){return[new a('',-1,3),new a('I',0,1),new a('U',0,2)]});e(b,'a_2',function(){return[new a('la',-1,-1),new a('cela',0,-1),new a('gliela',0,-1),new a('mela',0,-1),new a('tela',0,-1),new a('vela',0,-1),new a('le',-1,-1),new a('cele',6,-1),new a('gliele',6,-1),new a('mele',6,-1),new a('tele',6,-1),new a('vele',6,-1),new a('ne',-1,-1),new a('cene',12,-1),new a('gliene',12,-1),new a('mene',12,-1),new a('sene',12,-1),new a('tene',12,-1),new a('vene',12,-1),new a('ci',-1,-1),new a('li',-1,-1),new a('celi',20,-1),new a('glieli',20,-1),new a('meli',20,-1),new a('teli',20,-1),new a('veli',20,-1),new a('gli',20,-1),new a('mi',-1,-1),new a('si',-1,-1),new a('ti',-1,-1),new a('vi',-1,-1),new a('lo',-1,-1),new a('celo',31,-1),new a('glielo',31,-1),new a('melo',31,-1),new a('telo',31,-1),new a('velo',31,-1)]});e(b,'a_3',function(){return[new a('ando',-1,1),new a('endo',-1,1),new a('ar',-1,2),new a('er',-1,2),new a('ir',-1,2)]});e(b,'a_4',function(){return[new a('ic',-1,-1),new a('abil',-1,-1),new a('os',-1,-1),new a('iv',-1,1)]});e(b,'a_5',function(){return[new a('ic',-1,1),new a('abil',-1,1),new a('iv',-1,1)]});e(b,'a_6',function(){return[new a('ica',-1,1),new a('logia',-1,3),new a('osa',-1,1),new a('ista',-1,1),new a('iva',-1,9),new a('anza',-1,1),new a('enza',-1,5),new a('ice',-1,1),new a('atrice',7,1),new a('iche',-1,1),new a('logie',-1,3),new a('abile',-1,1),new a('ibile',-1,1),new a('usione',-1,4),new a('azione',-1,2),new a('uzione',-1,4),new a('atore',-1,2),new a('ose',-1,1),new a('ante',-1,1),new a('mente',-1,1),new a('amente',19,7),new a('iste',-1,1),new a('ive',-1,9),new a('anze',-1,1),new a('enze',-1,5),new a('ici',-1,1),new a('atrici',25,1),new a('ichi',-1,1),new a('abili',-1,1),new a('ibili',-1,1),new a('ismi',-1,1),new a('usioni',-1,4),new a('azioni',-1,2),new a('uzioni',-1,4),new a('atori',-1,2),new a('osi',-1,1),new a('anti',-1,1),new a('amenti',-1,6),new a('imenti',-1,6),new a('isti',-1,1),new a('ivi',-1,9),new a('ico',-1,1),new a('ismo',-1,1),new a('oso',-1,1),new a('amento',-1,6),new a('imento',-1,6),new a('ivo',-1,9),new a('ità',-1,8),new a('istà',-1,1),new a('istè',-1,1),new a('istì',-1,1)]});e(b,'a_7',function(){return[new a('isca',-1,1),new a('enda',-1,1),new a('ata',-1,1),new a('ita',-1,1),new a('uta',-1,1),new a('ava',-1,1),new a('eva',-1,1),new a('iva',-1,1),new a('erebbe',-1,1),new a('irebbe',-1,1),new a('isce',-1,1),new a('ende',-1,1),new a('are',-1,1),new a('ere',-1,1),new a('ire',-1,1),new a('asse',-1,1),new a('ate',-1,1),new a('avate',16,1),new a('evate',16,1),new a('ivate',16,1),new a('ete',-1,1),new a('erete',20,1),new a('irete',20,1),new a('ite',-1,1),new a('ereste',-1,1),new a('ireste',-1,1),new a('ute',-1,1),new a('erai',-1,1),new a('irai',-1,1),new a('isci',-1,1),new a('endi',-1,1),new a('erei',-1,1),new a('irei',-1,1),new a('assi',-1,1),new a('ati',-1,1),new a('iti',-1,1),new a('eresti',-1,1),new a('iresti',-1,1),new a('uti',-1,1),new a('avi',-1,1),new a('evi',-1,1),new a('ivi',-1,1),new a('isco',-1,1),new a('ando',-1,1),new a('endo',-1,1),new a('Yamo',-1,1),new a('iamo',-1,1),new a('avamo',-1,1),new a('evamo',-1,1),new a('ivamo',-1,1),new a('eremo',-1,1),new a('iremo',-1,1),new a('assimo',-1,1),new a('ammo',-1,1),new a('emmo',-1,1),new a('eremmo',54,1),new a('iremmo',54,1),new a('immo',-1,1),new a('ano',-1,1),new a('iscano',58,1),new a('avano',58,1),new a('evano',58,1),new a('ivano',58,1),new a('eranno',-1,1),new a('iranno',-1,1),new a('ono',-1,1),new a('iscono',65,1),new a('arono',65,1),new a('erono',65,1),new a('irono',65,1),new a('erebbero',-1,1),new a('irebbero',-1,1),new a('assero',-1,1),new a('essero',-1,1),new a('issero',-1,1),new a('ato',-1,1),new a('ito',-1,1),new a('uto',-1,1),new a('avo',-1,1),new a('evo',-1,1),new a('ivo',-1,1),new a('ar',-1,1),new a('ir',-1,1),new a('erà',-1,1),new a('irà',-1,1),new a('erò',-1,1),new a('irò',-1,1)]});e(b,'g_v',function(){return[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2,1]});e(b,'g_AEIO',function(){return[17,65,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2]});e(b,'g_CG',function(){return[17]});var q={'src/stemmer.jsx':{Stemmer:p},'src/italian-stemmer.jsx':{ItalianStemmer:b}}}(JSX)) +var Stemmer = JSX.require("src/italian-stemmer.jsx").ItalianStemmer; +""" + + +class SearchItalian(SearchLanguage): + lang = 'it' + language_name = 'Italian' + js_stemmer_rawcode = 'italian-stemmer.js' + js_stemmer_code = js_stemmer + stopwords = italian_stopwords + + def init(self, options: Dict) -> None: + self.stemmer = snowballstemmer.stemmer('italian') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/sphinx/search/ja.py b/sphinx/sphinx/search/ja.py new file mode 100644 index 0000000..d1f444b --- /dev/null +++ b/sphinx/sphinx/search/ja.py @@ -0,0 +1,542 @@ +""" + sphinx.search.ja + ~~~~~~~~~~~~~~~~ + + Japanese search language: includes routine to split words. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +# Python Version of TinySegmenter +# (http://chasen.org/~taku/software/TinySegmenter/) +# TinySegmenter is super compact Japanese tokenizer. +# +# TinySegmenter was originally developed by Taku Kudo <taku(at)chasen.org>. +# Python Version was developed by xnights <programming.magic(at)gmail.com>. +# For details, see http://programming-magic.com/?id=170 + +import os +import re +import sys +from typing import Any, Dict, List + +try: + import MeCab + native_module = True +except ImportError: + native_module = False + +try: + import janome.tokenizer + janome_module = True +except ImportError: + janome_module = False + +from sphinx.errors import SphinxError, ExtensionError +from sphinx.search import SearchLanguage +from sphinx.util import import_object + + +class BaseSplitter: + def __init__(self, options: Dict) -> None: + self.options = options + + def split(self, input: str) -> List[str]: + """ + :param str input: + :return: + :rtype: list[str] + """ + raise NotImplementedError + + +class MecabSplitter(BaseSplitter): + def __init__(self, options: Dict) -> None: + super().__init__(options) + self.ctypes_libmecab = None # type: Any + self.ctypes_mecab = None # type: Any + if not native_module: + self.init_ctypes(options) + else: + self.init_native(options) + self.dict_encode = options.get('dic_enc', 'utf-8') + + def split(self, input: str) -> List[str]: + if native_module: + result = self.native.parse(input) + else: + result = self.ctypes_libmecab.mecab_sparse_tostr( + self.ctypes_mecab, input.encode(self.dict_encode)) + return result.split(' ') + + def init_native(self, options: Dict) -> None: + param = '-Owakati' + dict = options.get('dict') + if dict: + param += ' -d %s' % dict + self.native = MeCab.Tagger(param) + + def init_ctypes(self, options: Dict) -> None: + import ctypes.util + + lib = options.get('lib') + + if lib is None: + if sys.platform.startswith('win'): + libname = 'libmecab.dll' + else: + libname = 'mecab' + libpath = ctypes.util.find_library(libname) + elif os.path.basename(lib) == lib: + libpath = ctypes.util.find_library(lib) + else: + libpath = None + if os.path.exists(lib): + libpath = lib + if libpath is None: + raise RuntimeError('MeCab dynamic library is not available') + + param = 'mecab -Owakati' + dict = options.get('dict') + if dict: + param += ' -d %s' % dict + + fs_enc = sys.getfilesystemencoding() or sys.getdefaultencoding() + + self.ctypes_libmecab = ctypes.CDLL(libpath) + self.ctypes_libmecab.mecab_new2.argtypes = (ctypes.c_char_p,) + self.ctypes_libmecab.mecab_new2.restype = ctypes.c_void_p + self.ctypes_libmecab.mecab_sparse_tostr.argtypes = (ctypes.c_void_p, ctypes.c_char_p) + self.ctypes_libmecab.mecab_sparse_tostr.restype = ctypes.c_char_p + self.ctypes_mecab = self.ctypes_libmecab.mecab_new2(param.encode(fs_enc)) + if self.ctypes_mecab is None: + raise SphinxError('mecab initialization failed') + + def __del__(self) -> None: + if self.ctypes_libmecab: + self.ctypes_libmecab.mecab_destroy(self.ctypes_mecab) + +MeCabBinder = MecabSplitter # keep backward compatibility until Sphinx-1.6 + + +class JanomeSplitter(BaseSplitter): + def __init__(self, options: Dict) -> None: + super().__init__(options) + self.user_dict = options.get('user_dic') + self.user_dict_enc = options.get('user_dic_enc', 'utf8') + self.init_tokenizer() + + def init_tokenizer(self) -> None: + if not janome_module: + raise RuntimeError('Janome is not available') + self.tokenizer = janome.tokenizer.Tokenizer(udic=self.user_dict, udic_enc=self.user_dict_enc) + + def split(self, input: str) -> List[str]: + result = ' '.join(token.surface for token in self.tokenizer.tokenize(input)) + return result.split(' ') + + +class DefaultSplitter(BaseSplitter): + patterns_ = {re.compile(pattern): value for pattern, value in { + '[一二三四五六七八九十百千万億兆]': 'M', + '[一-龠々〆ヵヶ]': 'H', + '[ぁ-ん]': 'I', + '[ァ-ヴーア-ン゙ー]': 'K', + '[a-zA-Za-zA-Z]': 'A', + '[0-90-9]': 'N', + }.items()} + BIAS__ = -332 + BC1__ = {'HH': 6, 'II': 2461, 'KH': 406, 'OH': -1378} + BC2__ = {'AA': -3267, 'AI': 2744, 'AN': -878, 'HH': -4070, 'HM': -1711, + 'HN': 4012, 'HO': 3761, 'IA': 1327, 'IH': -1184, 'II': -1332, + 'IK': 1721, 'IO': 5492, 'KI': 3831, 'KK': -8741, 'MH': -3132, + 'MK': 3334, 'OO': -2920} + BC3__ = {'HH': 996, 'HI': 626, 'HK': -721, 'HN': -1307, 'HO': -836, 'IH': -301, + 'KK': 2762, 'MK': 1079, 'MM': 4034, 'OA': -1652, 'OH': 266} + BP1__ = {'BB': 295, 'OB': 304, 'OO': -125, 'UB': 352} + BP2__ = {'BO': 60, 'OO': -1762} + BQ1__ = {'BHH': 1150, 'BHM': 1521, 'BII': -1158, 'BIM': 886, 'BMH': 1208, + 'BNH': 449, 'BOH': -91, 'BOO': -2597, 'OHI': 451, 'OIH': -296, + 'OKA': 1851, 'OKH': -1020, 'OKK': 904, 'OOO': 2965} + BQ2__ = {'BHH': 118, 'BHI': -1159, 'BHM': 466, 'BIH': -919, 'BKK': -1720, + 'BKO': 864, 'OHH': -1139, 'OHM': -181, 'OIH': 153, 'UHI': -1146} + BQ3__ = {'BHH': -792, 'BHI': 2664, 'BII': -299, 'BKI': 419, 'BMH': 937, + 'BMM': 8335, 'BNN': 998, 'BOH': 775, 'OHH': 2174, 'OHM': 439, 'OII': 280, + 'OKH': 1798, 'OKI': -793, 'OKO': -2242, 'OMH': -2402, 'OOO': 11699} + BQ4__ = {'BHH': -3895, 'BIH': 3761, 'BII': -4654, 'BIK': 1348, 'BKK': -1806, + 'BMI': -3385, 'BOO': -12396, 'OAH': 926, 'OHH': 266, 'OHK': -2036, + 'ONN': -973} + BW1__ = {',と': 660, ',同': 727, 'B1あ': 1404, 'B1同': 542, '、と': 660, + '、同': 727, '」と': 1682, 'あっ': 1505, 'いう': 1743, 'いっ': -2055, + 'いる': 672, 'うし': -4817, 'うん': 665, 'から': 3472, 'がら': 600, + 'こう': -790, 'こと': 2083, 'こん': -1262, 'さら': -4143, 'さん': 4573, + 'した': 2641, 'して': 1104, 'すで': -3399, 'そこ': 1977, 'それ': -871, + 'たち': 1122, 'ため': 601, 'った': 3463, 'つい': -802, 'てい': 805, + 'てき': 1249, 'でき': 1127, 'です': 3445, 'では': 844, 'とい': -4915, + 'とみ': 1922, 'どこ': 3887, 'ない': 5713, 'なっ': 3015, 'など': 7379, + 'なん': -1113, 'にし': 2468, 'には': 1498, 'にも': 1671, 'に対': -912, + 'の一': -501, 'の中': 741, 'ませ': 2448, 'まで': 1711, 'まま': 2600, + 'まる': -2155, 'やむ': -1947, 'よっ': -2565, 'れた': 2369, 'れで': -913, + 'をし': 1860, 'を見': 731, '亡く': -1886, '京都': 2558, '取り': -2784, + '大き': -2604, '大阪': 1497, '平方': -2314, '引き': -1336, '日本': -195, + '本当': -2423, '毎日': -2113, '目指': -724, 'B1あ': 1404, 'B1同': 542, + '」と': 1682} + BW2__ = {'..': -11822, '11': -669, '――': -5730, '−−': -13175, 'いう': -1609, + 'うか': 2490, 'かし': -1350, 'かも': -602, 'から': -7194, 'かれ': 4612, + 'がい': 853, 'がら': -3198, 'きた': 1941, 'くな': -1597, 'こと': -8392, + 'この': -4193, 'させ': 4533, 'され': 13168, 'さん': -3977, 'しい': -1819, + 'しか': -545, 'した': 5078, 'して': 972, 'しな': 939, 'その': -3744, + 'たい': -1253, 'たた': -662, 'ただ': -3857, 'たち': -786, 'たと': 1224, + 'たは': -939, 'った': 4589, 'って': 1647, 'っと': -2094, 'てい': 6144, + 'てき': 3640, 'てく': 2551, 'ては': -3110, 'ても': -3065, 'でい': 2666, + 'でき': -1528, 'でし': -3828, 'です': -4761, 'でも': -4203, 'とい': 1890, + 'とこ': -1746, 'とと': -2279, 'との': 720, 'とみ': 5168, 'とも': -3941, + 'ない': -2488, 'なが': -1313, 'など': -6509, 'なの': 2614, 'なん': 3099, + 'にお': -1615, 'にし': 2748, 'にな': 2454, 'によ': -7236, 'に対': -14943, + 'に従': -4688, 'に関': -11388, 'のか': 2093, 'ので': -7059, 'のに': -6041, + 'のの': -6125, 'はい': 1073, 'はが': -1033, 'はず': -2532, 'ばれ': 1813, + 'まし': -1316, 'まで': -6621, 'まれ': 5409, 'めて': -3153, 'もい': 2230, + 'もの': -10713, 'らか': -944, 'らし': -1611, 'らに': -1897, 'りし': 651, + 'りま': 1620, 'れた': 4270, 'れて': 849, 'れば': 4114, 'ろう': 6067, + 'われ': 7901, 'を通': -11877, 'んだ': 728, 'んな': -4115, '一人': 602, + '一方': -1375, '一日': 970, '一部': -1051, '上が': -4479, '会社': -1116, + '出て': 2163, '分の': -7758, '同党': 970, '同日': -913, '大阪': -2471, + '委員': -1250, '少な': -1050, '年度': -8669, '年間': -1626, '府県': -2363, + '手権': -1982, '新聞': -4066, '日新': -722, '日本': -7068, '日米': 3372, + '曜日': -601, '朝鮮': -2355, '本人': -2697, '東京': -1543, '然と': -1384, + '社会': -1276, '立て': -990, '第に': -1612, '米国': -4268, '11': -669} + BW3__ = {'あた': -2194, 'あり': 719, 'ある': 3846, 'い.': -1185, 'い。': -1185, + 'いい': 5308, 'いえ': 2079, 'いく': 3029, 'いた': 2056, 'いっ': 1883, + 'いる': 5600, 'いわ': 1527, 'うち': 1117, 'うと': 4798, 'えと': 1454, + 'か.': 2857, 'か。': 2857, 'かけ': -743, 'かっ': -4098, 'かに': -669, + 'から': 6520, 'かり': -2670, 'が,': 1816, 'が、': 1816, 'がき': -4855, + 'がけ': -1127, 'がっ': -913, 'がら': -4977, 'がり': -2064, 'きた': 1645, + 'けど': 1374, 'こと': 7397, 'この': 1542, 'ころ': -2757, 'さい': -714, + 'さを': 976, 'し,': 1557, 'し、': 1557, 'しい': -3714, 'した': 3562, + 'して': 1449, 'しな': 2608, 'しま': 1200, 'す.': -1310, 'す。': -1310, + 'する': 6521, 'ず,': 3426, 'ず、': 3426, 'ずに': 841, 'そう': 428, + 'た.': 8875, 'た。': 8875, 'たい': -594, 'たの': 812, 'たり': -1183, + 'たる': -853, 'だ.': 4098, 'だ。': 4098, 'だっ': 1004, 'った': -4748, + 'って': 300, 'てい': 6240, 'てお': 855, 'ても': 302, 'です': 1437, + 'でに': -1482, 'では': 2295, 'とう': -1387, 'とし': 2266, 'との': 541, + 'とも': -3543, 'どう': 4664, 'ない': 1796, 'なく': -903, 'など': 2135, + 'に,': -1021, 'に、': -1021, 'にし': 1771, 'にな': 1906, 'には': 2644, + 'の,': -724, 'の、': -724, 'の子': -1000, 'は,': 1337, 'は、': 1337, + 'べき': 2181, 'まし': 1113, 'ます': 6943, 'まっ': -1549, 'まで': 6154, + 'まれ': -793, 'らし': 1479, 'られ': 6820, 'るる': 3818, 'れ,': 854, + 'れ、': 854, 'れた': 1850, 'れて': 1375, 'れば': -3246, 'れる': 1091, + 'われ': -605, 'んだ': 606, 'んで': 798, 'カ月': 990, '会議': 860, + '入り': 1232, '大会': 2217, '始め': 1681, '市': 965, '新聞': -5055, + '日,': 974, '日、': 974, '社会': 2024, 'カ月': 990} + TC1__ = {'AAA': 1093, 'HHH': 1029, 'HHM': 580, 'HII': 998, 'HOH': -390, + 'HOM': -331, 'IHI': 1169, 'IOH': -142, 'IOI': -1015, 'IOM': 467, + 'MMH': 187, 'OOI': -1832} + TC2__ = {'HHO': 2088, 'HII': -1023, 'HMM': -1154, 'IHI': -1965, + 'KKH': 703, 'OII': -2649} + TC3__ = {'AAA': -294, 'HHH': 346, 'HHI': -341, 'HII': -1088, 'HIK': 731, + 'HOH': -1486, 'IHH': 128, 'IHI': -3041, 'IHO': -1935, 'IIH': -825, + 'IIM': -1035, 'IOI': -542, 'KHH': -1216, 'KKA': 491, 'KKH': -1217, + 'KOK': -1009, 'MHH': -2694, 'MHM': -457, 'MHO': 123, 'MMH': -471, + 'NNH': -1689, 'NNO': 662, 'OHO': -3393} + TC4__ = {'HHH': -203, 'HHI': 1344, 'HHK': 365, 'HHM': -122, 'HHN': 182, + 'HHO': 669, 'HIH': 804, 'HII': 679, 'HOH': 446, 'IHH': 695, + 'IHO': -2324, 'IIH': 321, 'III': 1497, 'IIO': 656, 'IOO': 54, + 'KAK': 4845, 'KKA': 3386, 'KKK': 3065, 'MHH': -405, 'MHI': 201, + 'MMH': -241, 'MMM': 661, 'MOM': 841} + TQ1__ = {'BHHH': -227, 'BHHI': 316, 'BHIH': -132, 'BIHH': 60, 'BIII': 1595, + 'BNHH': -744, 'BOHH': 225, 'BOOO': -908, 'OAKK': 482, 'OHHH': 281, + 'OHIH': 249, 'OIHI': 200, 'OIIH': -68} + TQ2__ = {'BIHH': -1401, 'BIII': -1033, 'BKAK': -543, 'BOOO': -5591} + TQ3__ = {'BHHH': 478, 'BHHM': -1073, 'BHIH': 222, 'BHII': -504, 'BIIH': -116, + 'BIII': -105, 'BMHI': -863, 'BMHM': -464, 'BOMH': 620, 'OHHH': 346, + 'OHHI': 1729, 'OHII': 997, 'OHMH': 481, 'OIHH': 623, 'OIIH': 1344, + 'OKAK': 2792, 'OKHH': 587, 'OKKA': 679, 'OOHH': 110, 'OOII': -685} + TQ4__ = {'BHHH': -721, 'BHHM': -3604, 'BHII': -966, 'BIIH': -607, 'BIII': -2181, + 'OAAA': -2763, 'OAKK': 180, 'OHHH': -294, 'OHHI': 2446, 'OHHO': 480, + 'OHIH': -1573, 'OIHH': 1935, 'OIHI': -493, 'OIIH': 626, 'OIII': -4007, + 'OKAK': -8156} + TW1__ = {'につい': -4681, '東京都': 2026} + TW2__ = {'ある程': -2049, 'いった': -1256, 'ころが': -2434, 'しょう': 3873, + 'その後': -4430, 'だって': -1049, 'ていた': 1833, 'として': -4657, + 'ともに': -4517, 'もので': 1882, '一気に': -792, '初めて': -1512, + '同時に': -8097, '大きな': -1255, '対して': -2721, '社会党': -3216} + TW3__ = {'いただ': -1734, 'してい': 1314, 'として': -4314, 'につい': -5483, + 'にとっ': -5989, 'に当た': -6247, 'ので,': -727, 'ので、': -727, + 'のもの': -600, 'れから': -3752, '十二月': -2287} + TW4__ = {'いう.': 8576, 'いう。': 8576, 'からな': -2348, 'してい': 2958, + 'たが,': 1516, 'たが、': 1516, 'ている': 1538, 'という': 1349, + 'ました': 5543, 'ません': 1097, 'ようと': -4258, 'よると': 5865} + UC1__ = {'A': 484, 'K': 93, 'M': 645, 'O': -505} + UC2__ = {'A': 819, 'H': 1059, 'I': 409, 'M': 3987, 'N': 5775, 'O': 646} + UC3__ = {'A': -1370, 'I': 2311} + UC4__ = {'A': -2643, 'H': 1809, 'I': -1032, 'K': -3450, 'M': 3565, + 'N': 3876, 'O': 6646} + UC5__ = {'H': 313, 'I': -1238, 'K': -799, 'M': 539, 'O': -831} + UC6__ = {'H': -506, 'I': -253, 'K': 87, 'M': 247, 'O': -387} + UP1__ = {'O': -214} + UP2__ = {'B': 69, 'O': 935} + UP3__ = {'B': 189} + UQ1__ = {'BH': 21, 'BI': -12, 'BK': -99, 'BN': 142, 'BO': -56, 'OH': -95, + 'OI': 477, 'OK': 410, 'OO': -2422} + UQ2__ = {'BH': 216, 'BI': 113, 'OK': 1759} + UQ3__ = {'BA': -479, 'BH': 42, 'BI': 1913, 'BK': -7198, 'BM': 3160, + 'BN': 6427, 'BO': 14761, 'OI': -827, 'ON': -3212} + UW1__ = {',': 156, '、': 156, '「': -463, 'あ': -941, 'う': -127, 'が': -553, + 'き': 121, 'こ': 505, 'で': -201, 'と': -547, 'ど': -123, 'に': -789, + 'の': -185, 'は': -847, 'も': -466, 'や': -470, 'よ': 182, 'ら': -292, + 'り': 208, 'れ': 169, 'を': -446, 'ん': -137, '・': -135, '主': -402, + '京': -268, '区': -912, '午': 871, '国': -460, '大': 561, '委': 729, + '市': -411, '日': -141, '理': 361, '生': -408, '県': -386, '都': -718, + '「': -463, '・': -135} + UW2__ = {',': -829, '、': -829, '〇': 892, '「': -645, '」': 3145, 'あ': -538, + 'い': 505, 'う': 134, 'お': -502, 'か': 1454, 'が': -856, 'く': -412, + 'こ': 1141, 'さ': 878, 'ざ': 540, 'し': 1529, 'す': -675, 'せ': 300, + 'そ': -1011, 'た': 188, 'だ': 1837, 'つ': -949, 'て': -291, 'で': -268, + 'と': -981, 'ど': 1273, 'な': 1063, 'に': -1764, 'の': 130, 'は': -409, + 'ひ': -1273, 'べ': 1261, 'ま': 600, 'も': -1263, 'や': -402, 'よ': 1639, + 'り': -579, 'る': -694, 'れ': 571, 'を': -2516, 'ん': 2095, 'ア': -587, + 'カ': 306, 'キ': 568, 'ッ': 831, '三': -758, '不': -2150, '世': -302, + '中': -968, '主': -861, '事': 492, '人': -123, '会': 978, '保': 362, + '入': 548, '初': -3025, '副': -1566, '北': -3414, '区': -422, '大': -1769, + '天': -865, '太': -483, '子': -1519, '学': 760, '実': 1023, '小': -2009, + '市': -813, '年': -1060, '強': 1067, '手': -1519, '揺': -1033, '政': 1522, + '文': -1355, '新': -1682, '日': -1815, '明': -1462, '最': -630, '朝': -1843, + '本': -1650, '東': -931, '果': -665, '次': -2378, '民': -180, '気': -1740, + '理': 752, '発': 529, '目': -1584, '相': -242, '県': -1165, '立': -763, + '第': 810, '米': 509, '自': -1353, '行': 838, '西': -744, '見': -3874, + '調': 1010, '議': 1198, '込': 3041, '開': 1758, '間': -1257, '「': -645, + '」': 3145, 'ッ': 831, 'ア': -587, 'カ': 306, 'キ': 568} + UW3__ = {',': 4889, '1': -800, '−': -1723, '、': 4889, '々': -2311, '〇': 5827, + '」': 2670, '〓': -3573, 'あ': -2696, 'い': 1006, 'う': 2342, 'え': 1983, + 'お': -4864, 'か': -1163, 'が': 3271, 'く': 1004, 'け': 388, 'げ': 401, + 'こ': -3552, 'ご': -3116, 'さ': -1058, 'し': -395, 'す': 584, 'せ': 3685, + 'そ': -5228, 'た': 842, 'ち': -521, 'っ': -1444, 'つ': -1081, 'て': 6167, + 'で': 2318, 'と': 1691, 'ど': -899, 'な': -2788, 'に': 2745, 'の': 4056, + 'は': 4555, 'ひ': -2171, 'ふ': -1798, 'へ': 1199, 'ほ': -5516, 'ま': -4384, + 'み': -120, 'め': 1205, 'も': 2323, 'や': -788, 'よ': -202, 'ら': 727, + 'り': 649, 'る': 5905, 'れ': 2773, 'わ': -1207, 'を': 6620, 'ん': -518, + 'ア': 551, 'グ': 1319, 'ス': 874, 'ッ': -1350, 'ト': 521, 'ム': 1109, + 'ル': 1591, 'ロ': 2201, 'ン': 278, '・': -3794, '一': -1619, '下': -1759, + '世': -2087, '両': 3815, '中': 653, '主': -758, '予': -1193, '二': 974, + '人': 2742, '今': 792, '他': 1889, '以': -1368, '低': 811, '何': 4265, + '作': -361, '保': -2439, '元': 4858, '党': 3593, '全': 1574, '公': -3030, + '六': 755, '共': -1880, '円': 5807, '再': 3095, '分': 457, '初': 2475, + '別': 1129, '前': 2286, '副': 4437, '力': 365, '動': -949, '務': -1872, + '化': 1327, '北': -1038, '区': 4646, '千': -2309, '午': -783, '協': -1006, + '口': 483, '右': 1233, '各': 3588, '合': -241, '同': 3906, '和': -837, + '員': 4513, '国': 642, '型': 1389, '場': 1219, '外': -241, '妻': 2016, + '学': -1356, '安': -423, '実': -1008, '家': 1078, '小': -513, '少': -3102, + '州': 1155, '市': 3197, '平': -1804, '年': 2416, '広': -1030, '府': 1605, + '度': 1452, '建': -2352, '当': -3885, '得': 1905, '思': -1291, '性': 1822, + '戸': -488, '指': -3973, '政': -2013, '教': -1479, '数': 3222, '文': -1489, + '新': 1764, '日': 2099, '旧': 5792, '昨': -661, '時': -1248, '曜': -951, + '最': -937, '月': 4125, '期': 360, '李': 3094, '村': 364, '東': -805, + '核': 5156, '森': 2438, '業': 484, '氏': 2613, '民': -1694, '決': -1073, + '法': 1868, '海': -495, '無': 979, '物': 461, '特': -3850, '生': -273, + '用': 914, '町': 1215, '的': 7313, '直': -1835, '省': 792, '県': 6293, + '知': -1528, '私': 4231, '税': 401, '立': -960, '第': 1201, '米': 7767, + '系': 3066, '約': 3663, '級': 1384, '統': -4229, '総': 1163, '線': 1255, + '者': 6457, '能': 725, '自': -2869, '英': 785, '見': 1044, '調': -562, + '財': -733, '費': 1777, '車': 1835, '軍': 1375, '込': -1504, '通': -1136, + '選': -681, '郎': 1026, '郡': 4404, '部': 1200, '金': 2163, '長': 421, + '開': -1432, '間': 1302, '関': -1282, '雨': 2009, '電': -1045, '非': 2066, + '駅': 1620, '1': -800, '」': 2670, '・': -3794, 'ッ': -1350, 'ア': 551, + 'グ': 1319, 'ス': 874, 'ト': 521, 'ム': 1109, 'ル': 1591, 'ロ': 2201, 'ン': 278} + UW4__ = {',': 3930, '.': 3508, '―': -4841, '、': 3930, '。': 3508, '〇': 4999, + '「': 1895, '」': 3798, '〓': -5156, 'あ': 4752, 'い': -3435, 'う': -640, + 'え': -2514, 'お': 2405, 'か': 530, 'が': 6006, 'き': -4482, 'ぎ': -3821, + 'く': -3788, 'け': -4376, 'げ': -4734, 'こ': 2255, 'ご': 1979, 'さ': 2864, + 'し': -843, 'じ': -2506, 'す': -731, 'ず': 1251, 'せ': 181, 'そ': 4091, + 'た': 5034, 'だ': 5408, 'ち': -3654, 'っ': -5882, 'つ': -1659, 'て': 3994, + 'で': 7410, 'と': 4547, 'な': 5433, 'に': 6499, 'ぬ': 1853, 'ね': 1413, + 'の': 7396, 'は': 8578, 'ば': 1940, 'ひ': 4249, 'び': -4134, 'ふ': 1345, + 'へ': 6665, 'べ': -744, 'ほ': 1464, 'ま': 1051, 'み': -2082, 'む': -882, + 'め': -5046, 'も': 4169, 'ゃ': -2666, 'や': 2795, 'ょ': -1544, 'よ': 3351, + 'ら': -2922, 'り': -9726, 'る': -14896, 'れ': -2613, 'ろ': -4570, + 'わ': -1783, 'を': 13150, 'ん': -2352, 'カ': 2145, 'コ': 1789, 'セ': 1287, + 'ッ': -724, 'ト': -403, 'メ': -1635, 'ラ': -881, 'リ': -541, 'ル': -856, + 'ン': -3637, '・': -4371, 'ー': -11870, '一': -2069, '中': 2210, '予': 782, + '事': -190, '井': -1768, '人': 1036, '以': 544, '会': 950, '体': -1286, + '作': 530, '側': 4292, '先': 601, '党': -2006, '共': -1212, '内': 584, + '円': 788, '初': 1347, '前': 1623, '副': 3879, '力': -302, '動': -740, + '務': -2715, '化': 776, '区': 4517, '協': 1013, '参': 1555, '合': -1834, + '和': -681, '員': -910, '器': -851, '回': 1500, '国': -619, '園': -1200, + '地': 866, '場': -1410, '塁': -2094, '士': -1413, '多': 1067, '大': 571, + '子': -4802, '学': -1397, '定': -1057, '寺': -809, '小': 1910, '屋': -1328, + '山': -1500, '島': -2056, '川': -2667, '市': 2771, '年': 374, '庁': -4556, + '後': 456, '性': 553, '感': 916, '所': -1566, '支': 856, '改': 787, + '政': 2182, '教': 704, '文': 522, '方': -856, '日': 1798, '時': 1829, + '最': 845, '月': -9066, '木': -485, '来': -442, '校': -360, '業': -1043, + '氏': 5388, '民': -2716, '気': -910, '沢': -939, '済': -543, '物': -735, + '率': 672, '球': -1267, '生': -1286, '産': -1101, '田': -2900, '町': 1826, + '的': 2586, '目': 922, '省': -3485, '県': 2997, '空': -867, '立': -2112, + '第': 788, '米': 2937, '系': 786, '約': 2171, '経': 1146, '統': -1169, + '総': 940, '線': -994, '署': 749, '者': 2145, '能': -730, '般': -852, + '行': -792, '規': 792, '警': -1184, '議': -244, '谷': -1000, '賞': 730, + '車': -1481, '軍': 1158, '輪': -1433, '込': -3370, '近': 929, '道': -1291, + '選': 2596, '郎': -4866, '都': 1192, '野': -1100, '銀': -2213, '長': 357, + '間': -2344, '院': -2297, '際': -2604, '電': -878, '領': -1659, '題': -792, + '館': -1984, '首': 1749, '高': 2120, '「': 1895, '」': 3798, '・': -4371, + 'ッ': -724, 'ー': -11870, 'カ': 2145, 'コ': 1789, 'セ': 1287, 'ト': -403, + 'メ': -1635, 'ラ': -881, 'リ': -541, 'ル': -856, 'ン': -3637} + UW5__ = {',': 465, '.': -299, '1': -514, 'E2': -32768, ']': -2762, '、': 465, + '。': -299, '「': 363, 'あ': 1655, 'い': 331, 'う': -503, 'え': 1199, + 'お': 527, 'か': 647, 'が': -421, 'き': 1624, 'ぎ': 1971, 'く': 312, + 'げ': -983, 'さ': -1537, 'し': -1371, 'す': -852, 'だ': -1186, 'ち': 1093, + 'っ': 52, 'つ': 921, 'て': -18, 'で': -850, 'と': -127, 'ど': 1682, + 'な': -787, 'に': -1224, 'の': -635, 'は': -578, 'べ': 1001, 'み': 502, + 'め': 865, 'ゃ': 3350, 'ょ': 854, 'り': -208, 'る': 429, 'れ': 504, + 'わ': 419, 'を': -1264, 'ん': 327, 'イ': 241, 'ル': 451, 'ン': -343, + '中': -871, '京': 722, '会': -1153, '党': -654, '務': 3519, '区': -901, + '告': 848, '員': 2104, '大': -1296, '学': -548, '定': 1785, '嵐': -1304, + '市': -2991, '席': 921, '年': 1763, '思': 872, '所': -814, '挙': 1618, + '新': -1682, '日': 218, '月': -4353, '査': 932, '格': 1356, '機': -1508, + '氏': -1347, '田': 240, '町': -3912, '的': -3149, '相': 1319, '省': -1052, + '県': -4003, '研': -997, '社': -278, '空': -813, '統': 1955, '者': -2233, + '表': 663, '語': -1073, '議': 1219, '選': -1018, '郎': -368, '長': 786, + '間': 1191, '題': 2368, '館': -689, '1': -514, 'E2': -32768, '「': 363, + 'イ': 241, 'ル': 451, 'ン': -343} + UW6__ = {',': 227, '.': 808, '1': -270, 'E1': 306, '、': 227, '。': 808, + 'あ': -307, 'う': 189, 'か': 241, 'が': -73, 'く': -121, 'こ': -200, + 'じ': 1782, 'す': 383, 'た': -428, 'っ': 573, 'て': -1014, 'で': 101, + 'と': -105, 'な': -253, 'に': -149, 'の': -417, 'は': -236, 'も': -206, + 'り': 187, 'る': -135, 'を': 195, 'ル': -673, 'ン': -496, '一': -277, + '中': 201, '件': -800, '会': 624, '前': 302, '区': 1792, '員': -1212, + '委': 798, '学': -960, '市': 887, '広': -695, '後': 535, '業': -697, + '相': 753, '社': -507, '福': 974, '空': -822, '者': 1811, '連': 463, + '郎': 1082, '1': -270, 'E1': 306, 'ル': -673, 'ン': -496} + + # ctype_ + def ctype_(self, char: str) -> str: + for pattern, value in self.patterns_.items(): + if pattern.match(char): + return value + return 'O' + + # ts_ + def ts_(self, dict: Dict[str, int], key: str) -> int: + if key in dict: + return dict[key] + return 0 + + # segment + def split(self, input: str) -> List[str]: + if not input: + return [] + + result = [] + seg = ['B3', 'B2', 'B1'] + ctype = ['O', 'O', 'O'] + for t in input: + seg.append(t) + ctype.append(self.ctype_(t)) + seg.append('E1') + seg.append('E2') + seg.append('E3') + ctype.append('O') + ctype.append('O') + ctype.append('O') + word = seg[3] + p1 = 'U' + p2 = 'U' + p3 = 'U' + + for i in range(4, len(seg) - 3): + score = self.BIAS__ + w1 = seg[i-3] + w2 = seg[i-2] + w3 = seg[i-1] + w4 = seg[i] + w5 = seg[i+1] + w6 = seg[i+2] + c1 = ctype[i-3] + c2 = ctype[i-2] + c3 = ctype[i-1] + c4 = ctype[i] + c5 = ctype[i+1] + c6 = ctype[i+2] + score += self.ts_(self.UP1__, p1) + score += self.ts_(self.UP2__, p2) + score += self.ts_(self.UP3__, p3) + score += self.ts_(self.BP1__, p1 + p2) + score += self.ts_(self.BP2__, p2 + p3) + score += self.ts_(self.UW1__, w1) + score += self.ts_(self.UW2__, w2) + score += self.ts_(self.UW3__, w3) + score += self.ts_(self.UW4__, w4) + score += self.ts_(self.UW5__, w5) + score += self.ts_(self.UW6__, w6) + score += self.ts_(self.BW1__, w2 + w3) + score += self.ts_(self.BW2__, w3 + w4) + score += self.ts_(self.BW3__, w4 + w5) + score += self.ts_(self.TW1__, w1 + w2 + w3) + score += self.ts_(self.TW2__, w2 + w3 + w4) + score += self.ts_(self.TW3__, w3 + w4 + w5) + score += self.ts_(self.TW4__, w4 + w5 + w6) + score += self.ts_(self.UC1__, c1) + score += self.ts_(self.UC2__, c2) + score += self.ts_(self.UC3__, c3) + score += self.ts_(self.UC4__, c4) + score += self.ts_(self.UC5__, c5) + score += self.ts_(self.UC6__, c6) + score += self.ts_(self.BC1__, c2 + c3) + score += self.ts_(self.BC2__, c3 + c4) + score += self.ts_(self.BC3__, c4 + c5) + score += self.ts_(self.TC1__, c1 + c2 + c3) + score += self.ts_(self.TC2__, c2 + c3 + c4) + score += self.ts_(self.TC3__, c3 + c4 + c5) + score += self.ts_(self.TC4__, c4 + c5 + c6) +# score += self.ts_(self.TC5__, c4 + c5 + c6) + score += self.ts_(self.UQ1__, p1 + c1) + score += self.ts_(self.UQ2__, p2 + c2) + score += self.ts_(self.UQ1__, p3 + c3) + score += self.ts_(self.BQ1__, p2 + c2 + c3) + score += self.ts_(self.BQ2__, p2 + c3 + c4) + score += self.ts_(self.BQ3__, p3 + c2 + c3) + score += self.ts_(self.BQ4__, p3 + c3 + c4) + score += self.ts_(self.TQ1__, p2 + c1 + c2 + c3) + score += self.ts_(self.TQ2__, p2 + c2 + c3 + c4) + score += self.ts_(self.TQ3__, p3 + c1 + c2 + c3) + score += self.ts_(self.TQ4__, p3 + c2 + c3 + c4) + p = 'O' + if score > 0: + result.append(word.strip()) + word = '' + p = 'B' + p1 = p2 + p2 = p3 + p3 = p + word += seg[i] + + result.append(word.strip()) + return result + + +TinySegmenter = DefaultSplitter # keep backward compatibility until Sphinx-1.6 + + +class SearchJapanese(SearchLanguage): + """ + Japanese search implementation: uses no stemmer, but word splitting is quite + complicated. + """ + lang = 'ja' + language_name = 'Japanese' + + def init(self, options: Dict) -> None: + dotted_path = options.get('type', 'sphinx.search.ja.DefaultSplitter') + try: + self.splitter = import_object(dotted_path)(options) + except ExtensionError: + raise ExtensionError("Splitter module %r can't be imported" % + dotted_path) + + def split(self, input: str) -> List[str]: + return self.splitter.split(input) + + def word_filter(self, stemmed_word: str) -> bool: + return len(stemmed_word) > 1 + + def stem(self, word: str) -> str: + return word diff --git a/sphinx/sphinx/search/jssplitter.py b/sphinx/sphinx/search/jssplitter.py new file mode 100644 index 0000000..9455795 --- /dev/null +++ b/sphinx/sphinx/search/jssplitter.py @@ -0,0 +1,109 @@ +""" + sphinx.search.jssplitter + ~~~~~~~~~~~~~~~~~~~~~~~~ + + Provides Python compatible word splitter to JavaScript + + DO NOT EDIT. This is generated by utils/jssplitter_generator.py + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +splitter_code = """ + +var splitChars = (function() { + var result = {}; + var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648, + 1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702, + 2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971, + 2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345, + 3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761, + 3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823, + 4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125, + 8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695, + 11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587, + 43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141]; + var i, j, start, end; + for (i = 0; i < singles.length; i++) { + result[singles[i]] = true; + } + var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709], + [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161], + [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568], + [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807], + [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047], + [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383], + [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450], + [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547], + [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673], + [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820], + [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946], + [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023], + [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173], + [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332], + [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481], + [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718], + [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791], + [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095], + [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205], + [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687], + [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968], + [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869], + [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102], + [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271], + [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592], + [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822], + [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167], + [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959], + [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143], + [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318], + [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483], + [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101], + [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567], + [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292], + [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444], + [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783], + [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311], + [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511], + [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774], + [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071], + [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263], + [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519], + [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647], + [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967], + [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295], + [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274], + [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007], + [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381], + [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]]; + for (i = 0; i < ranges.length; i++) { + start = ranges[i][0]; + end = ranges[i][1]; + for (j = start; j <= end; j++) { + result[j] = true; + } + } + return result; +})(); + +function splitQuery(query) { + var result = []; + var start = -1; + for (var i = 0; i < query.length; i++) { + if (splitChars[query.charCodeAt(i)]) { + if (start !== -1) { + result.push(query.slice(start, i)); + start = -1; + } + } else if (start === -1) { + start = i; + } + } + if (start !== -1) { + result.push(query.slice(start)); + } + return result; +} + +""" diff --git a/sphinx/sphinx/search/nl.py b/sphinx/sphinx/search/nl.py new file mode 100644 index 0000000..0e2e2ef --- /dev/null +++ b/sphinx/sphinx/search/nl.py @@ -0,0 +1,140 @@ +""" + sphinx.search.nl + ~~~~~~~~~~~~~~~~ + + Dutch search language: includes the JS porter stemmer. + + :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + + +dutch_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/dutch/stop.txt +de | the +en | and +van | of, from +ik | I, the ego +te | (1) chez, at etc, (2) to, (3) too +dat | that, which +die | that, those, who, which +in | in, inside +een | a, an, one +hij | he +het | the, it +niet | not, nothing, naught +zijn | (1) to be, being, (2) his, one's, its +is | is +was | (1) was, past tense of all persons sing. of 'zijn' (to be) (2) wax, (3) the washing, (4) rise of river +op | on, upon, at, in, up, used up +aan | on, upon, to (as dative) +met | with, by +als | like, such as, when +voor | (1) before, in front of, (2) furrow +had | had, past tense all persons sing. of 'hebben' (have) +er | there +maar | but, only +om | round, about, for etc +hem | him +dan | then +zou | should/would, past tense all persons sing. of 'zullen' +of | or, whether, if +wat | what, something, anything +mijn | possessive and noun 'mine' +men | people, 'one' +dit | this +zo | so, thus, in this way +door | through by +over | over, across +ze | she, her, they, them +zich | oneself +bij | (1) a bee, (2) by, near, at +ook | also, too +tot | till, until +je | you +mij | me +uit | out of, from +der | Old Dutch form of 'van der' still found in surnames +daar | (1) there, (2) because +haar | (1) her, their, them, (2) hair +naar | (1) unpleasant, unwell etc, (2) towards, (3) as +heb | present first person sing. of 'to have' +hoe | how, why +heeft | present third person sing. of 'to have' +hebben | 'to have' and various parts thereof +deze | this +u | you +want | (1) for, (2) mitten, (3) rigging +nog | yet, still +zal | 'shall', first and third person sing. of verb 'zullen' (will) +me | me +zij | she, they +nu | now +ge | 'thou', still used in Belgium and south Netherlands +geen | none +omdat | because +iets | something, somewhat +worden | to become, grow, get +toch | yet, still +al | all, every, each +waren | (1) 'were' (2) to wander, (3) wares, (3) +veel | much, many +meer | (1) more, (2) lake +doen | to do, to make +toen | then, when +moet | noun 'spot/mote' and present form of 'to must' +ben | (1) am, (2) 'are' in interrogative second person singular of 'to be' +zonder | without +kan | noun 'can' and present form of 'to be able' +hun | their, them +dus | so, consequently +alles | all, everything, anything +onder | under, beneath +ja | yes, of course +eens | once, one day +hier | here +wie | who +werd | imperfect third person sing. of 'become' +altijd | always +doch | yet, but etc +wordt | present third person sing. of 'become' +wezen | (1) to be, (2) 'been' as in 'been fishing', (3) orphans +kunnen | to be able +ons | us/our +zelf | self +tegen | against, towards, at +na | after, near +reeds | already +wil | (1) present tense of 'want', (2) 'will', noun, (3) fender +kon | could; past tense of 'to be able' +niets | nothing +uw | your +iemand | somebody +geweest | been; past participle of 'be' +andere | other +''') + +js_stemmer = """ +var JSX={};(function(m){function n(b,e){var a=function(){};a.prototype=e.prototype;var c=new a;for(var d in b){b[d].prototype=c}}function L(c,b){for(var a in b.prototype)if(b.prototype.hasOwnProperty(a))c.prototype[a]=b.prototype[a]}function e(a,b,d){function c(a,b,c){delete a[b];a[b]=c;return c}Object.defineProperty(a,b,{get:function(){return c(a,b,d())},set:function(d){c(a,b,d)},enumerable:true,configurable:true})}function K(a,b,c){return a[b]=a[b]/c|0}var I=parseInt;var E=parseFloat;function M(a){return a!==a}var B=isFinite;var A=encodeURIComponent;var z=decodeURIComponent;var y=encodeURI;var x=decodeURI;var w=Object.prototype.toString;var C=Object.prototype.hasOwnProperty;function l(){}m.require=function(b){var a=t[b];return a!==undefined?a:null};m.profilerIsRunning=function(){return l.getResults!=null};m.getProfileResults=function(){return(l.getResults||function(){return{}})()};m.postProfileResults=function(a,b){if(l.postResults==null)throw new Error('profiler has not been turned on');return l.postResults(a,b)};m.resetProfileResults=function(){if(l.resetResults==null)throw new Error('profiler has not been turned on');return l.resetResults()};m.DEBUG=false;function v(){};n([v],Error);function c(a,b,c){this.F=a.length;this.K=a;this.L=b;this.I=c;this.H=null;this.P=null};n([c],Object);function s(){};n([s],Object);function g(){var a;var b;var c;this.G={};a=this.D='';b=this._=0;c=this.A=a.length;this.E=0;this.C=b;this.B=c};n([g],s);function D(a,b){a.D=b.D;a._=b._;a.A=b.A;a.E=b.E;a.C=b.C;a.B=b.B};function i(b,d,c,e){var a;if(b._>=b.A){return false}a=b.D.charCodeAt(b._);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._++;return true};function r(a,d,c,e){var b;if(a._>=a.A){return false}b=a.D.charCodeAt(a._);if(b>e||b<c){a._++;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._++;return true}return false};function f(a,d,c,e){var b;if(a._<=a.E){return false}b=a.D.charCodeAt(a._-1);if(b>e||b<c){a._--;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._--;return true}return false};function k(a,b,d){var c;if(a.A-a._<b){return false}if(a.D.slice(c=a._,c+b)!==d){return false}a._+=b;return true};function d(a,b,d){var c;if(a._-a.E<b){return false}if(a.D.slice((c=a._)-b,c)!==d){return false}a._-=b;return true};function q(f,m,p){var b;var d;var e;var n;var g;var k;var l;var i;var h;var c;var a;var j;var o;b=0;d=p;e=f._;n=f.A;g=0;k=0;l=false;while(true){i=b+(d-b>>>1);h=0;c=g<k?g:k;a=m[i];for(j=c;j<a.F;j++){if(e+c===n){h=-1;break}h=f.D.charCodeAt(e+c)-a.K.charCodeAt(j);if(h!==0){break}c++}if(h<0){d=i;k=c}else{b=i;g=c}if(d-b<=1){if(b>0){break}if(d===b){break}if(l){break}l=true}}while(true){a=m[b];if(g>=a.F){f._=e+a.F|0;if(a.H==null){return a.I}o=a.H(a.P);f._=e+a.F|0;if(o){return a.I}}b=a.L;if(b<0){return 0}}return-1};function h(d,m,p){var b;var g;var e;var n;var f;var k;var l;var i;var h;var c;var a;var j;var o;b=0;g=p;e=d._;n=d.E;f=0;k=0;l=false;while(true){i=b+(g-b>>1);h=0;c=f<k?f:k;a=m[i];for(j=a.F-1-c;j>=0;j--){if(e-c===n){h=-1;break}h=d.D.charCodeAt(e-1-c)-a.K.charCodeAt(j);if(h!==0){break}c++}if(h<0){g=i;k=c}else{b=i;f=c}if(g-b<=1){if(b>0){break}if(g===b){break}if(l){break}l=true}}while(true){a=m[b];if(f>=a.F){d._=e-a.F|0;if(a.H==null){return a.I}o=a.H(d);d._=e-a.F|0;if(o){return a.I}}b=a.L;if(b<0){return 0}}return-1};function u(a,b,d,e){var c;c=e.length-(d-b);a.D=a.D.slice(0,b)+e+a.D.slice(d);a.A+=c|0;if(a._>=d){a._+=c|0}else if(a._>b){a._=b}return c|0};function b(a,f){var b;var c;var d;var e;b=false;if((c=a.C)<0||c>(d=a.B)||d>(e=a.A)||e>a.D.length?false:true){u(a,a.C,a.B,f);b=true}return b};g.prototype.J=function(){return false};g.prototype.Z=function(b){var a;var c;var d;var e;a=this.G['.'+b];if(a==null){c=this.D=b;d=this._=0;e=this.A=c.length;this.E=0;this.C=d;this.B=e;this.J();a=this.D;this.G['.'+b]=a}return a};g.prototype.stemWord=g.prototype.Z;g.prototype.a=function(e){var d;var b;var c;var a;var f;var g;var h;d=[];for(b=0;b<e.length;b++){c=e[b];a=this.G['.'+c];if(a==null){f=this.D=c;g=this._=0;h=this.A=f.length;this.E=0;this.C=g;this.B=h;this.J();a=this.D;this.G['.'+c]=a}d.push(a)}return d};g.prototype.stemWords=g.prototype.a;function a(){g.call(this);this.I_p2=0;this.I_p1=0;this.B_e_found=false};n([a],g);a.prototype.M=function(a){this.I_p2=a.I_p2;this.I_p1=a.I_p1;this.B_e_found=a.B_e_found;D(this,a)};a.prototype.copy_from=a.prototype.M;a.prototype.W=function(){var e;var m;var n;var o;var p;var d;var s;var c;var f;var g;var h;var j;var l;var t;var r;m=this._;b:while(true){n=this._;c=true;a:while(c===true){c=false;this.C=this._;e=q(this,a.a_0,11);if(e===0){break a}this.B=this._;switch(e){case 0:break a;case 1:if(!b(this,'a')){return false}break;case 2:if(!b(this,'e')){return false}break;case 3:if(!b(this,'i')){return false}break;case 4:if(!b(this,'o')){return false}break;case 5:if(!b(this,'u')){return false}break;case 6:if(this._>=this.A){break a}this._++;break}continue b}this._=n;break b}t=this._=m;o=t;f=true;a:while(f===true){f=false;this.C=this._;if(!k(this,1,'y')){this._=o;break a}this.B=this._;if(!b(this,'Y')){return false}}a:while(true){p=this._;g=true;d:while(g===true){g=false;e:while(true){d=this._;h=true;b:while(h===true){h=false;if(!i(this,a.g_v,97,232)){break b}this.C=this._;j=true;f:while(j===true){j=false;s=this._;l=true;c:while(l===true){l=false;if(!k(this,1,'i')){break c}this.B=this._;if(!i(this,a.g_v,97,232)){break c}if(!b(this,'I')){return false}break f}this._=s;if(!k(this,1,'y')){break b}this.B=this._;if(!b(this,'Y')){return false}}this._=d;break e}r=this._=d;if(r>=this.A){break d}this._++}continue a}this._=p;break a}return true};a.prototype.r_prelude=a.prototype.W;function F(c){var d;var s;var t;var o;var p;var e;var n;var f;var g;var h;var j;var l;var m;var u;var r;s=c._;b:while(true){t=c._;f=true;a:while(f===true){f=false;c.C=c._;d=q(c,a.a_0,11);if(d===0){break a}c.B=c._;switch(d){case 0:break a;case 1:if(!b(c,'a')){return false}break;case 2:if(!b(c,'e')){return false}break;case 3:if(!b(c,'i')){return false}break;case 4:if(!b(c,'o')){return false}break;case 5:if(!b(c,'u')){return false}break;case 6:if(c._>=c.A){break a}c._++;break}continue b}c._=t;break b}u=c._=s;o=u;g=true;a:while(g===true){g=false;c.C=c._;if(!k(c,1,'y')){c._=o;break a}c.B=c._;if(!b(c,'Y')){return false}}a:while(true){p=c._;h=true;d:while(h===true){h=false;e:while(true){e=c._;j=true;b:while(j===true){j=false;if(!i(c,a.g_v,97,232)){break b}c.C=c._;l=true;f:while(l===true){l=false;n=c._;m=true;c:while(m===true){m=false;if(!k(c,1,'i')){break c}c.B=c._;if(!i(c,a.g_v,97,232)){break c}if(!b(c,'I')){return false}break f}c._=n;if(!k(c,1,'y')){break b}c.B=c._;if(!b(c,'Y')){return false}}c._=e;break e}r=c._=e;if(r>=c.A){break d}c._++}continue a}c._=p;break a}return true};a.prototype.U=function(){var b;var c;var d;var e;var f;var g;this.I_p1=g=this.A;this.I_p2=g;a:while(true){b=true;b:while(b===true){b=false;if(!i(this,a.g_v,97,232)){break b}break a}if(this._>=this.A){return false}this._++}a:while(true){c=true;b:while(c===true){c=false;if(!r(this,a.g_v,97,232)){break b}break a}if(this._>=this.A){return false}this._++}this.I_p1=this._;d=true;a:while(d===true){d=false;if(!(this.I_p1<3)){break a}this.I_p1=3}a:while(true){e=true;b:while(e===true){e=false;if(!i(this,a.g_v,97,232)){break b}break a}if(this._>=this.A){return false}this._++}a:while(true){f=true;b:while(f===true){f=false;if(!r(this,a.g_v,97,232)){break b}break a}if(this._>=this.A){return false}this._++}this.I_p2=this._;return true};a.prototype.r_mark_regions=a.prototype.U;function G(b){var c;var d;var e;var f;var g;var h;b.I_p1=h=b.A;b.I_p2=h;a:while(true){c=true;b:while(c===true){c=false;if(!i(b,a.g_v,97,232)){break b}break a}if(b._>=b.A){return false}b._++}a:while(true){d=true;b:while(d===true){d=false;if(!r(b,a.g_v,97,232)){break b}break a}if(b._>=b.A){return false}b._++}b.I_p1=b._;e=true;a:while(e===true){e=false;if(!(b.I_p1<3)){break a}b.I_p1=3}a:while(true){f=true;b:while(f===true){f=false;if(!i(b,a.g_v,97,232)){break b}break a}if(b._>=b.A){return false}b._++}a:while(true){g=true;b:while(g===true){g=false;if(!r(b,a.g_v,97,232)){break b}break a}if(b._>=b.A){return false}b._++}b.I_p2=b._;return true};a.prototype.V=function(){var c;var e;var d;b:while(true){e=this._;d=true;a:while(d===true){d=false;this.C=this._;c=q(this,a.a_1,3);if(c===0){break a}this.B=this._;switch(c){case 0:break a;case 1:if(!b(this,'y')){return false}break;case 2:if(!b(this,'i')){return false}break;case 3:if(this._>=this.A){break a}this._++;break}continue b}this._=e;break b}return true};a.prototype.r_postlude=a.prototype.V;function H(c){var d;var f;var e;b:while(true){f=c._;e=true;a:while(e===true){e=false;c.C=c._;d=q(c,a.a_1,3);if(d===0){break a}c.B=c._;switch(d){case 0:break a;case 1:if(!b(c,'y')){return false}break;case 2:if(!b(c,'i')){return false}break;case 3:if(c._>=c.A){break a}c._++;break}continue b}c._=f;break b}return true};a.prototype.Q=function(){return!(this.I_p1<=this._)?false:true};a.prototype.r_R1=a.prototype.Q;a.prototype.R=function(){return!(this.I_p2<=this._)?false:true};a.prototype.r_R2=a.prototype.R;a.prototype.Y=function(){var d;var c;d=this.A-this._;if(h(this,a.a_2,3)===0){return false}c=this._=this.A-d;this.B=c;if(c<=this.E){return false}this._--;this.C=this._;return!b(this,'')?false:true};a.prototype.r_undouble=a.prototype.Y;function j(c){var e;var d;e=c.A-c._;if(h(c,a.a_2,3)===0){return false}d=c._=c.A-e;c.B=d;if(d<=c.E){return false}c._--;c.C=c._;return!b(c,'')?false:true};a.prototype.S=function(){var c;var e;this.B_e_found=false;this.B=this._;if(!d(this,1,'e')){return false}this.C=e=this._;if(!(!(this.I_p1<=e)?false:true)){return false}c=this.A-this._;if(!f(this,a.g_v,97,232)){return false}this._=this.A-c;if(!b(this,'')){return false}this.B_e_found=true;return!j(this)?false:true};a.prototype.r_e_ending=a.prototype.S;function o(c){var e;var g;c.B_e_found=false;c.B=c._;if(!d(c,1,'e')){return false}c.C=g=c._;if(!(!(c.I_p1<=g)?false:true)){return false}e=c.A-c._;if(!f(c,a.g_v,97,232)){return false}c._=c.A-e;if(!b(c,'')){return false}c.B_e_found=true;return!j(c)?false:true};a.prototype.T=function(){var e;var g;var c;var h;var i;if(!(!(this.I_p1<=this._)?false:true)){return false}e=this.A-this._;if(!f(this,a.g_v,97,232)){return false}i=this._=(h=this.A)-e;g=h-i;c=true;a:while(c===true){c=false;if(!d(this,3,'gem')){break a}return false}this._=this.A-g;return!b(this,'')?false:!j(this)?false:true};a.prototype.r_en_ending=a.prototype.T;function p(c){var g;var h;var e;var i;var k;if(!(!(c.I_p1<=c._)?false:true)){return false}g=c.A-c._;if(!f(c,a.g_v,97,232)){return false}k=c._=(i=c.A)-g;h=i-k;e=true;a:while(e===true){e=false;if(!d(c,3,'gem')){break a}return false}c._=c.A-h;return!b(c,'')?false:!j(c)?false:true};a.prototype.X=function(){var c;var v;var w;var x;var y;var z;var A;var B;var C;var D;var M;var m;var g;var i;var k;var l;var e;var n;var q;var r;var s;var E;var F;var G;var H;var I;var J;var K;var L;var t;var N;var u;v=this.A-this._;m=true;a:while(m===true){m=false;this.B=this._;c=h(this,a.a_3,5);if(c===0){break a}this.C=this._;switch(c){case 0:break a;case 1:if(!(!(this.I_p1<=this._)?false:true)){break a}if(!b(this,'heid')){return false}break;case 2:if(!p(this)){break a}break;case 3:if(!(!(this.I_p1<=this._)?false:true)){break a}if(!f(this,a.g_v_j,97,232)){break a}if(!b(this,'')){return false}break}}F=this._=(E=this.A)-v;w=E-F;g=true;a:while(g===true){g=false;if(!o(this)){break a}}I=this._=(H=this.A)-w;x=H-I;i=true;a:while(i===true){i=false;this.B=this._;if(!d(this,4,'heid')){break a}this.C=G=this._;if(!(!(this.I_p2<=G)?false:true)){break a}y=this.A-this._;k=true;b:while(k===true){k=false;if(!d(this,1,'c')){break b}break a}this._=this.A-y;if(!b(this,'')){return false}this.B=this._;if(!d(this,2,'en')){break a}this.C=this._;if(!p(this)){break a}}L=this._=(K=this.A)-x;z=K-L;l=true;a:while(l===true){l=false;this.B=this._;c=h(this,a.a_4,6);if(c===0){break a}this.C=this._;switch(c){case 0:break a;case 1:if(!(!(this.I_p2<=this._)?false:true)){break a}if(!b(this,'')){return false}e=true;c:while(e===true){e=false;A=this.A-this._;n=true;b:while(n===true){n=false;this.B=this._;if(!d(this,2,'ig')){break b}this.C=J=this._;if(!(!(this.I_p2<=J)?false:true)){break b}B=this.A-this._;q=true;d:while(q===true){q=false;if(!d(this,1,'e')){break d}break b}this._=this.A-B;if(!b(this,'')){return false}break c}this._=this.A-A;if(!j(this)){break a}}break;case 2:if(!(!(this.I_p2<=this._)?false:true)){break a}C=this.A-this._;r=true;b:while(r===true){r=false;if(!d(this,1,'e')){break b}break a}this._=this.A-C;if(!b(this,'')){return false}break;case 3:if(!(!(this.I_p2<=this._)?false:true)){break a}if(!b(this,'')){return false}if(!o(this)){break a}break;case 4:if(!(!(this.I_p2<=this._)?false:true)){break a}if(!b(this,'')){return false}break;case 5:if(!(!(this.I_p2<=this._)?false:true)){break a}if(!this.B_e_found){break a}if(!b(this,'')){return false}break}}u=this._=(N=this.A)-z;D=N-u;s=true;a:while(s===true){s=false;if(!f(this,a.g_v_I,73,232)){break a}M=this.A-this._;if(h(this,a.a_5,4)===0){break a}if(!f(this,a.g_v,97,232)){break a}t=this._=this.A-M;this.B=t;if(t<=this.E){break a}this._--;this.C=this._;if(!b(this,'')){return false}}this._=this.A-D;return true};a.prototype.r_standard_suffix=a.prototype.X;function J(c){var e;var w;var x;var y;var z;var A;var B;var C;var D;var E;var N;var g;var i;var k;var l;var m;var n;var q;var r;var s;var t;var F;var G;var H;var I;var J;var K;var L;var M;var u;var O;var v;w=c.A-c._;g=true;a:while(g===true){g=false;c.B=c._;e=h(c,a.a_3,5);if(e===0){break a}c.C=c._;switch(e){case 0:break a;case 1:if(!(!(c.I_p1<=c._)?false:true)){break a}if(!b(c,'heid')){return false}break;case 2:if(!p(c)){break a}break;case 3:if(!(!(c.I_p1<=c._)?false:true)){break a}if(!f(c,a.g_v_j,97,232)){break a}if(!b(c,'')){return false}break}}G=c._=(F=c.A)-w;x=F-G;i=true;a:while(i===true){i=false;if(!o(c)){break a}}J=c._=(I=c.A)-x;y=I-J;k=true;a:while(k===true){k=false;c.B=c._;if(!d(c,4,'heid')){break a}c.C=H=c._;if(!(!(c.I_p2<=H)?false:true)){break a}z=c.A-c._;l=true;b:while(l===true){l=false;if(!d(c,1,'c')){break b}break a}c._=c.A-z;if(!b(c,'')){return false}c.B=c._;if(!d(c,2,'en')){break a}c.C=c._;if(!p(c)){break a}}M=c._=(L=c.A)-y;A=L-M;m=true;a:while(m===true){m=false;c.B=c._;e=h(c,a.a_4,6);if(e===0){break a}c.C=c._;switch(e){case 0:break a;case 1:if(!(!(c.I_p2<=c._)?false:true)){break a}if(!b(c,'')){return false}n=true;c:while(n===true){n=false;B=c.A-c._;q=true;b:while(q===true){q=false;c.B=c._;if(!d(c,2,'ig')){break b}c.C=K=c._;if(!(!(c.I_p2<=K)?false:true)){break b}C=c.A-c._;r=true;d:while(r===true){r=false;if(!d(c,1,'e')){break d}break b}c._=c.A-C;if(!b(c,'')){return false}break c}c._=c.A-B;if(!j(c)){break a}}break;case 2:if(!(!(c.I_p2<=c._)?false:true)){break a}D=c.A-c._;s=true;b:while(s===true){s=false;if(!d(c,1,'e')){break b}break a}c._=c.A-D;if(!b(c,'')){return false}break;case 3:if(!(!(c.I_p2<=c._)?false:true)){break a}if(!b(c,'')){return false}if(!o(c)){break a}break;case 4:if(!(!(c.I_p2<=c._)?false:true)){break a}if(!b(c,'')){return false}break;case 5:if(!(!(c.I_p2<=c._)?false:true)){break a}if(!c.B_e_found){break a}if(!b(c,'')){return false}break}}v=c._=(O=c.A)-A;E=O-v;t=true;a:while(t===true){t=false;if(!f(c,a.g_v_I,73,232)){break a}N=c.A-c._;if(h(c,a.a_5,4)===0){break a}if(!f(c,a.g_v,97,232)){break a}u=c._=c.A-N;c.B=u;if(u<=c.E){break a}c._--;c.C=c._;if(!b(c,'')){return false}}c._=c.A-E;return true};a.prototype.J=function(){var f;var g;var h;var b;var a;var c;var d;var i;var j;var e;f=this._;b=true;a:while(b===true){b=false;if(!F(this)){break a}}i=this._=f;g=i;a=true;a:while(a===true){a=false;if(!G(this)){break a}}j=this._=g;this.E=j;this._=this.A;c=true;a:while(c===true){c=false;if(!J(this)){break a}}e=this._=this.E;h=e;d=true;a:while(d===true){d=false;if(!H(this)){break a}}this._=h;return true};a.prototype.stem=a.prototype.J;a.prototype.N=function(b){return b instanceof a};a.prototype.equals=a.prototype.N;a.prototype.O=function(){var c;var a;var b;var d;c='DutchStemmer';a=0;for(b=0;b<c.length;b++){d=c.charCodeAt(b);a=(a<<5)-a+d;a=a&a}return a|0};a.prototype.hashCode=a.prototype.O;a.serialVersionUID=1;e(a,'methodObject',function(){return new a});e(a,'a_0',function(){return[new c('',-1,6),new c('á',0,1),new c('ä',0,1),new c('é',0,2),new c('ë',0,2),new c('í',0,3),new c('ï',0,3),new c('ó',0,4),new c('ö',0,4),new c('ú',0,5),new c('ü',0,5)]});e(a,'a_1',function(){return[new c('',-1,3),new c('I',0,2),new c('Y',0,1)]});e(a,'a_2',function(){return[new c('dd',-1,-1),new c('kk',-1,-1),new c('tt',-1,-1)]});e(a,'a_3',function(){return[new c('ene',-1,2),new c('se',-1,3),new c('en',-1,2),new c('heden',2,1),new c('s',-1,3)]});e(a,'a_4',function(){return[new c('end',-1,1),new c('ig',-1,2),new c('ing',-1,1),new c('lijk',-1,3),new c('baar',-1,4),new c('bar',-1,5)]});e(a,'a_5',function(){return[new c('aa',-1,-1),new c('ee',-1,-1),new c('oo',-1,-1),new c('uu',-1,-1)]});e(a,'g_v',function(){return[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128]});e(a,'g_v_I',function(){return[1,0,0,17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128]});e(a,'g_v_j',function(){return[17,67,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128]});var t={'src/stemmer.jsx':{Stemmer:s},'src/dutch-stemmer.jsx':{DutchStemmer:a}}}(JSX)) +var Stemmer = JSX.require("src/dutch-stemmer.jsx").DutchStemmer; +""" + + +class SearchDutch(SearchLanguage): + lang = 'nl' + language_name = 'Dutch' + js_stemmer_rawcode = 'dutch-stemmer.js' + js_stemmer_code = js_stemmer + stopwords = dutch_stopwords + + def init(self, options: Dict) -> None: + self.stemmer = snowballstemmer.stemmer('dutch') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/sphinx/search/no.py b/sphinx/sphinx/search/no.py new file mode 100644 index 0000000..68c1ac2 --- /dev/null +++ b/sphinx/sphinx/search/no.py @@ -0,0 +1,215 @@ +""" + sphinx.search.no + ~~~~~~~~~~~~~~~~ + + Norwegian search language: includes the JS Norwegian stemmer. + + :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + + +norwegian_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/norwegian/stop.txt +og | and +i | in +jeg | I +det | it/this/that +at | to (w. inf.) +en | a/an +et | a/an +den | it/this/that +til | to +er | is/am/are +som | who/that +på | on +de | they / you(formal) +med | with +han | he +av | of +ikke | not +ikkje | not * +der | there +så | so +var | was/were +meg | me +seg | you +men | but +ett | one +har | have +om | about +vi | we +min | my +mitt | my +ha | have +hadde | had +hun | she +nå | now +over | over +da | when/as +ved | by/know +fra | from +du | you +ut | out +sin | your +dem | them +oss | us +opp | up +man | you/one +kan | can +hans | his +hvor | where +eller | or +hva | what +skal | shall/must +selv | self (reflective) +sjøl | self (reflective) +her | here +alle | all +vil | will +bli | become +ble | became +blei | became * +blitt | have become +kunne | could +inn | in +når | when +være | be +kom | come +noen | some +noe | some +ville | would +dere | you +som | who/which/that +deres | their/theirs +kun | only/just +ja | yes +etter | after +ned | down +skulle | should +denne | this +for | for/because +deg | you +si | hers/his +sine | hers/his +sitt | hers/his +mot | against +å | to +meget | much +hvorfor | why +dette | this +disse | these/those +uten | without +hvordan | how +ingen | none +din | your +ditt | your +blir | become +samme | same +hvilken | which +hvilke | which (plural) +sånn | such a +inni | inside/within +mellom | between +vår | our +hver | each +hvem | who +vors | us/ours +hvis | whose +både | both +bare | only/just +enn | than +fordi | as/because +før | before +mange | many +også | also +slik | just +vært | been +være | to be +båe | both * +begge | both +siden | since +dykk | your * +dykkar | yours * +dei | they * +deira | them * +deires | theirs * +deim | them * +di | your (fem.) * +då | as/when * +eg | I * +ein | a/an * +eit | a/an * +eitt | a/an * +elles | or * +honom | he * +hjå | at * +ho | she * +hoe | she * +henne | her +hennar | her/hers +hennes | hers +hoss | how * +hossen | how * +ikkje | not * +ingi | noone * +inkje | noone * +korleis | how * +korso | how * +kva | what/which * +kvar | where * +kvarhelst | where * +kven | who/whom * +kvi | why * +kvifor | why * +me | we * +medan | while * +mi | my * +mine | my * +mykje | much * +no | now * +nokon | some (masc./neut.) * +noka | some (fem.) * +nokor | some * +noko | some * +nokre | some * +si | his/hers * +sia | since * +sidan | since * +so | so * +somt | some * +somme | some * +um | about* +upp | up * +vere | be * +vore | was * +verte | become * +vort | become * +varte | became * +vart | became * +''') + +js_stemmer = """ +var JSX={};(function(g){function i(b,e){var a=function(){};a.prototype=e.prototype;var c=new a;for(var d in b){b[d].prototype=c}}function G(c,b){for(var a in b.prototype)if(b.prototype.hasOwnProperty(a))c.prototype[a]=b.prototype[a]}function e(a,b,d){function c(a,b,c){delete a[b];a[b]=c;return c}Object.defineProperty(a,b,{get:function(){return c(a,b,d())},set:function(d){c(a,b,d)},enumerable:true,configurable:true})}function H(a,b,c){return a[b]=a[b]/c|0}var B=parseInt;var q=parseFloat;function I(a){return a!==a}var y=isFinite;var x=encodeURIComponent;var w=decodeURIComponent;var u=encodeURI;var t=decodeURI;var s=Object.prototype.toString;var r=Object.prototype.hasOwnProperty;function h(){}g.require=function(b){var a=m[b];return a!==undefined?a:null};g.profilerIsRunning=function(){return h.getResults!=null};g.getProfileResults=function(){return(h.getResults||function(){return{}})()};g.postProfileResults=function(a,b){if(h.postResults==null)throw new Error('profiler has not been turned on');return h.postResults(a,b)};g.resetProfileResults=function(){if(h.resetResults==null)throw new Error('profiler has not been turned on');return h.resetResults()};g.DEBUG=false;function A(){};i([A],Error);function b(a,b,c){this.G=a.length;this.R=a;this.U=b;this.J=c;this.I=null;this.V=null};i([b],Object);function j(){};i([j],Object);function d(){var a;var b;var c;this.F={};a=this.C='';b=this._=0;c=this.A=a.length;this.B=0;this.D=b;this.E=c};i([d],j);function v(a,b){a.C=b.C;a._=b._;a.A=b.A;a.B=b.B;a.D=b.D;a.E=b.E};function l(b,d,c,e){var a;if(b._>=b.A){return false}a=b.C.charCodeAt(b._);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._++;return true};function k(b,d,c,e){var a;if(b._<=b.B){return false}a=b.C.charCodeAt(b._-1);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._--;return true};function p(a,d,c,e){var b;if(a._>=a.A){return false}b=a.C.charCodeAt(a._);if(b>e||b<c){a._++;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._++;return true}return false};function o(a,d,c,e){var b;if(a._<=a.B){return false}b=a.C.charCodeAt(a._-1);if(b>e||b<c){a._--;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._--;return true}return false};function n(a,b,d){var c;if(a._-a.B<b){return false}if(a.C.slice((c=a._)-b,c)!==d){return false}a._-=b;return true};function f(d,m,p){var b;var g;var e;var n;var f;var k;var l;var i;var h;var c;var a;var j;var o;b=0;g=p;e=d._;n=d.B;f=0;k=0;l=false;while(true){i=b+(g-b>>1);h=0;c=f<k?f:k;a=m[i];for(j=a.G-1-c;j>=0;j--){if(e-c===n){h=-1;break}h=d.C.charCodeAt(e-1-c)-a.R.charCodeAt(j);if(h!==0){break}c++}if(h<0){g=i;k=c}else{b=i;f=c}if(g-b<=1){if(b>0){break}if(g===b){break}if(l){break}l=true}}while(true){a=m[b];if(f>=a.G){d._=e-a.G|0;if(a.I==null){return a.J}o=a.I(d);d._=e-a.G|0;if(o){return a.J}}b=a.U;if(b<0){return 0}}return-1};function C(a,b,d,e){var c;c=e.length-(d-b);a.C=a.C.slice(0,b)+e+a.C.slice(d);a.A+=c|0;if(a._>=d){a._+=c|0}else if(a._>b){a._=b}return c|0};function c(a,f){var b;var c;var d;var e;b=false;if((c=a.D)<0||c>(d=a.E)||d>(e=a.A)||e>a.C.length?false:true){C(a,a.D,a.E,f);b=true}return b};d.prototype.H=function(){return false};d.prototype.S=function(b){var a;var c;var d;var e;a=this.F['.'+b];if(a==null){c=this.C=b;d=this._=0;e=this.A=c.length;this.B=0;this.D=d;this.E=e;this.H();a=this.C;this.F['.'+b]=a}return a};d.prototype.stemWord=d.prototype.S;d.prototype.T=function(e){var d;var b;var c;var a;var f;var g;var h;d=[];for(b=0;b<e.length;b++){c=e[b];a=this.F['.'+c];if(a==null){f=this.C=c;g=this._=0;h=this.A=f.length;this.B=0;this.D=g;this.E=h;this.H();a=this.C;this.F['.'+c]=a}d.push(a)}return d};d.prototype.stemWords=d.prototype.T;function a(){d.call(this);this.I_x=0;this.I_p1=0};i([a],d);a.prototype.K=function(a){this.I_x=a.I_x;this.I_p1=a.I_p1;v(this,a)};a.prototype.copy_from=a.prototype.K;a.prototype.P=function(){var g;var d;var b;var e;var c;var f;var i;var j;var k;var h;this.I_p1=j=this.A;g=i=this._;b=i+3|0;if(0>b||b>j){return false}h=this._=b;this.I_x=h;this._=g;a:while(true){d=this._;e=true;b:while(e===true){e=false;if(!l(this,a.g_v,97,248)){break b}this._=d;break a}k=this._=d;if(k>=this.A){return false}this._++}a:while(true){c=true;b:while(c===true){c=false;if(!p(this,a.g_v,97,248)){break b}break a}if(this._>=this.A){return false}this._++}this.I_p1=this._;f=true;a:while(f===true){f=false;if(!(this.I_p1<this.I_x)){break a}this.I_p1=this.I_x}return true};a.prototype.r_mark_regions=a.prototype.P;function F(b){var h;var e;var c;var f;var d;var g;var j;var k;var m;var i;b.I_p1=k=b.A;h=j=b._;c=j+3|0;if(0>c||c>k){return false}i=b._=c;b.I_x=i;b._=h;a:while(true){e=b._;f=true;b:while(f===true){f=false;if(!l(b,a.g_v,97,248)){break b}b._=e;break a}m=b._=e;if(m>=b.A){return false}b._++}a:while(true){d=true;b:while(d===true){d=false;if(!p(b,a.g_v,97,248)){break b}break a}if(b._>=b.A){return false}b._++}b.I_p1=b._;g=true;a:while(g===true){g=false;if(!(b.I_p1<b.I_x)){break a}b.I_p1=b.I_x}return true};a.prototype.O=function(){var b;var h;var d;var i;var e;var g;var j;var l;var m;h=this.A-(j=this._);if(j<this.I_p1){return false}l=this._=this.I_p1;d=this.B;this.B=l;m=this._=this.A-h;this.E=m;b=f(this,a.a_0,29);if(b===0){this.B=d;return false}this.D=this._;this.B=d;switch(b){case 0:return false;case 1:if(!c(this,'')){return false}break;case 2:e=true;a:while(e===true){e=false;i=this.A-this._;g=true;b:while(g===true){g=false;if(!k(this,a.g_s_ending,98,122)){break b}break a}this._=this.A-i;if(!n(this,1,'k')){return false}if(!o(this,a.g_v,97,248)){return false}}if(!c(this,'')){return false}break;case 3:if(!c(this,'er')){return false}break}return true};a.prototype.r_main_suffix=a.prototype.O;function E(b){var d;var l;var e;var i;var g;var h;var m;var p;var j;l=b.A-(m=b._);if(m<b.I_p1){return false}p=b._=b.I_p1;e=b.B;b.B=p;j=b._=b.A-l;b.E=j;d=f(b,a.a_0,29);if(d===0){b.B=e;return false}b.D=b._;b.B=e;switch(d){case 0:return false;case 1:if(!c(b,'')){return false}break;case 2:g=true;a:while(g===true){g=false;i=b.A-b._;h=true;b:while(h===true){h=false;if(!k(b,a.g_s_ending,98,122)){break b}break a}b._=b.A-i;if(!n(b,1,'k')){return false}if(!o(b,a.g_v,97,248)){return false}}if(!c(b,'')){return false}break;case 3:if(!c(b,'er')){return false}break}return true};a.prototype.N=function(){var e;var g;var b;var h;var d;var i;var j;var k;var l;e=(h=this.A)-(d=this._);g=h-d;if(d<this.I_p1){return false}i=this._=this.I_p1;b=this.B;this.B=i;j=this._=this.A-g;this.E=j;if(f(this,a.a_1,2)===0){this.B=b;return false}this.D=this._;l=this.B=b;k=this._=this.A-e;if(k<=l){return false}this._--;this.D=this._;return!c(this,'')?false:true};a.prototype.r_consonant_pair=a.prototype.N;function D(b){var i;var j;var d;var g;var e;var k;var l;var m;var h;i=(g=b.A)-(e=b._);j=g-e;if(e<b.I_p1){return false}k=b._=b.I_p1;d=b.B;b.B=k;l=b._=b.A-j;b.E=l;if(f(b,a.a_1,2)===0){b.B=d;return false}b.D=b._;h=b.B=d;m=b._=b.A-i;if(m<=h){return false}b._--;b.D=b._;return!c(b,'')?false:true};a.prototype.Q=function(){var b;var e;var d;var g;var h;var i;e=this.A-(g=this._);if(g<this.I_p1){return false}h=this._=this.I_p1;d=this.B;this.B=h;i=this._=this.A-e;this.E=i;b=f(this,a.a_2,11);if(b===0){this.B=d;return false}this.D=this._;this.B=d;switch(b){case 0:return false;case 1:if(!c(this,'')){return false}break}return true};a.prototype.r_other_suffix=a.prototype.Q;function z(b){var d;var g;var e;var h;var i;var j;g=b.A-(h=b._);if(h<b.I_p1){return false}i=b._=b.I_p1;e=b.B;b.B=i;j=b._=b.A-g;b.E=j;d=f(b,a.a_2,11);if(d===0){b.B=e;return false}b.D=b._;b.B=e;switch(d){case 0:return false;case 1:if(!c(b,'')){return false}break}return true};a.prototype.H=function(){var g;var f;var h;var b;var c;var a;var d;var i;var j;var k;var l;var e;g=this._;b=true;a:while(b===true){b=false;if(!F(this)){break a}}i=this._=g;this.B=i;k=this._=j=this.A;f=j-k;c=true;a:while(c===true){c=false;if(!E(this)){break a}}e=this._=(l=this.A)-f;h=l-e;a=true;a:while(a===true){a=false;if(!D(this)){break a}}this._=this.A-h;d=true;a:while(d===true){d=false;if(!z(this)){break a}}this._=this.B;return true};a.prototype.stem=a.prototype.H;a.prototype.L=function(b){return b instanceof a};a.prototype.equals=a.prototype.L;a.prototype.M=function(){var c;var a;var b;var d;c='NorwegianStemmer';a=0;for(b=0;b<c.length;b++){d=c.charCodeAt(b);a=(a<<5)-a+d;a=a&a}return a|0};a.prototype.hashCode=a.prototype.M;a.serialVersionUID=1;e(a,'methodObject',function(){return new a});e(a,'a_0',function(){return[new b('a',-1,1),new b('e',-1,1),new b('ede',1,1),new b('ande',1,1),new b('ende',1,1),new b('ane',1,1),new b('ene',1,1),new b('hetene',6,1),new b('erte',1,3),new b('en',-1,1),new b('heten',9,1),new b('ar',-1,1),new b('er',-1,1),new b('heter',12,1),new b('s',-1,2),new b('as',14,1),new b('es',14,1),new b('edes',16,1),new b('endes',16,1),new b('enes',16,1),new b('hetenes',19,1),new b('ens',14,1),new b('hetens',21,1),new b('ers',14,1),new b('ets',14,1),new b('et',-1,1),new b('het',25,1),new b('ert',-1,3),new b('ast',-1,1)]});e(a,'a_1',function(){return[new b('dt',-1,-1),new b('vt',-1,-1)]});e(a,'a_2',function(){return[new b('leg',-1,1),new b('eleg',0,1),new b('ig',-1,1),new b('eig',2,1),new b('lig',2,1),new b('elig',4,1),new b('els',-1,1),new b('lov',-1,1),new b('elov',7,1),new b('slov',7,1),new b('hetslov',9,1)]});e(a,'g_v',function(){return[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128]});e(a,'g_s_ending',function(){return[119,125,149,1]});var m={'src/stemmer.jsx':{Stemmer:j},'src/norwegian-stemmer.jsx':{NorwegianStemmer:a}}}(JSX)) +var Stemmer = JSX.require("src/norwegian-stemmer.jsx").NorwegianStemmer; +""" + + +class SearchNorwegian(SearchLanguage): + lang = 'no' + language_name = 'Norwegian' + js_stemmer_rawcode = 'norwegian-stemmer.js' + js_stemmer_code = js_stemmer + stopwords = norwegian_stopwords + + def init(self, options: Dict) -> None: + self.stemmer = snowballstemmer.stemmer('norwegian') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/sphinx/search/non-minified-js/danish-stemmer.js b/sphinx/sphinx/search/non-minified-js/danish-stemmer.js new file mode 100644 index 0000000..f630932 --- /dev/null +++ b/sphinx/sphinx/search/non-minified-js/danish-stemmer.js @@ -0,0 +1,1873 @@ +// generatedy by JSX compiler 0.9.89 (2014-05-20 06:01:03 +0900; 8e8c6105f36f3dfe440ea026a3c93a3444977102) +var JSX = {}; +(function (JSX) { +/** + * extends the class + */ +function $__jsx_extend(derivations, base) { + var ctor = function () {}; + ctor.prototype = base.prototype; + var proto = new ctor(); + for (var i in derivations) { + derivations[i].prototype = proto; + } +} + +/** + * copies the implementations from source interface to target + */ +function $__jsx_merge_interface(target, source) { + for (var k in source.prototype) + if (source.prototype.hasOwnProperty(k)) + target.prototype[k] = source.prototype[k]; +} + +/** + * defers the initialization of the property + */ +function $__jsx_lazy_init(obj, prop, func) { + function reset(obj, prop, value) { + delete obj[prop]; + obj[prop] = value; + return value; + } + + Object.defineProperty(obj, prop, { + get: function () { + return reset(obj, prop, func()); + }, + set: function (v) { + reset(obj, prop, v); + }, + enumerable: true, + configurable: true + }); +} + +var $__jsx_imul = Math.imul; +if (typeof $__jsx_imul === "undefined") { + $__jsx_imul = function (a, b) { + var ah = (a >>> 16) & 0xffff; + var al = a & 0xffff; + var bh = (b >>> 16) & 0xffff; + var bl = b & 0xffff; + return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0); + }; +} + +/** + * fused int-ops with side-effects + */ +function $__jsx_ipadd(o, p, r) { + return o[p] = (o[p] + r) | 0; +} +function $__jsx_ipsub(o, p, r) { + return o[p] = (o[p] - r) | 0; +} +function $__jsx_ipmul(o, p, r) { + return o[p] = $__jsx_imul(o[p], r); +} +function $__jsx_ipdiv(o, p, r) { + return o[p] = (o[p] / r) | 0; +} +function $__jsx_ipmod(o, p, r) { + return o[p] = (o[p] % r) | 0; +} +function $__jsx_ippostinc(o, p) { + var v = o[p]; + o[p] = (v + 1) | 0; + return v; +} +function $__jsx_ippostdec(o, p) { + var v = o[p]; + o[p] = (v - 1) | 0; + return v; +} + +/** + * non-inlined version of Array#each + */ +function $__jsx_forEach(o, f) { + var l = o.length; + for (var i = 0; i < l; ++i) + f(o[i]); +} + +/* + * global functions, renamed to avoid conflict with local variable names + */ +var $__jsx_parseInt = parseInt; +var $__jsx_parseFloat = parseFloat; +function $__jsx_isNaN(n) { return n !== n; } +var $__jsx_isFinite = isFinite; + +var $__jsx_encodeURIComponent = encodeURIComponent; +var $__jsx_decodeURIComponent = decodeURIComponent; +var $__jsx_encodeURI = encodeURI; +var $__jsx_decodeURI = decodeURI; + +var $__jsx_ObjectToString = Object.prototype.toString; +var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty; + +/* + * profiler object, initialized afterwards + */ +function $__jsx_profiler() { +} + +/* + * public interface to JSX code + */ +JSX.require = function (path) { + var m = $__jsx_classMap[path]; + return m !== undefined ? m : null; +}; + +JSX.profilerIsRunning = function () { + return $__jsx_profiler.getResults != null; +}; + +JSX.getProfileResults = function () { + return ($__jsx_profiler.getResults || function () { return {}; })(); +}; + +JSX.postProfileResults = function (url, cb) { + if ($__jsx_profiler.postResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.postResults(url, cb); +}; + +JSX.resetProfileResults = function () { + if ($__jsx_profiler.resetResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.resetResults(); +}; +JSX.DEBUG = false; +var GeneratorFunction$0 = +(function () { + try { + return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); + } catch (e) { + return function GeneratorFunction () {}; + } +})(); +var __jsx_generator_object$0 = +(function () { + function __jsx_generator_object() { + this.__next = 0; + this.__loop = null; + this.__seed = null; + this.__value = undefined; + this.__status = 0; // SUSPENDED: 0, ACTIVE: 1, DEAD: 2 + } + + __jsx_generator_object.prototype.next = function (seed) { + switch (this.__status) { + case 0: + this.__status = 1; + this.__seed = seed; + + // go next! + this.__loop(this.__next); + + var done = false; + if (this.__next != -1) { + this.__status = 0; + } else { + this.__status = 2; + done = true; + } + return { value: this.__value, done: done }; + case 1: + throw new Error("Generator is already running"); + case 2: + throw new Error("Generator is already finished"); + default: + throw new Error("Unexpected generator internal state"); + } + }; + + return __jsx_generator_object; +}()); +function Among(s, substring_i, result) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = null; + this.instance = null; +}; + +function Among$0(s, substring_i, result, method, instance) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = method; + this.instance = instance; +}; + +$__jsx_extend([Among, Among$0], Object); +function Stemmer() { +}; + +$__jsx_extend([Stemmer], Object); +function BaseStemmer() { + var current$0; + var cursor$0; + var limit$0; + this.cache = ({ }); + current$0 = this.current = ""; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +$__jsx_extend([BaseStemmer], Stemmer); +BaseStemmer.prototype.setCurrent$S = function (value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = this.current = value; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + + +function BaseStemmer$setCurrent$LBaseStemmer$S($this, value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = $this.current = value; + cursor$0 = $this.cursor = 0; + limit$0 = $this.limit = current$0.length; + $this.limit_backward = 0; + $this.bra = cursor$0; + $this.ket = limit$0; +}; + +BaseStemmer.setCurrent$LBaseStemmer$S = BaseStemmer$setCurrent$LBaseStemmer$S; + +BaseStemmer.prototype.getCurrent$ = function () { + return this.current; +}; + + +function BaseStemmer$getCurrent$LBaseStemmer$($this) { + return $this.current; +}; + +BaseStemmer.getCurrent$LBaseStemmer$ = BaseStemmer$getCurrent$LBaseStemmer$; + +BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; +}; + + +function BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$($this, other) { + $this.current = other.current; + $this.cursor = other.cursor; + $this.limit = other.limit; + $this.limit_backward = other.limit_backward; + $this.bra = other.bra; + $this.ket = other.ket; +}; + +BaseStemmer.copy_from$LBaseStemmer$LBaseStemmer$ = BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$; + +BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping$LBaseStemmer$AIII = BaseStemmer$in_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping_b$LBaseStemmer$AIII = BaseStemmer$in_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping$LBaseStemmer$AIII = BaseStemmer$out_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping_b$LBaseStemmer$AIII = BaseStemmer$out_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range$LBaseStemmer$II = BaseStemmer$in_range$LBaseStemmer$II; + +BaseStemmer.prototype.in_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range_b$LBaseStemmer$II = BaseStemmer$in_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.out_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range$LBaseStemmer$II = BaseStemmer$out_range$LBaseStemmer$II; + +BaseStemmer.prototype.out_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range_b$LBaseStemmer$II = BaseStemmer$out_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.eq_s$IS = function (s_size, s) { + var cursor$0; + if (((this.limit - this.cursor) | 0) < s_size) { + return false; + } + if (this.current.slice(cursor$0 = this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + this.cursor = (this.cursor + s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.limit - $this.cursor) | 0) < s_size) { + return false; + } + if ($this.current.slice(cursor$0 = $this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + $this.cursor = ($this.cursor + s_size) | 0; + return true; +}; + +BaseStemmer.eq_s$LBaseStemmer$IS = BaseStemmer$eq_s$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) { + var cursor$0; + if (((this.cursor - this.limit_backward) | 0) < s_size) { + return false; + } + if (this.current.slice((((cursor$0 = this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + this.cursor = (this.cursor - s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.cursor - $this.limit_backward) | 0) < s_size) { + return false; + } + if ($this.current.slice((((cursor$0 = $this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + $this.cursor = ($this.cursor - s_size) | 0; + return true; +}; + +BaseStemmer.eq_s_b$LBaseStemmer$IS = BaseStemmer$eq_s_b$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_v$S = function (s) { + return BaseStemmer$eq_s$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v$LBaseStemmer$S = BaseStemmer$eq_v$LBaseStemmer$S; + +BaseStemmer.prototype.eq_v_b$S = function (s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v_b$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v_b$LBaseStemmer$S = BaseStemmer$eq_v_b$LBaseStemmer$S; + +BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + l = this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + l = $this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + $this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among$LBaseStemmer$ALAmong$I = BaseStemmer$find_among$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + lb = this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(this); + this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + lb = $this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method($this); + $this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among_b$LBaseStemmer$ALAmong$I = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit = (this.limit + adjustment) | 0; + if (this.cursor >= c_ket) { + this.cursor = (this.cursor + adjustment) | 0; + } else if (this.cursor > c_bra) { + this.cursor = c_bra; + } + return (adjustment | 0); +}; + + +function BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + $this.current = $this.current.slice(0, c_bra) + s + $this.current.slice(c_ket); + $this.limit = ($this.limit + adjustment) | 0; + if ($this.cursor >= c_ket) { + $this.cursor = ($this.cursor + adjustment) | 0; + } else if ($this.cursor > c_bra) { + $this.cursor = c_bra; + } + return (adjustment | 0); +}; + +BaseStemmer.replace_s$LBaseStemmer$IIS = BaseStemmer$replace_s$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_check$ = function () { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true); +}; + + +function BaseStemmer$slice_check$LBaseStemmer$($this) { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true); +}; + +BaseStemmer.slice_check$LBaseStemmer$ = BaseStemmer$slice_check$LBaseStemmer$; + +BaseStemmer.prototype.slice_from$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS(this, this.bra, this.ket, s); + result = true; + } + return result; +}; + + +function BaseStemmer$slice_from$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS($this, $this.bra, $this.ket, s); + result = true; + } + return result; +}; + +BaseStemmer.slice_from$LBaseStemmer$S = BaseStemmer$slice_from$LBaseStemmer$S; + +BaseStemmer.prototype.slice_del$ = function () { + return BaseStemmer$slice_from$LBaseStemmer$S(this, ""); +}; + + +function BaseStemmer$slice_del$LBaseStemmer$($this) { + return BaseStemmer$slice_from$LBaseStemmer$S($this, ""); +}; + +BaseStemmer.slice_del$LBaseStemmer$ = BaseStemmer$slice_del$LBaseStemmer$; + +BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS(this, c_bra, c_ket, s); + if (c_bra <= this.bra) { + this.bra = (this.bra + adjustment) | 0; + } + if (c_bra <= this.ket) { + this.ket = (this.ket + adjustment) | 0; + } +}; + + +function BaseStemmer$insert$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s); + if (c_bra <= $this.bra) { + $this.bra = ($this.bra + adjustment) | 0; + } + if (c_bra <= $this.ket) { + $this.ket = ($this.ket + adjustment) | 0; + } +}; + +BaseStemmer.insert$LBaseStemmer$IIS = BaseStemmer$insert$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_to$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + result = this.current.slice(this.bra, this.ket); + } + return result; +}; + + +function BaseStemmer$slice_to$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + result = $this.current.slice($this.bra, $this.ket); + } + return result; +}; + +BaseStemmer.slice_to$LBaseStemmer$S = BaseStemmer$slice_to$LBaseStemmer$S; + +BaseStemmer.prototype.assign_to$S = function (s) { + return this.current.slice(0, this.limit); +}; + + +function BaseStemmer$assign_to$LBaseStemmer$S($this, s) { + return $this.current.slice(0, $this.limit); +}; + +BaseStemmer.assign_to$LBaseStemmer$S = BaseStemmer$assign_to$LBaseStemmer$S; + +BaseStemmer.prototype.stem$ = function () { + return false; +}; + + +BaseStemmer.prototype.stemWord$S = function (word) { + var result; + var current$0; + var cursor$0; + var limit$0; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + return result; +}; + +BaseStemmer.prototype.stemWord = BaseStemmer.prototype.stemWord$S; + +BaseStemmer.prototype.stemWords$AS = function (words) { + var results; + var i; + var word; + var result; + var current$0; + var cursor$0; + var limit$0; + results = [ ]; + for (i = 0; i < words.length; i++) { + word = words[i]; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + results.push(result); + } + return results; +}; + +BaseStemmer.prototype.stemWords = BaseStemmer.prototype.stemWords$AS; + +function DanishStemmer() { + BaseStemmer.call(this); + this.I_x = 0; + this.I_p1 = 0; + this.S_ch = ""; +}; + +$__jsx_extend([DanishStemmer], BaseStemmer); +DanishStemmer.prototype.copy_from$LDanishStemmer$ = function (other) { + this.I_x = other.I_x; + this.I_p1 = other.I_p1; + this.S_ch = other.S_ch; + BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$(this, other); +}; + +DanishStemmer.prototype.copy_from = DanishStemmer.prototype.copy_from$LDanishStemmer$; + +DanishStemmer.prototype.r_mark_regions$ = function () { + var v_1; + var v_2; + var c; + var lab1; + var lab3; + var lab4; + var cursor$0; + var limit$0; + var cursor$1; + var cursor$2; + var $__jsx_postinc_t; + this.I_p1 = limit$0 = this.limit; + v_1 = cursor$0 = this.cursor; + c = (cursor$0 + 3 | 0); + if (0 > c || c > limit$0) { + return false; + } + cursor$2 = this.cursor = c; + this.I_x = cursor$2; + this.cursor = v_1; +golab0: + while (true) { + v_2 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, DanishStemmer.g_v, 97, 248)) { + break lab1; + } + this.cursor = v_2; + break golab0; + } + cursor$1 = this.cursor = v_2; + if (cursor$1 >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, DanishStemmer.g_v, 97, 248)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p1 = this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! (this.I_p1 < this.I_x)) { + break lab4; + } + this.I_p1 = this.I_x; + } + return true; +}; + +DanishStemmer.prototype.r_mark_regions = DanishStemmer.prototype.r_mark_regions$; + +function DanishStemmer$r_mark_regions$LDanishStemmer$($this) { + var v_1; + var v_2; + var c; + var lab1; + var lab3; + var lab4; + var cursor$0; + var limit$0; + var cursor$1; + var cursor$2; + var $__jsx_postinc_t; + $this.I_p1 = limit$0 = $this.limit; + v_1 = cursor$0 = $this.cursor; + c = (cursor$0 + 3 | 0); + if (0 > c || c > limit$0) { + return false; + } + cursor$2 = $this.cursor = c; + $this.I_x = cursor$2; + $this.cursor = v_1; +golab0: + while (true) { + v_2 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, DanishStemmer.g_v, 97, 248)) { + break lab1; + } + $this.cursor = v_2; + break golab0; + } + cursor$1 = $this.cursor = v_2; + if (cursor$1 >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, DanishStemmer.g_v, 97, 248)) { + break lab3; + } + break golab2; + } + if ($this.cursor >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p1 = $this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! ($this.I_p1 < $this.I_x)) { + break lab4; + } + $this.I_p1 = $this.I_x; + } + return true; +}; + +DanishStemmer.r_mark_regions$LDanishStemmer$ = DanishStemmer$r_mark_regions$LDanishStemmer$; + +DanishStemmer.prototype.r_main_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, DanishStemmer.a_0, 32); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, DanishStemmer.g_s_ending, 97, 229)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +DanishStemmer.prototype.r_main_suffix = DanishStemmer.prototype.r_main_suffix$; + +function DanishStemmer$r_main_suffix$LDanishStemmer$($this) { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_p1) { + return false; + } + cursor$1 = $this.cursor = $this.I_p1; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, DanishStemmer.a_0, 32); + if (among_var === 0) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + $this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, DanishStemmer.g_s_ending, 97, 229)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +DanishStemmer.r_main_suffix$LDanishStemmer$ = DanishStemmer$r_main_suffix$LDanishStemmer$; + +DanishStemmer.prototype.r_consonant_pair$ = function () { + var v_1; + var v_2; + var v_3; + var limit$0; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + var limit_backward$0; + var $__jsx_postinc_t; + v_1 = (((limit$0 = this.limit) - (cursor$0 = this.cursor)) | 0); + v_2 = ((limit$0 - cursor$0) | 0); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_3 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_2) | 0); + this.ket = cursor$2; + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, DanishStemmer.a_1, 4) === 0) { + this.limit_backward = v_3; + return false; + } + this.bra = this.cursor; + limit_backward$0 = this.limit_backward = v_3; + cursor$3 = this.cursor = ((this.limit - v_1) | 0); + if (cursor$3 <= limit_backward$0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + this.bra = this.cursor; + return (! BaseStemmer$slice_from$LBaseStemmer$S(this, "") ? false : true); +}; + +DanishStemmer.prototype.r_consonant_pair = DanishStemmer.prototype.r_consonant_pair$; + +function DanishStemmer$r_consonant_pair$LDanishStemmer$($this) { + var v_1; + var v_2; + var v_3; + var limit$0; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + var limit_backward$0; + var $__jsx_postinc_t; + v_1 = (((limit$0 = $this.limit) - (cursor$0 = $this.cursor)) | 0); + v_2 = ((limit$0 - cursor$0) | 0); + if (cursor$0 < $this.I_p1) { + return false; + } + cursor$1 = $this.cursor = $this.I_p1; + v_3 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_2) | 0); + $this.ket = cursor$2; + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, DanishStemmer.a_1, 4) === 0) { + $this.limit_backward = v_3; + return false; + } + $this.bra = $this.cursor; + limit_backward$0 = $this.limit_backward = v_3; + cursor$3 = $this.cursor = (($this.limit - v_1) | 0); + if (cursor$3 <= limit_backward$0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + $this.bra = $this.cursor; + return (! BaseStemmer$slice_from$LBaseStemmer$S($this, "") ? false : true); +}; + +DanishStemmer.r_consonant_pair$LDanishStemmer$ = DanishStemmer$r_consonant_pair$LDanishStemmer$; + +DanishStemmer.prototype.r_other_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var lab0; + var lab1; + var limit$0; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = ((this.limit - this.cursor) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "st")) { + break lab0; + } + this.bra = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "ig")) { + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + cursor$0 = this.cursor = (((limit$0 = this.limit) - v_1) | 0); + v_2 = ((limit$0 - cursor$0) | 0); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_3 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_2) | 0); + this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, DanishStemmer.a_2, 5); + if (among_var === 0) { + this.limit_backward = v_3; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_3; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_4 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! DanishStemmer$r_consonant_pair$LDanishStemmer$(this)) { + break lab1; + } + } + this.cursor = ((this.limit - v_4) | 0); + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "l\u00F8s")) { + return false; + } + break; + } + return true; +}; + +DanishStemmer.prototype.r_other_suffix = DanishStemmer.prototype.r_other_suffix$; + +function DanishStemmer$r_other_suffix$LDanishStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var lab0; + var lab1; + var limit$0; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = (($this.limit - $this.cursor) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "st")) { + break lab0; + } + $this.bra = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "ig")) { + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + cursor$0 = $this.cursor = (((limit$0 = $this.limit) - v_1) | 0); + v_2 = ((limit$0 - cursor$0) | 0); + if (cursor$0 < $this.I_p1) { + return false; + } + cursor$1 = $this.cursor = $this.I_p1; + v_3 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_2) | 0); + $this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, DanishStemmer.a_2, 5); + if (among_var === 0) { + $this.limit_backward = v_3; + return false; + } + $this.bra = $this.cursor; + $this.limit_backward = v_3; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_4 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! DanishStemmer$r_consonant_pair$LDanishStemmer$($this)) { + break lab1; + } + } + $this.cursor = (($this.limit - v_4) | 0); + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "l\u00F8s")) { + return false; + } + break; + } + return true; +}; + +DanishStemmer.r_other_suffix$LDanishStemmer$ = DanishStemmer$r_other_suffix$LDanishStemmer$; + +DanishStemmer.prototype.r_undouble$ = function () { + var v_1; + var v_2; + var s$0; + var cursor$0; + var cursor$1; + var cursor$2; + var S_ch$0; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, DanishStemmer.g_v, 97, 248)) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + S_ch$0 = this.S_ch = BaseStemmer$slice_to$LBaseStemmer$S(this, this.S_ch); + if (S_ch$0 === '') { + return false; + } + this.limit_backward = v_2; + return (! (s$0 = this.S_ch, BaseStemmer$eq_s_b$LBaseStemmer$IS(this, s$0.length, s$0)) ? false : ! BaseStemmer$slice_from$LBaseStemmer$S(this, "") ? false : true); +}; + +DanishStemmer.prototype.r_undouble = DanishStemmer.prototype.r_undouble$; + +function DanishStemmer$r_undouble$LDanishStemmer$($this) { + var v_1; + var v_2; + var s$0; + var cursor$0; + var cursor$1; + var cursor$2; + var S_ch$0; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_p1) { + return false; + } + cursor$1 = $this.cursor = $this.I_p1; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, DanishStemmer.g_v, 97, 248)) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + S_ch$0 = $this.S_ch = BaseStemmer$slice_to$LBaseStemmer$S($this, $this.S_ch); + if (S_ch$0 === '') { + return false; + } + $this.limit_backward = v_2; + return (! (s$0 = $this.S_ch, BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s$0.length, s$0)) ? false : ! BaseStemmer$slice_from$LBaseStemmer$S($this, "") ? false : true); +}; + +DanishStemmer.r_undouble$LDanishStemmer$ = DanishStemmer$r_undouble$LDanishStemmer$; + +DanishStemmer.prototype.stem$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var cursor$0; + var limit$0; + var cursor$1; + var limit$1; + var cursor$2; + var limit$2; + var cursor$3; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! DanishStemmer$r_mark_regions$LDanishStemmer$(this)) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = ((limit$0 - cursor$1) | 0); + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! DanishStemmer$r_main_suffix$LDanishStemmer$(this)) { + break lab1; + } + } + cursor$2 = this.cursor = (((limit$1 = this.limit) - v_2) | 0); + v_3 = ((limit$1 - cursor$2) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! DanishStemmer$r_consonant_pair$LDanishStemmer$(this)) { + break lab2; + } + } + cursor$3 = this.cursor = (((limit$2 = this.limit) - v_3) | 0); + v_4 = ((limit$2 - cursor$3) | 0); + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! DanishStemmer$r_other_suffix$LDanishStemmer$(this)) { + break lab3; + } + } + this.cursor = ((this.limit - v_4) | 0); + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! DanishStemmer$r_undouble$LDanishStemmer$(this)) { + break lab4; + } + } + this.cursor = this.limit_backward; + return true; +}; + +DanishStemmer.prototype.stem = DanishStemmer.prototype.stem$; + +DanishStemmer.prototype.equals$X = function (o) { + return o instanceof DanishStemmer; +}; + +DanishStemmer.prototype.equals = DanishStemmer.prototype.equals$X; + +function DanishStemmer$equals$LDanishStemmer$X($this, o) { + return o instanceof DanishStemmer; +}; + +DanishStemmer.equals$LDanishStemmer$X = DanishStemmer$equals$LDanishStemmer$X; + +DanishStemmer.prototype.hashCode$ = function () { + var classname; + var hash; + var i; + var char; + classname = "DanishStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +DanishStemmer.prototype.hashCode = DanishStemmer.prototype.hashCode$; + +function DanishStemmer$hashCode$LDanishStemmer$($this) { + var classname; + var hash; + var i; + var char; + classname = "DanishStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +DanishStemmer.hashCode$LDanishStemmer$ = DanishStemmer$hashCode$LDanishStemmer$; + +DanishStemmer.serialVersionUID = 1; +$__jsx_lazy_init(DanishStemmer, "methodObject", function () { + return new DanishStemmer(); +}); +$__jsx_lazy_init(DanishStemmer, "a_0", function () { + return [ new Among("hed", -1, 1), new Among("ethed", 0, 1), new Among("ered", -1, 1), new Among("e", -1, 1), new Among("erede", 3, 1), new Among("ende", 3, 1), new Among("erende", 5, 1), new Among("ene", 3, 1), new Among("erne", 3, 1), new Among("ere", 3, 1), new Among("en", -1, 1), new Among("heden", 10, 1), new Among("eren", 10, 1), new Among("er", -1, 1), new Among("heder", 13, 1), new Among("erer", 13, 1), new Among("s", -1, 2), new Among("heds", 16, 1), new Among("es", 16, 1), new Among("endes", 18, 1), new Among("erendes", 19, 1), new Among("enes", 18, 1), new Among("ernes", 18, 1), new Among("eres", 18, 1), new Among("ens", 16, 1), new Among("hedens", 24, 1), new Among("erens", 24, 1), new Among("ers", 16, 1), new Among("ets", 16, 1), new Among("erets", 28, 1), new Among("et", -1, 1), new Among("eret", 30, 1) ]; +}); +$__jsx_lazy_init(DanishStemmer, "a_1", function () { + return [ new Among("gd", -1, -1), new Among("dt", -1, -1), new Among("gt", -1, -1), new Among("kt", -1, -1) ]; +}); +$__jsx_lazy_init(DanishStemmer, "a_2", function () { + return [ new Among("ig", -1, 1), new Among("lig", 0, 1), new Among("elig", 1, 1), new Among("els", -1, 1), new Among("l\u00F8st", -1, 2) ]; +}); +DanishStemmer.g_v = [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 ]; +DanishStemmer.g_s_ending = [ 239, 254, 42, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16 ]; + +var $__jsx_classMap = { + "src/among.jsx": { + Among: Among, + Among$SII: Among, + Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$0 + }, + "src/stemmer.jsx": { + Stemmer: Stemmer, + Stemmer$: Stemmer + }, + "src/base-stemmer.jsx": { + BaseStemmer: BaseStemmer, + BaseStemmer$: BaseStemmer + }, + "src/danish-stemmer.jsx": { + DanishStemmer: DanishStemmer, + DanishStemmer$: DanishStemmer + } +}; + + +})(JSX); + +var Among = JSX.require("src/among.jsx").Among; +var Among$SII = JSX.require("src/among.jsx").Among$SII; +var Stemmer = JSX.require("src/stemmer.jsx").Stemmer; +var BaseStemmer = JSX.require("src/base-stemmer.jsx").BaseStemmer; +var DanishStemmer = JSX.require("src/danish-stemmer.jsx").DanishStemmer; diff --git a/sphinx/sphinx/search/non-minified-js/dutch-stemmer.js b/sphinx/sphinx/search/non-minified-js/dutch-stemmer.js new file mode 100644 index 0000000..15c053a --- /dev/null +++ b/sphinx/sphinx/search/non-minified-js/dutch-stemmer.js @@ -0,0 +1,2637 @@ +// generatedy by JSX compiler 0.9.89 (2014-05-20 06:01:03 +0900; 8e8c6105f36f3dfe440ea026a3c93a3444977102) +var JSX = {}; +(function (JSX) { +/** + * extends the class + */ +function $__jsx_extend(derivations, base) { + var ctor = function () {}; + ctor.prototype = base.prototype; + var proto = new ctor(); + for (var i in derivations) { + derivations[i].prototype = proto; + } +} + +/** + * copies the implementations from source interface to target + */ +function $__jsx_merge_interface(target, source) { + for (var k in source.prototype) + if (source.prototype.hasOwnProperty(k)) + target.prototype[k] = source.prototype[k]; +} + +/** + * defers the initialization of the property + */ +function $__jsx_lazy_init(obj, prop, func) { + function reset(obj, prop, value) { + delete obj[prop]; + obj[prop] = value; + return value; + } + + Object.defineProperty(obj, prop, { + get: function () { + return reset(obj, prop, func()); + }, + set: function (v) { + reset(obj, prop, v); + }, + enumerable: true, + configurable: true + }); +} + +var $__jsx_imul = Math.imul; +if (typeof $__jsx_imul === "undefined") { + $__jsx_imul = function (a, b) { + var ah = (a >>> 16) & 0xffff; + var al = a & 0xffff; + var bh = (b >>> 16) & 0xffff; + var bl = b & 0xffff; + return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0); + }; +} + +/** + * fused int-ops with side-effects + */ +function $__jsx_ipadd(o, p, r) { + return o[p] = (o[p] + r) | 0; +} +function $__jsx_ipsub(o, p, r) { + return o[p] = (o[p] - r) | 0; +} +function $__jsx_ipmul(o, p, r) { + return o[p] = $__jsx_imul(o[p], r); +} +function $__jsx_ipdiv(o, p, r) { + return o[p] = (o[p] / r) | 0; +} +function $__jsx_ipmod(o, p, r) { + return o[p] = (o[p] % r) | 0; +} +function $__jsx_ippostinc(o, p) { + var v = o[p]; + o[p] = (v + 1) | 0; + return v; +} +function $__jsx_ippostdec(o, p) { + var v = o[p]; + o[p] = (v - 1) | 0; + return v; +} + +/** + * non-inlined version of Array#each + */ +function $__jsx_forEach(o, f) { + var l = o.length; + for (var i = 0; i < l; ++i) + f(o[i]); +} + +/* + * global functions, renamed to avoid conflict with local variable names + */ +var $__jsx_parseInt = parseInt; +var $__jsx_parseFloat = parseFloat; +function $__jsx_isNaN(n) { return n !== n; } +var $__jsx_isFinite = isFinite; + +var $__jsx_encodeURIComponent = encodeURIComponent; +var $__jsx_decodeURIComponent = decodeURIComponent; +var $__jsx_encodeURI = encodeURI; +var $__jsx_decodeURI = decodeURI; + +var $__jsx_ObjectToString = Object.prototype.toString; +var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty; + +/* + * profiler object, initialized afterwards + */ +function $__jsx_profiler() { +} + +/* + * public interface to JSX code + */ +JSX.require = function (path) { + var m = $__jsx_classMap[path]; + return m !== undefined ? m : null; +}; + +JSX.profilerIsRunning = function () { + return $__jsx_profiler.getResults != null; +}; + +JSX.getProfileResults = function () { + return ($__jsx_profiler.getResults || function () { return {}; })(); +}; + +JSX.postProfileResults = function (url, cb) { + if ($__jsx_profiler.postResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.postResults(url, cb); +}; + +JSX.resetProfileResults = function () { + if ($__jsx_profiler.resetResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.resetResults(); +}; +JSX.DEBUG = false; +var GeneratorFunction$0 = +(function () { + try { + return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); + } catch (e) { + return function GeneratorFunction () {}; + } +})(); +var __jsx_generator_object$0 = +(function () { + function __jsx_generator_object() { + this.__next = 0; + this.__loop = null; + this.__seed = null; + this.__value = undefined; + this.__status = 0; // SUSPENDED: 0, ACTIVE: 1, DEAD: 2 + } + + __jsx_generator_object.prototype.next = function (seed) { + switch (this.__status) { + case 0: + this.__status = 1; + this.__seed = seed; + + // go next! + this.__loop(this.__next); + + var done = false; + if (this.__next != -1) { + this.__status = 0; + } else { + this.__status = 2; + done = true; + } + return { value: this.__value, done: done }; + case 1: + throw new Error("Generator is already running"); + case 2: + throw new Error("Generator is already finished"); + default: + throw new Error("Unexpected generator internal state"); + } + }; + + return __jsx_generator_object; +}()); +function Among(s, substring_i, result) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = null; + this.instance = null; +}; + +function Among$0(s, substring_i, result, method, instance) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = method; + this.instance = instance; +}; + +$__jsx_extend([Among, Among$0], Object); +function Stemmer() { +}; + +$__jsx_extend([Stemmer], Object); +function BaseStemmer() { + var current$0; + var cursor$0; + var limit$0; + this.cache = ({ }); + current$0 = this.current = ""; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +$__jsx_extend([BaseStemmer], Stemmer); +BaseStemmer.prototype.setCurrent$S = function (value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = this.current = value; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + + +function BaseStemmer$setCurrent$LBaseStemmer$S($this, value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = $this.current = value; + cursor$0 = $this.cursor = 0; + limit$0 = $this.limit = current$0.length; + $this.limit_backward = 0; + $this.bra = cursor$0; + $this.ket = limit$0; +}; + +BaseStemmer.setCurrent$LBaseStemmer$S = BaseStemmer$setCurrent$LBaseStemmer$S; + +BaseStemmer.prototype.getCurrent$ = function () { + return this.current; +}; + + +function BaseStemmer$getCurrent$LBaseStemmer$($this) { + return $this.current; +}; + +BaseStemmer.getCurrent$LBaseStemmer$ = BaseStemmer$getCurrent$LBaseStemmer$; + +BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; +}; + + +function BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$($this, other) { + $this.current = other.current; + $this.cursor = other.cursor; + $this.limit = other.limit; + $this.limit_backward = other.limit_backward; + $this.bra = other.bra; + $this.ket = other.ket; +}; + +BaseStemmer.copy_from$LBaseStemmer$LBaseStemmer$ = BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$; + +BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping$LBaseStemmer$AIII = BaseStemmer$in_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping_b$LBaseStemmer$AIII = BaseStemmer$in_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping$LBaseStemmer$AIII = BaseStemmer$out_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping_b$LBaseStemmer$AIII = BaseStemmer$out_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range$LBaseStemmer$II = BaseStemmer$in_range$LBaseStemmer$II; + +BaseStemmer.prototype.in_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range_b$LBaseStemmer$II = BaseStemmer$in_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.out_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range$LBaseStemmer$II = BaseStemmer$out_range$LBaseStemmer$II; + +BaseStemmer.prototype.out_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range_b$LBaseStemmer$II = BaseStemmer$out_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.eq_s$IS = function (s_size, s) { + var cursor$0; + if (((this.limit - this.cursor) | 0) < s_size) { + return false; + } + if (this.current.slice(cursor$0 = this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + this.cursor = (this.cursor + s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.limit - $this.cursor) | 0) < s_size) { + return false; + } + if ($this.current.slice(cursor$0 = $this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + $this.cursor = ($this.cursor + s_size) | 0; + return true; +}; + +BaseStemmer.eq_s$LBaseStemmer$IS = BaseStemmer$eq_s$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) { + var cursor$0; + if (((this.cursor - this.limit_backward) | 0) < s_size) { + return false; + } + if (this.current.slice((((cursor$0 = this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + this.cursor = (this.cursor - s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.cursor - $this.limit_backward) | 0) < s_size) { + return false; + } + if ($this.current.slice((((cursor$0 = $this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + $this.cursor = ($this.cursor - s_size) | 0; + return true; +}; + +BaseStemmer.eq_s_b$LBaseStemmer$IS = BaseStemmer$eq_s_b$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_v$S = function (s) { + return BaseStemmer$eq_s$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v$LBaseStemmer$S = BaseStemmer$eq_v$LBaseStemmer$S; + +BaseStemmer.prototype.eq_v_b$S = function (s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v_b$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v_b$LBaseStemmer$S = BaseStemmer$eq_v_b$LBaseStemmer$S; + +BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + l = this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + l = $this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + $this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among$LBaseStemmer$ALAmong$I = BaseStemmer$find_among$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + lb = this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(this); + this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + lb = $this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method($this); + $this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among_b$LBaseStemmer$ALAmong$I = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit = (this.limit + adjustment) | 0; + if (this.cursor >= c_ket) { + this.cursor = (this.cursor + adjustment) | 0; + } else if (this.cursor > c_bra) { + this.cursor = c_bra; + } + return (adjustment | 0); +}; + + +function BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + $this.current = $this.current.slice(0, c_bra) + s + $this.current.slice(c_ket); + $this.limit = ($this.limit + adjustment) | 0; + if ($this.cursor >= c_ket) { + $this.cursor = ($this.cursor + adjustment) | 0; + } else if ($this.cursor > c_bra) { + $this.cursor = c_bra; + } + return (adjustment | 0); +}; + +BaseStemmer.replace_s$LBaseStemmer$IIS = BaseStemmer$replace_s$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_check$ = function () { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true); +}; + + +function BaseStemmer$slice_check$LBaseStemmer$($this) { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true); +}; + +BaseStemmer.slice_check$LBaseStemmer$ = BaseStemmer$slice_check$LBaseStemmer$; + +BaseStemmer.prototype.slice_from$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS(this, this.bra, this.ket, s); + result = true; + } + return result; +}; + + +function BaseStemmer$slice_from$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS($this, $this.bra, $this.ket, s); + result = true; + } + return result; +}; + +BaseStemmer.slice_from$LBaseStemmer$S = BaseStemmer$slice_from$LBaseStemmer$S; + +BaseStemmer.prototype.slice_del$ = function () { + return BaseStemmer$slice_from$LBaseStemmer$S(this, ""); +}; + + +function BaseStemmer$slice_del$LBaseStemmer$($this) { + return BaseStemmer$slice_from$LBaseStemmer$S($this, ""); +}; + +BaseStemmer.slice_del$LBaseStemmer$ = BaseStemmer$slice_del$LBaseStemmer$; + +BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS(this, c_bra, c_ket, s); + if (c_bra <= this.bra) { + this.bra = (this.bra + adjustment) | 0; + } + if (c_bra <= this.ket) { + this.ket = (this.ket + adjustment) | 0; + } +}; + + +function BaseStemmer$insert$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s); + if (c_bra <= $this.bra) { + $this.bra = ($this.bra + adjustment) | 0; + } + if (c_bra <= $this.ket) { + $this.ket = ($this.ket + adjustment) | 0; + } +}; + +BaseStemmer.insert$LBaseStemmer$IIS = BaseStemmer$insert$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_to$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + result = this.current.slice(this.bra, this.ket); + } + return result; +}; + + +function BaseStemmer$slice_to$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + result = $this.current.slice($this.bra, $this.ket); + } + return result; +}; + +BaseStemmer.slice_to$LBaseStemmer$S = BaseStemmer$slice_to$LBaseStemmer$S; + +BaseStemmer.prototype.assign_to$S = function (s) { + return this.current.slice(0, this.limit); +}; + + +function BaseStemmer$assign_to$LBaseStemmer$S($this, s) { + return $this.current.slice(0, $this.limit); +}; + +BaseStemmer.assign_to$LBaseStemmer$S = BaseStemmer$assign_to$LBaseStemmer$S; + +BaseStemmer.prototype.stem$ = function () { + return false; +}; + + +BaseStemmer.prototype.stemWord$S = function (word) { + var result; + var current$0; + var cursor$0; + var limit$0; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + return result; +}; + +BaseStemmer.prototype.stemWord = BaseStemmer.prototype.stemWord$S; + +BaseStemmer.prototype.stemWords$AS = function (words) { + var results; + var i; + var word; + var result; + var current$0; + var cursor$0; + var limit$0; + results = [ ]; + for (i = 0; i < words.length; i++) { + word = words[i]; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + results.push(result); + } + return results; +}; + +BaseStemmer.prototype.stemWords = BaseStemmer.prototype.stemWords$AS; + +function DutchStemmer() { + BaseStemmer.call(this); + this.I_p2 = 0; + this.I_p1 = 0; + this.B_e_found = false; +}; + +$__jsx_extend([DutchStemmer], BaseStemmer); +DutchStemmer.prototype.copy_from$LDutchStemmer$ = function (other) { + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + this.B_e_found = other.B_e_found; + BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$(this, other); +}; + +DutchStemmer.prototype.copy_from = DutchStemmer.prototype.copy_from$LDutchStemmer$; + +DutchStemmer.prototype.r_prelude$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var lab1; + var lab2; + var lab4; + var lab6; + var lab7; + var lab8; + var cursor$0; + var cursor$1; + var $__jsx_postinc_t; + v_1 = this.cursor; +replab0: + while (true) { + v_2 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I(this, DutchStemmer.a_0, 11); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "i")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "o")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "u")) { + return false; + } + break; + case 6: + if (this.cursor >= this.limit) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + this.cursor = v_2; + break replab0; + } + cursor$0 = this.cursor = v_1; + v_3 = cursor$0; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + this.bra = this.cursor; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "y")) { + this.cursor = v_3; + break lab2; + } + this.ket = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "Y")) { + return false; + } + } +replab3: + while (true) { + v_4 = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + golab5: + while (true) { + v_5 = this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, DutchStemmer.g_v, 97, 232)) { + break lab6; + } + this.bra = this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + v_6 = this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "i")) { + break lab8; + } + this.ket = this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, DutchStemmer.g_v, 97, 232)) { + break lab8; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "I")) { + return false; + } + break lab7; + } + this.cursor = v_6; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "y")) { + break lab6; + } + this.ket = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "Y")) { + return false; + } + } + this.cursor = v_5; + break golab5; + } + cursor$1 = this.cursor = v_5; + if (cursor$1 >= this.limit) { + break lab4; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + continue replab3; + } + this.cursor = v_4; + break replab3; + } + return true; +}; + +DutchStemmer.prototype.r_prelude = DutchStemmer.prototype.r_prelude$; + +function DutchStemmer$r_prelude$LDutchStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var lab1; + var lab2; + var lab4; + var lab6; + var lab7; + var lab8; + var cursor$0; + var cursor$1; + var $__jsx_postinc_t; + v_1 = $this.cursor; +replab0: + while (true) { + v_2 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + $this.bra = $this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, DutchStemmer.a_0, 11); + if (among_var === 0) { + break lab1; + } + $this.ket = $this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "i")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "o")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "u")) { + return false; + } + break; + case 6: + if ($this.cursor >= $this.limit) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + $this.cursor = v_2; + break replab0; + } + cursor$0 = $this.cursor = v_1; + v_3 = cursor$0; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + $this.bra = $this.cursor; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "y")) { + $this.cursor = v_3; + break lab2; + } + $this.ket = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "Y")) { + return false; + } + } +replab3: + while (true) { + v_4 = $this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + golab5: + while (true) { + v_5 = $this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, DutchStemmer.g_v, 97, 232)) { + break lab6; + } + $this.bra = $this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + v_6 = $this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "i")) { + break lab8; + } + $this.ket = $this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, DutchStemmer.g_v, 97, 232)) { + break lab8; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "I")) { + return false; + } + break lab7; + } + $this.cursor = v_6; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "y")) { + break lab6; + } + $this.ket = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "Y")) { + return false; + } + } + $this.cursor = v_5; + break golab5; + } + cursor$1 = $this.cursor = v_5; + if (cursor$1 >= $this.limit) { + break lab4; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + continue replab3; + } + $this.cursor = v_4; + break replab3; + } + return true; +}; + +DutchStemmer.r_prelude$LDutchStemmer$ = DutchStemmer$r_prelude$LDutchStemmer$; + +DutchStemmer.prototype.r_mark_regions$ = function () { + var lab1; + var lab3; + var lab4; + var lab6; + var lab8; + var limit$0; + var $__jsx_postinc_t; + this.I_p1 = limit$0 = this.limit; + this.I_p2 = limit$0; +golab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, DutchStemmer.g_v, 97, 232)) { + break lab1; + } + break golab0; + } + if (this.cursor >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, DutchStemmer.g_v, 97, 232)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p1 = this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! (this.I_p1 < 3)) { + break lab4; + } + this.I_p1 = 3; + } +golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, DutchStemmer.g_v, 97, 232)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } +golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, DutchStemmer.g_v, 97, 232)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p2 = this.cursor; + return true; +}; + +DutchStemmer.prototype.r_mark_regions = DutchStemmer.prototype.r_mark_regions$; + +function DutchStemmer$r_mark_regions$LDutchStemmer$($this) { + var lab1; + var lab3; + var lab4; + var lab6; + var lab8; + var limit$0; + var $__jsx_postinc_t; + $this.I_p1 = limit$0 = $this.limit; + $this.I_p2 = limit$0; +golab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, DutchStemmer.g_v, 97, 232)) { + break lab1; + } + break golab0; + } + if ($this.cursor >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, DutchStemmer.g_v, 97, 232)) { + break lab3; + } + break golab2; + } + if ($this.cursor >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p1 = $this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! ($this.I_p1 < 3)) { + break lab4; + } + $this.I_p1 = 3; + } +golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, DutchStemmer.g_v, 97, 232)) { + break lab6; + } + break golab5; + } + if ($this.cursor >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } +golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, DutchStemmer.g_v, 97, 232)) { + break lab8; + } + break golab7; + } + if ($this.cursor >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p2 = $this.cursor; + return true; +}; + +DutchStemmer.r_mark_regions$LDutchStemmer$ = DutchStemmer$r_mark_regions$LDutchStemmer$; + +DutchStemmer.prototype.r_postlude$ = function () { + var among_var; + var v_1; + var lab1; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I(this, DutchStemmer.a_1, 3); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "y")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "i")) { + return false; + } + break; + case 3: + if (this.cursor >= this.limit) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +DutchStemmer.prototype.r_postlude = DutchStemmer.prototype.r_postlude$; + +function DutchStemmer$r_postlude$LDutchStemmer$($this) { + var among_var; + var v_1; + var lab1; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + $this.bra = $this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, DutchStemmer.a_1, 3); + if (among_var === 0) { + break lab1; + } + $this.ket = $this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "y")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "i")) { + return false; + } + break; + case 3: + if ($this.cursor >= $this.limit) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + $this.cursor = v_1; + break replab0; + } + return true; +}; + +DutchStemmer.r_postlude$LDutchStemmer$ = DutchStemmer$r_postlude$LDutchStemmer$; + +DutchStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +DutchStemmer.prototype.r_R1 = DutchStemmer.prototype.r_R1$; + +function DutchStemmer$r_R1$LDutchStemmer$($this) { + return (! ($this.I_p1 <= $this.cursor) ? false : true); +}; + +DutchStemmer.r_R1$LDutchStemmer$ = DutchStemmer$r_R1$LDutchStemmer$; + +DutchStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +DutchStemmer.prototype.r_R2 = DutchStemmer.prototype.r_R2$; + +function DutchStemmer$r_R2$LDutchStemmer$($this) { + return (! ($this.I_p2 <= $this.cursor) ? false : true); +}; + +DutchStemmer.r_R2$LDutchStemmer$ = DutchStemmer$r_R2$LDutchStemmer$; + +DutchStemmer.prototype.r_undouble$ = function () { + var v_1; + var cursor$0; + var $__jsx_postinc_t; + v_1 = ((this.limit - this.cursor) | 0); + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, DutchStemmer.a_2, 3) === 0) { + return false; + } + cursor$0 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$0; + if (cursor$0 <= this.limit_backward) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + this.bra = this.cursor; + return (! BaseStemmer$slice_from$LBaseStemmer$S(this, "") ? false : true); +}; + +DutchStemmer.prototype.r_undouble = DutchStemmer.prototype.r_undouble$; + +function DutchStemmer$r_undouble$LDutchStemmer$($this) { + var v_1; + var cursor$0; + var $__jsx_postinc_t; + v_1 = (($this.limit - $this.cursor) | 0); + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, DutchStemmer.a_2, 3) === 0) { + return false; + } + cursor$0 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$0; + if (cursor$0 <= $this.limit_backward) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + $this.bra = $this.cursor; + return (! BaseStemmer$slice_from$LBaseStemmer$S($this, "") ? false : true); +}; + +DutchStemmer.r_undouble$LDutchStemmer$ = DutchStemmer$r_undouble$LDutchStemmer$; + +DutchStemmer.prototype.r_e_ending$ = function () { + var v_1; + var cursor$0; + this.B_e_found = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "e")) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + v_1 = ((this.limit - this.cursor) | 0); + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, DutchStemmer.g_v, 97, 232)) { + return false; + } + this.cursor = ((this.limit - v_1) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + this.B_e_found = true; + return (! DutchStemmer$r_undouble$LDutchStemmer$(this) ? false : true); +}; + +DutchStemmer.prototype.r_e_ending = DutchStemmer.prototype.r_e_ending$; + +function DutchStemmer$r_e_ending$LDutchStemmer$($this) { + var v_1; + var cursor$0; + $this.B_e_found = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "e")) { + return false; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + v_1 = (($this.limit - $this.cursor) | 0); + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, DutchStemmer.g_v, 97, 232)) { + return false; + } + $this.cursor = (($this.limit - v_1) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + $this.B_e_found = true; + return (! DutchStemmer$r_undouble$LDutchStemmer$($this) ? false : true); +}; + +DutchStemmer.r_e_ending$LDutchStemmer$ = DutchStemmer$r_e_ending$LDutchStemmer$; + +DutchStemmer.prototype.r_en_ending$ = function () { + var v_1; + var v_2; + var lab0; + var limit$0; + var cursor$0; + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + v_1 = ((this.limit - this.cursor) | 0); + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, DutchStemmer.g_v, 97, 232)) { + return false; + } + cursor$0 = this.cursor = (((limit$0 = this.limit) - v_1) | 0); + v_2 = ((limit$0 - cursor$0) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 3, "gem")) { + break lab0; + } + return false; + } + this.cursor = ((this.limit - v_2) | 0); + return (! BaseStemmer$slice_from$LBaseStemmer$S(this, "") ? false : ! DutchStemmer$r_undouble$LDutchStemmer$(this) ? false : true); +}; + +DutchStemmer.prototype.r_en_ending = DutchStemmer.prototype.r_en_ending$; + +function DutchStemmer$r_en_ending$LDutchStemmer$($this) { + var v_1; + var v_2; + var lab0; + var limit$0; + var cursor$0; + if (! (! ($this.I_p1 <= $this.cursor) ? false : true)) { + return false; + } + v_1 = (($this.limit - $this.cursor) | 0); + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, DutchStemmer.g_v, 97, 232)) { + return false; + } + cursor$0 = $this.cursor = (((limit$0 = $this.limit) - v_1) | 0); + v_2 = ((limit$0 - cursor$0) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 3, "gem")) { + break lab0; + } + return false; + } + $this.cursor = (($this.limit - v_2) | 0); + return (! BaseStemmer$slice_from$LBaseStemmer$S($this, "") ? false : ! DutchStemmer$r_undouble$LDutchStemmer$($this) ? false : true); +}; + +DutchStemmer.r_en_ending$LDutchStemmer$ = DutchStemmer$r_en_ending$LDutchStemmer$; + +DutchStemmer.prototype.r_standard_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_10; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var limit$0; + var cursor$0; + var cursor$1; + var limit$1; + var cursor$2; + var cursor$3; + var limit$2; + var cursor$4; + var cursor$5; + var limit$3; + var cursor$6; + var $__jsx_postinc_t; + v_1 = ((this.limit - this.cursor) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, DutchStemmer.a_3, 5); + if (among_var === 0) { + break lab0; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + break lab0; + case 1: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "heid")) { + return false; + } + break; + case 2: + if (! DutchStemmer$r_en_ending$LDutchStemmer$(this)) { + break lab0; + } + break; + case 3: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + break lab0; + } + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, DutchStemmer.g_v_j, 97, 232)) { + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + } + cursor$0 = this.cursor = (((limit$0 = this.limit) - v_1) | 0); + v_2 = ((limit$0 - cursor$0) | 0); + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! DutchStemmer$r_e_ending$LDutchStemmer$(this)) { + break lab1; + } + } + cursor$2 = this.cursor = (((limit$1 = this.limit) - v_2) | 0); + v_3 = ((limit$1 - cursor$2) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 4, "heid")) { + break lab2; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_p2 <= cursor$1) ? false : true)) { + break lab2; + } + v_4 = ((this.limit - this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "c")) { + break lab3; + } + break lab2; + } + this.cursor = ((this.limit - v_4) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "en")) { + break lab2; + } + this.bra = this.cursor; + if (! DutchStemmer$r_en_ending$LDutchStemmer$(this)) { + break lab2; + } + } + cursor$4 = this.cursor = (((limit$2 = this.limit) - v_3) | 0); + v_5 = ((limit$2 - cursor$4) | 0); + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, DutchStemmer.a_4, 6); + if (among_var === 0) { + break lab4; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + break lab4; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab4; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_6 = ((this.limit - this.cursor) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "ig")) { + break lab6; + } + this.bra = cursor$3 = this.cursor; + if (! (! (this.I_p2 <= cursor$3) ? false : true)) { + break lab6; + } + v_7 = ((this.limit - this.cursor) | 0); + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "e")) { + break lab7; + } + break lab6; + } + this.cursor = ((this.limit - v_7) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break lab5; + } + this.cursor = ((this.limit - v_6) | 0); + if (! DutchStemmer$r_undouble$LDutchStemmer$(this)) { + break lab4; + } + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab4; + } + v_8 = ((this.limit - this.cursor) | 0); + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "e")) { + break lab8; + } + break lab4; + } + this.cursor = ((this.limit - v_8) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab4; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + if (! DutchStemmer$r_e_ending$LDutchStemmer$(this)) { + break lab4; + } + break; + case 4: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab4; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 5: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab4; + } + if (! this.B_e_found) { + break lab4; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + } + cursor$6 = this.cursor = (((limit$3 = this.limit) - v_5) | 0); + v_9 = ((limit$3 - cursor$6) | 0); + lab9 = true; +lab9: + while (lab9 === true) { + lab9 = false; + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, DutchStemmer.g_v_I, 73, 232)) { + break lab9; + } + v_10 = ((this.limit - this.cursor) | 0); + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, DutchStemmer.a_5, 4) === 0) { + break lab9; + } + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, DutchStemmer.g_v, 97, 232)) { + break lab9; + } + cursor$5 = this.cursor = ((this.limit - v_10) | 0); + this.ket = cursor$5; + if (cursor$5 <= this.limit_backward) { + break lab9; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + this.cursor = ((this.limit - v_9) | 0); + return true; +}; + +DutchStemmer.prototype.r_standard_suffix = DutchStemmer.prototype.r_standard_suffix$; + +function DutchStemmer$r_standard_suffix$LDutchStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_10; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var limit$0; + var cursor$0; + var cursor$1; + var limit$1; + var cursor$2; + var cursor$3; + var limit$2; + var cursor$4; + var cursor$5; + var limit$3; + var cursor$6; + var $__jsx_postinc_t; + v_1 = (($this.limit - $this.cursor) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, DutchStemmer.a_3, 5); + if (among_var === 0) { + break lab0; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + break lab0; + case 1: + if (! (! ($this.I_p1 <= $this.cursor) ? false : true)) { + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "heid")) { + return false; + } + break; + case 2: + if (! DutchStemmer$r_en_ending$LDutchStemmer$($this)) { + break lab0; + } + break; + case 3: + if (! (! ($this.I_p1 <= $this.cursor) ? false : true)) { + break lab0; + } + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, DutchStemmer.g_v_j, 97, 232)) { + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + } + cursor$0 = $this.cursor = (((limit$0 = $this.limit) - v_1) | 0); + v_2 = ((limit$0 - cursor$0) | 0); + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! DutchStemmer$r_e_ending$LDutchStemmer$($this)) { + break lab1; + } + } + cursor$2 = $this.cursor = (((limit$1 = $this.limit) - v_2) | 0); + v_3 = ((limit$1 - cursor$2) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 4, "heid")) { + break lab2; + } + $this.bra = cursor$1 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$1) ? false : true)) { + break lab2; + } + v_4 = (($this.limit - $this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "c")) { + break lab3; + } + break lab2; + } + $this.cursor = (($this.limit - v_4) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "en")) { + break lab2; + } + $this.bra = $this.cursor; + if (! DutchStemmer$r_en_ending$LDutchStemmer$($this)) { + break lab2; + } + } + cursor$4 = $this.cursor = (((limit$2 = $this.limit) - v_3) | 0); + v_5 = ((limit$2 - cursor$4) | 0); + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, DutchStemmer.a_4, 6); + if (among_var === 0) { + break lab4; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + break lab4; + case 1: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + break lab4; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_6 = (($this.limit - $this.cursor) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "ig")) { + break lab6; + } + $this.bra = cursor$3 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$3) ? false : true)) { + break lab6; + } + v_7 = (($this.limit - $this.cursor) | 0); + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "e")) { + break lab7; + } + break lab6; + } + $this.cursor = (($this.limit - v_7) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break lab5; + } + $this.cursor = (($this.limit - v_6) | 0); + if (! DutchStemmer$r_undouble$LDutchStemmer$($this)) { + break lab4; + } + } + break; + case 2: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + break lab4; + } + v_8 = (($this.limit - $this.cursor) | 0); + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "e")) { + break lab8; + } + break lab4; + } + $this.cursor = (($this.limit - v_8) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 3: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + break lab4; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + if (! DutchStemmer$r_e_ending$LDutchStemmer$($this)) { + break lab4; + } + break; + case 4: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + break lab4; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 5: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + break lab4; + } + if (! $this.B_e_found) { + break lab4; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + } + cursor$6 = $this.cursor = (((limit$3 = $this.limit) - v_5) | 0); + v_9 = ((limit$3 - cursor$6) | 0); + lab9 = true; +lab9: + while (lab9 === true) { + lab9 = false; + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, DutchStemmer.g_v_I, 73, 232)) { + break lab9; + } + v_10 = (($this.limit - $this.cursor) | 0); + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, DutchStemmer.a_5, 4) === 0) { + break lab9; + } + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, DutchStemmer.g_v, 97, 232)) { + break lab9; + } + cursor$5 = $this.cursor = (($this.limit - v_10) | 0); + $this.ket = cursor$5; + if (cursor$5 <= $this.limit_backward) { + break lab9; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + $this.cursor = (($this.limit - v_9) | 0); + return true; +}; + +DutchStemmer.r_standard_suffix$LDutchStemmer$ = DutchStemmer$r_standard_suffix$LDutchStemmer$; + +DutchStemmer.prototype.stem$ = function () { + var v_1; + var v_2; + var v_4; + var lab0; + var lab1; + var lab2; + var lab3; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! DutchStemmer$r_prelude$LDutchStemmer$(this)) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! DutchStemmer$r_mark_regions$LDutchStemmer$(this)) { + break lab1; + } + } + cursor$1 = this.cursor = v_2; + this.limit_backward = cursor$1; + this.cursor = this.limit; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! DutchStemmer$r_standard_suffix$LDutchStemmer$(this)) { + break lab2; + } + } + cursor$2 = this.cursor = this.limit_backward; + v_4 = cursor$2; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! DutchStemmer$r_postlude$LDutchStemmer$(this)) { + break lab3; + } + } + this.cursor = v_4; + return true; +}; + +DutchStemmer.prototype.stem = DutchStemmer.prototype.stem$; + +DutchStemmer.prototype.equals$X = function (o) { + return o instanceof DutchStemmer; +}; + +DutchStemmer.prototype.equals = DutchStemmer.prototype.equals$X; + +function DutchStemmer$equals$LDutchStemmer$X($this, o) { + return o instanceof DutchStemmer; +}; + +DutchStemmer.equals$LDutchStemmer$X = DutchStemmer$equals$LDutchStemmer$X; + +DutchStemmer.prototype.hashCode$ = function () { + var classname; + var hash; + var i; + var char; + classname = "DutchStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +DutchStemmer.prototype.hashCode = DutchStemmer.prototype.hashCode$; + +function DutchStemmer$hashCode$LDutchStemmer$($this) { + var classname; + var hash; + var i; + var char; + classname = "DutchStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +DutchStemmer.hashCode$LDutchStemmer$ = DutchStemmer$hashCode$LDutchStemmer$; + +DutchStemmer.serialVersionUID = 1; +$__jsx_lazy_init(DutchStemmer, "methodObject", function () { + return new DutchStemmer(); +}); +$__jsx_lazy_init(DutchStemmer, "a_0", function () { + return [ new Among("", -1, 6), new Among("\u00E1", 0, 1), new Among("\u00E4", 0, 1), new Among("\u00E9", 0, 2), new Among("\u00EB", 0, 2), new Among("\u00ED", 0, 3), new Among("\u00EF", 0, 3), new Among("\u00F3", 0, 4), new Among("\u00F6", 0, 4), new Among("\u00FA", 0, 5), new Among("\u00FC", 0, 5) ]; +}); +$__jsx_lazy_init(DutchStemmer, "a_1", function () { + return [ new Among("", -1, 3), new Among("I", 0, 2), new Among("Y", 0, 1) ]; +}); +$__jsx_lazy_init(DutchStemmer, "a_2", function () { + return [ new Among("dd", -1, -1), new Among("kk", -1, -1), new Among("tt", -1, -1) ]; +}); +$__jsx_lazy_init(DutchStemmer, "a_3", function () { + return [ new Among("ene", -1, 2), new Among("se", -1, 3), new Among("en", -1, 2), new Among("heden", 2, 1), new Among("s", -1, 3) ]; +}); +$__jsx_lazy_init(DutchStemmer, "a_4", function () { + return [ new Among("end", -1, 1), new Among("ig", -1, 2), new Among("ing", -1, 1), new Among("lijk", -1, 3), new Among("baar", -1, 4), new Among("bar", -1, 5) ]; +}); +$__jsx_lazy_init(DutchStemmer, "a_5", function () { + return [ new Among("aa", -1, -1), new Among("ee", -1, -1), new Among("oo", -1, -1), new Among("uu", -1, -1) ]; +}); +DutchStemmer.g_v = [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 ]; +DutchStemmer.g_v_I = [ 1, 0, 0, 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 ]; +DutchStemmer.g_v_j = [ 17, 67, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 ]; + +var $__jsx_classMap = { + "src/among.jsx": { + Among: Among, + Among$SII: Among, + Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$0 + }, + "src/stemmer.jsx": { + Stemmer: Stemmer, + Stemmer$: Stemmer + }, + "src/base-stemmer.jsx": { + BaseStemmer: BaseStemmer, + BaseStemmer$: BaseStemmer + }, + "src/dutch-stemmer.jsx": { + DutchStemmer: DutchStemmer, + DutchStemmer$: DutchStemmer + } +}; + + +})(JSX); + +var Among = JSX.require("src/among.jsx").Among; +var Among$SII = JSX.require("src/among.jsx").Among$SII; +var Stemmer = JSX.require("src/stemmer.jsx").Stemmer; +var BaseStemmer = JSX.require("src/base-stemmer.jsx").BaseStemmer; +var DutchStemmer = JSX.require("src/dutch-stemmer.jsx").DutchStemmer; diff --git a/sphinx/sphinx/search/non-minified-js/finnish-stemmer.js b/sphinx/sphinx/search/non-minified-js/finnish-stemmer.js new file mode 100644 index 0000000..210c3e1 --- /dev/null +++ b/sphinx/sphinx/search/non-minified-js/finnish-stemmer.js @@ -0,0 +1,2812 @@ +// generatedy by JSX compiler 0.9.89 (2014-05-20 06:01:03 +0900; 8e8c6105f36f3dfe440ea026a3c93a3444977102) +var JSX = {}; +(function (JSX) { +/** + * extends the class + */ +function $__jsx_extend(derivations, base) { + var ctor = function () {}; + ctor.prototype = base.prototype; + var proto = new ctor(); + for (var i in derivations) { + derivations[i].prototype = proto; + } +} + +/** + * copies the implementations from source interface to target + */ +function $__jsx_merge_interface(target, source) { + for (var k in source.prototype) + if (source.prototype.hasOwnProperty(k)) + target.prototype[k] = source.prototype[k]; +} + +/** + * defers the initialization of the property + */ +function $__jsx_lazy_init(obj, prop, func) { + function reset(obj, prop, value) { + delete obj[prop]; + obj[prop] = value; + return value; + } + + Object.defineProperty(obj, prop, { + get: function () { + return reset(obj, prop, func()); + }, + set: function (v) { + reset(obj, prop, v); + }, + enumerable: true, + configurable: true + }); +} + +var $__jsx_imul = Math.imul; +if (typeof $__jsx_imul === "undefined") { + $__jsx_imul = function (a, b) { + var ah = (a >>> 16) & 0xffff; + var al = a & 0xffff; + var bh = (b >>> 16) & 0xffff; + var bl = b & 0xffff; + return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0); + }; +} + +/** + * fused int-ops with side-effects + */ +function $__jsx_ipadd(o, p, r) { + return o[p] = (o[p] + r) | 0; +} +function $__jsx_ipsub(o, p, r) { + return o[p] = (o[p] - r) | 0; +} +function $__jsx_ipmul(o, p, r) { + return o[p] = $__jsx_imul(o[p], r); +} +function $__jsx_ipdiv(o, p, r) { + return o[p] = (o[p] / r) | 0; +} +function $__jsx_ipmod(o, p, r) { + return o[p] = (o[p] % r) | 0; +} +function $__jsx_ippostinc(o, p) { + var v = o[p]; + o[p] = (v + 1) | 0; + return v; +} +function $__jsx_ippostdec(o, p) { + var v = o[p]; + o[p] = (v - 1) | 0; + return v; +} + +/** + * non-inlined version of Array#each + */ +function $__jsx_forEach(o, f) { + var l = o.length; + for (var i = 0; i < l; ++i) + f(o[i]); +} + +/* + * global functions, renamed to avoid conflict with local variable names + */ +var $__jsx_parseInt = parseInt; +var $__jsx_parseFloat = parseFloat; +function $__jsx_isNaN(n) { return n !== n; } +var $__jsx_isFinite = isFinite; + +var $__jsx_encodeURIComponent = encodeURIComponent; +var $__jsx_decodeURIComponent = decodeURIComponent; +var $__jsx_encodeURI = encodeURI; +var $__jsx_decodeURI = decodeURI; + +var $__jsx_ObjectToString = Object.prototype.toString; +var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty; + +/* + * profiler object, initialized afterwards + */ +function $__jsx_profiler() { +} + +/* + * public interface to JSX code + */ +JSX.require = function (path) { + var m = $__jsx_classMap[path]; + return m !== undefined ? m : null; +}; + +JSX.profilerIsRunning = function () { + return $__jsx_profiler.getResults != null; +}; + +JSX.getProfileResults = function () { + return ($__jsx_profiler.getResults || function () { return {}; })(); +}; + +JSX.postProfileResults = function (url, cb) { + if ($__jsx_profiler.postResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.postResults(url, cb); +}; + +JSX.resetProfileResults = function () { + if ($__jsx_profiler.resetResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.resetResults(); +}; +JSX.DEBUG = false; +var GeneratorFunction$0 = +(function () { + try { + return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); + } catch (e) { + return function GeneratorFunction () {}; + } +})(); +var __jsx_generator_object$0 = +(function () { + function __jsx_generator_object() { + this.__next = 0; + this.__loop = null; + this.__seed = null; + this.__value = undefined; + this.__status = 0; // SUSPENDED: 0, ACTIVE: 1, DEAD: 2 + } + + __jsx_generator_object.prototype.next = function (seed) { + switch (this.__status) { + case 0: + this.__status = 1; + this.__seed = seed; + + // go next! + this.__loop(this.__next); + + var done = false; + if (this.__next != -1) { + this.__status = 0; + } else { + this.__status = 2; + done = true; + } + return { value: this.__value, done: done }; + case 1: + throw new Error("Generator is already running"); + case 2: + throw new Error("Generator is already finished"); + default: + throw new Error("Unexpected generator internal state"); + } + }; + + return __jsx_generator_object; +}()); +function Among(s, substring_i, result) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = null; + this.instance = null; +}; + +function Among$0(s, substring_i, result, method, instance) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = method; + this.instance = instance; +}; + +$__jsx_extend([Among, Among$0], Object); +function Stemmer() { +}; + +$__jsx_extend([Stemmer], Object); +function BaseStemmer() { + var current$0; + var cursor$0; + var limit$0; + this.cache = ({ }); + current$0 = this.current = ""; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +$__jsx_extend([BaseStemmer], Stemmer); +BaseStemmer.prototype.setCurrent$S = function (value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = this.current = value; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + + +function BaseStemmer$setCurrent$LBaseStemmer$S($this, value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = $this.current = value; + cursor$0 = $this.cursor = 0; + limit$0 = $this.limit = current$0.length; + $this.limit_backward = 0; + $this.bra = cursor$0; + $this.ket = limit$0; +}; + +BaseStemmer.setCurrent$LBaseStemmer$S = BaseStemmer$setCurrent$LBaseStemmer$S; + +BaseStemmer.prototype.getCurrent$ = function () { + return this.current; +}; + + +function BaseStemmer$getCurrent$LBaseStemmer$($this) { + return $this.current; +}; + +BaseStemmer.getCurrent$LBaseStemmer$ = BaseStemmer$getCurrent$LBaseStemmer$; + +BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; +}; + + +function BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$($this, other) { + $this.current = other.current; + $this.cursor = other.cursor; + $this.limit = other.limit; + $this.limit_backward = other.limit_backward; + $this.bra = other.bra; + $this.ket = other.ket; +}; + +BaseStemmer.copy_from$LBaseStemmer$LBaseStemmer$ = BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$; + +BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping$LBaseStemmer$AIII = BaseStemmer$in_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping_b$LBaseStemmer$AIII = BaseStemmer$in_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping$LBaseStemmer$AIII = BaseStemmer$out_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping_b$LBaseStemmer$AIII = BaseStemmer$out_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range$LBaseStemmer$II = BaseStemmer$in_range$LBaseStemmer$II; + +BaseStemmer.prototype.in_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range_b$LBaseStemmer$II = BaseStemmer$in_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.out_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range$LBaseStemmer$II = BaseStemmer$out_range$LBaseStemmer$II; + +BaseStemmer.prototype.out_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range_b$LBaseStemmer$II = BaseStemmer$out_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.eq_s$IS = function (s_size, s) { + var cursor$0; + if (((this.limit - this.cursor) | 0) < s_size) { + return false; + } + if (this.current.slice(cursor$0 = this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + this.cursor = (this.cursor + s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.limit - $this.cursor) | 0) < s_size) { + return false; + } + if ($this.current.slice(cursor$0 = $this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + $this.cursor = ($this.cursor + s_size) | 0; + return true; +}; + +BaseStemmer.eq_s$LBaseStemmer$IS = BaseStemmer$eq_s$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) { + var cursor$0; + if (((this.cursor - this.limit_backward) | 0) < s_size) { + return false; + } + if (this.current.slice((((cursor$0 = this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + this.cursor = (this.cursor - s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.cursor - $this.limit_backward) | 0) < s_size) { + return false; + } + if ($this.current.slice((((cursor$0 = $this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + $this.cursor = ($this.cursor - s_size) | 0; + return true; +}; + +BaseStemmer.eq_s_b$LBaseStemmer$IS = BaseStemmer$eq_s_b$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_v$S = function (s) { + return BaseStemmer$eq_s$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v$LBaseStemmer$S = BaseStemmer$eq_v$LBaseStemmer$S; + +BaseStemmer.prototype.eq_v_b$S = function (s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v_b$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v_b$LBaseStemmer$S = BaseStemmer$eq_v_b$LBaseStemmer$S; + +BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + l = this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + l = $this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + $this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among$LBaseStemmer$ALAmong$I = BaseStemmer$find_among$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + lb = this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(this); + this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + lb = $this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method($this); + $this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among_b$LBaseStemmer$ALAmong$I = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit = (this.limit + adjustment) | 0; + if (this.cursor >= c_ket) { + this.cursor = (this.cursor + adjustment) | 0; + } else if (this.cursor > c_bra) { + this.cursor = c_bra; + } + return (adjustment | 0); +}; + + +function BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + $this.current = $this.current.slice(0, c_bra) + s + $this.current.slice(c_ket); + $this.limit = ($this.limit + adjustment) | 0; + if ($this.cursor >= c_ket) { + $this.cursor = ($this.cursor + adjustment) | 0; + } else if ($this.cursor > c_bra) { + $this.cursor = c_bra; + } + return (adjustment | 0); +}; + +BaseStemmer.replace_s$LBaseStemmer$IIS = BaseStemmer$replace_s$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_check$ = function () { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true); +}; + + +function BaseStemmer$slice_check$LBaseStemmer$($this) { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true); +}; + +BaseStemmer.slice_check$LBaseStemmer$ = BaseStemmer$slice_check$LBaseStemmer$; + +BaseStemmer.prototype.slice_from$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS(this, this.bra, this.ket, s); + result = true; + } + return result; +}; + + +function BaseStemmer$slice_from$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS($this, $this.bra, $this.ket, s); + result = true; + } + return result; +}; + +BaseStemmer.slice_from$LBaseStemmer$S = BaseStemmer$slice_from$LBaseStemmer$S; + +BaseStemmer.prototype.slice_del$ = function () { + return BaseStemmer$slice_from$LBaseStemmer$S(this, ""); +}; + + +function BaseStemmer$slice_del$LBaseStemmer$($this) { + return BaseStemmer$slice_from$LBaseStemmer$S($this, ""); +}; + +BaseStemmer.slice_del$LBaseStemmer$ = BaseStemmer$slice_del$LBaseStemmer$; + +BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS(this, c_bra, c_ket, s); + if (c_bra <= this.bra) { + this.bra = (this.bra + adjustment) | 0; + } + if (c_bra <= this.ket) { + this.ket = (this.ket + adjustment) | 0; + } +}; + + +function BaseStemmer$insert$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s); + if (c_bra <= $this.bra) { + $this.bra = ($this.bra + adjustment) | 0; + } + if (c_bra <= $this.ket) { + $this.ket = ($this.ket + adjustment) | 0; + } +}; + +BaseStemmer.insert$LBaseStemmer$IIS = BaseStemmer$insert$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_to$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + result = this.current.slice(this.bra, this.ket); + } + return result; +}; + + +function BaseStemmer$slice_to$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + result = $this.current.slice($this.bra, $this.ket); + } + return result; +}; + +BaseStemmer.slice_to$LBaseStemmer$S = BaseStemmer$slice_to$LBaseStemmer$S; + +BaseStemmer.prototype.assign_to$S = function (s) { + return this.current.slice(0, this.limit); +}; + + +function BaseStemmer$assign_to$LBaseStemmer$S($this, s) { + return $this.current.slice(0, $this.limit); +}; + +BaseStemmer.assign_to$LBaseStemmer$S = BaseStemmer$assign_to$LBaseStemmer$S; + +BaseStemmer.prototype.stem$ = function () { + return false; +}; + + +BaseStemmer.prototype.stemWord$S = function (word) { + var result; + var current$0; + var cursor$0; + var limit$0; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + return result; +}; + +BaseStemmer.prototype.stemWord = BaseStemmer.prototype.stemWord$S; + +BaseStemmer.prototype.stemWords$AS = function (words) { + var results; + var i; + var word; + var result; + var current$0; + var cursor$0; + var limit$0; + results = [ ]; + for (i = 0; i < words.length; i++) { + word = words[i]; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + results.push(result); + } + return results; +}; + +BaseStemmer.prototype.stemWords = BaseStemmer.prototype.stemWords$AS; + +function FinnishStemmer() { + BaseStemmer.call(this); + this.B_ending_removed = false; + this.S_x = ""; + this.I_p2 = 0; + this.I_p1 = 0; +}; + +$__jsx_extend([FinnishStemmer], BaseStemmer); +FinnishStemmer.prototype.copy_from$LFinnishStemmer$ = function (other) { + this.B_ending_removed = other.B_ending_removed; + this.S_x = other.S_x; + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$(this, other); +}; + +FinnishStemmer.prototype.copy_from = FinnishStemmer.prototype.copy_from$LFinnishStemmer$; + +FinnishStemmer.prototype.r_mark_regions$ = function () { + var v_1; + var v_3; + var lab1; + var lab3; + var lab5; + var lab7; + var cursor$0; + var limit$0; + var cursor$1; + var $__jsx_postinc_t; + this.I_p1 = limit$0 = this.limit; + this.I_p2 = limit$0; +golab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FinnishStemmer.g_V1, 97, 246)) { + break lab1; + } + this.cursor = v_1; + break golab0; + } + cursor$0 = this.cursor = v_1; + if (cursor$0 >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, FinnishStemmer.g_V1, 97, 246)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p1 = this.cursor; +golab4: + while (true) { + v_3 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FinnishStemmer.g_V1, 97, 246)) { + break lab5; + } + this.cursor = v_3; + break golab4; + } + cursor$1 = this.cursor = v_3; + if (cursor$1 >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } +golab6: + while (true) { + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, FinnishStemmer.g_V1, 97, 246)) { + break lab7; + } + break golab6; + } + if (this.cursor >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p2 = this.cursor; + return true; +}; + +FinnishStemmer.prototype.r_mark_regions = FinnishStemmer.prototype.r_mark_regions$; + +function FinnishStemmer$r_mark_regions$LFinnishStemmer$($this) { + var v_1; + var v_3; + var lab1; + var lab3; + var lab5; + var lab7; + var cursor$0; + var limit$0; + var cursor$1; + var $__jsx_postinc_t; + $this.I_p1 = limit$0 = $this.limit; + $this.I_p2 = limit$0; +golab0: + while (true) { + v_1 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FinnishStemmer.g_V1, 97, 246)) { + break lab1; + } + $this.cursor = v_1; + break golab0; + } + cursor$0 = $this.cursor = v_1; + if (cursor$0 >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, FinnishStemmer.g_V1, 97, 246)) { + break lab3; + } + break golab2; + } + if ($this.cursor >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p1 = $this.cursor; +golab4: + while (true) { + v_3 = $this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FinnishStemmer.g_V1, 97, 246)) { + break lab5; + } + $this.cursor = v_3; + break golab4; + } + cursor$1 = $this.cursor = v_3; + if (cursor$1 >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } +golab6: + while (true) { + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, FinnishStemmer.g_V1, 97, 246)) { + break lab7; + } + break golab6; + } + if ($this.cursor >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p2 = $this.cursor; + return true; +}; + +FinnishStemmer.r_mark_regions$LFinnishStemmer$ = FinnishStemmer$r_mark_regions$LFinnishStemmer$; + +FinnishStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +FinnishStemmer.prototype.r_R2 = FinnishStemmer.prototype.r_R2$; + +function FinnishStemmer$r_R2$LFinnishStemmer$($this) { + return (! ($this.I_p2 <= $this.cursor) ? false : true); +}; + +FinnishStemmer.r_R2$LFinnishStemmer$ = FinnishStemmer$r_R2$LFinnishStemmer$; + +FinnishStemmer.prototype.r_particle_etc$ = function () { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FinnishStemmer.a_0, 10); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, FinnishStemmer.g_particle_end, 97, 246)) { + return false; + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + break; + } + return (! BaseStemmer$slice_from$LBaseStemmer$S(this, "") ? false : true); +}; + +FinnishStemmer.prototype.r_particle_etc = FinnishStemmer.prototype.r_particle_etc$; + +function FinnishStemmer$r_particle_etc$LFinnishStemmer$($this) { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_p1) { + return false; + } + cursor$1 = $this.cursor = $this.I_p1; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FinnishStemmer.a_0, 10); + if (among_var === 0) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + $this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, FinnishStemmer.g_particle_end, 97, 246)) { + return false; + } + break; + case 2: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + break; + } + return (! BaseStemmer$slice_from$LBaseStemmer$S($this, "") ? false : true); +}; + +FinnishStemmer.r_particle_etc$LFinnishStemmer$ = FinnishStemmer$r_particle_etc$LFinnishStemmer$; + +FinnishStemmer.prototype.r_possessive$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var lab0; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FinnishStemmer.a_4, 9); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + v_3 = ((this.limit - this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "k")) { + break lab0; + } + return false; + } + this.cursor = ((this.limit - v_3) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 3, "kse")) { + return false; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ksi")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 4: + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FinnishStemmer.a_1, 6) === 0) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 5: + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FinnishStemmer.a_2, 6) === 0) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 6: + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FinnishStemmer.a_3, 2) === 0) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +FinnishStemmer.prototype.r_possessive = FinnishStemmer.prototype.r_possessive$; + +function FinnishStemmer$r_possessive$LFinnishStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var lab0; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_p1) { + return false; + } + cursor$1 = $this.cursor = $this.I_p1; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FinnishStemmer.a_4, 9); + if (among_var === 0) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + $this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + v_3 = (($this.limit - $this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "k")) { + break lab0; + } + return false; + } + $this.cursor = (($this.limit - v_3) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 3, "kse")) { + return false; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ksi")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 4: + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FinnishStemmer.a_1, 6) === 0) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 5: + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FinnishStemmer.a_2, 6) === 0) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 6: + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FinnishStemmer.a_3, 2) === 0) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +FinnishStemmer.r_possessive$LFinnishStemmer$ = FinnishStemmer$r_possessive$LFinnishStemmer$; + +FinnishStemmer.prototype.r_LONG$ = function () { + return (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FinnishStemmer.a_5, 7) === 0 ? false : true); +}; + +FinnishStemmer.prototype.r_LONG = FinnishStemmer.prototype.r_LONG$; + +function FinnishStemmer$r_LONG$LFinnishStemmer$($this) { + return (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FinnishStemmer.a_5, 7) === 0 ? false : true); +}; + +FinnishStemmer.r_LONG$LFinnishStemmer$ = FinnishStemmer$r_LONG$LFinnishStemmer$; + +FinnishStemmer.prototype.r_VI$ = function () { + return (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "i") ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, FinnishStemmer.g_V2, 97, 246) ? false : true); +}; + +FinnishStemmer.prototype.r_VI = FinnishStemmer.prototype.r_VI$; + +function FinnishStemmer$r_VI$LFinnishStemmer$($this) { + return (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "i") ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, FinnishStemmer.g_V2, 97, 246) ? false : true); +}; + +FinnishStemmer.r_VI$LFinnishStemmer$ = FinnishStemmer$r_VI$LFinnishStemmer$; + +FinnishStemmer.prototype.r_case_ending$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var lab0; + var lab1; + var lab2; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + var $__jsx_postinc_t; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FinnishStemmer.a_6, 30); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "a")) { + return false; + } + break; + case 2: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "e")) { + return false; + } + break; + case 3: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "i")) { + return false; + } + break; + case 4: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "o")) { + return false; + } + break; + case 5: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u00E4")) { + return false; + } + break; + case 6: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u00F6")) { + return false; + } + break; + case 7: + v_3 = ((this.limit - this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_4 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_5 = ((this.limit - this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FinnishStemmer.a_5, 7) === 0 ? false : true)) { + break lab2; + } + break lab1; + } + this.cursor = ((this.limit - v_5) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "ie")) { + this.cursor = ((this.limit - v_3) | 0); + break lab0; + } + } + cursor$3 = this.cursor = ((this.limit - v_4) | 0); + if (cursor$3 <= this.limit_backward) { + this.cursor = ((this.limit - v_3) | 0); + break lab0; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + this.bra = this.cursor; + } + break; + case 8: + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, FinnishStemmer.g_V1, 97, 246)) { + return false; + } + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, FinnishStemmer.g_V1, 97, 246)) { + return false; + } + break; + case 9: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "e")) { + return false; + } + break; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + this.B_ending_removed = true; + return true; +}; + +FinnishStemmer.prototype.r_case_ending = FinnishStemmer.prototype.r_case_ending$; + +function FinnishStemmer$r_case_ending$LFinnishStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var lab0; + var lab1; + var lab2; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + var $__jsx_postinc_t; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_p1) { + return false; + } + cursor$1 = $this.cursor = $this.I_p1; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FinnishStemmer.a_6, 30); + if (among_var === 0) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + $this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "a")) { + return false; + } + break; + case 2: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "e")) { + return false; + } + break; + case 3: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "i")) { + return false; + } + break; + case 4: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "o")) { + return false; + } + break; + case 5: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u00E4")) { + return false; + } + break; + case 6: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u00F6")) { + return false; + } + break; + case 7: + v_3 = (($this.limit - $this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_4 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_5 = (($this.limit - $this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FinnishStemmer.a_5, 7) === 0 ? false : true)) { + break lab2; + } + break lab1; + } + $this.cursor = (($this.limit - v_5) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "ie")) { + $this.cursor = (($this.limit - v_3) | 0); + break lab0; + } + } + cursor$3 = $this.cursor = (($this.limit - v_4) | 0); + if (cursor$3 <= $this.limit_backward) { + $this.cursor = (($this.limit - v_3) | 0); + break lab0; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + $this.bra = $this.cursor; + } + break; + case 8: + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, FinnishStemmer.g_V1, 97, 246)) { + return false; + } + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, FinnishStemmer.g_V1, 97, 246)) { + return false; + } + break; + case 9: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "e")) { + return false; + } + break; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + $this.B_ending_removed = true; + return true; +}; + +FinnishStemmer.r_case_ending$LFinnishStemmer$ = FinnishStemmer$r_case_ending$LFinnishStemmer$; + +FinnishStemmer.prototype.r_other_endings$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var lab0; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_p2) { + return false; + } + cursor$1 = this.cursor = this.I_p2; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FinnishStemmer.a_7, 14); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + v_3 = ((this.limit - this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "po")) { + break lab0; + } + return false; + } + this.cursor = ((this.limit - v_3) | 0); + break; + } + return (! BaseStemmer$slice_from$LBaseStemmer$S(this, "") ? false : true); +}; + +FinnishStemmer.prototype.r_other_endings = FinnishStemmer.prototype.r_other_endings$; + +function FinnishStemmer$r_other_endings$LFinnishStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var lab0; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_p2) { + return false; + } + cursor$1 = $this.cursor = $this.I_p2; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FinnishStemmer.a_7, 14); + if (among_var === 0) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + $this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + v_3 = (($this.limit - $this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "po")) { + break lab0; + } + return false; + } + $this.cursor = (($this.limit - v_3) | 0); + break; + } + return (! BaseStemmer$slice_from$LBaseStemmer$S($this, "") ? false : true); +}; + +FinnishStemmer.r_other_endings$LFinnishStemmer$ = FinnishStemmer$r_other_endings$LFinnishStemmer$; + +FinnishStemmer.prototype.r_i_plural$ = function () { + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FinnishStemmer.a_8, 2) === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + return (! BaseStemmer$slice_from$LBaseStemmer$S(this, "") ? false : true); +}; + +FinnishStemmer.prototype.r_i_plural = FinnishStemmer.prototype.r_i_plural$; + +function FinnishStemmer$r_i_plural$LFinnishStemmer$($this) { + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_p1) { + return false; + } + cursor$1 = $this.cursor = $this.I_p1; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FinnishStemmer.a_8, 2) === 0) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + $this.limit_backward = v_2; + return (! BaseStemmer$slice_from$LBaseStemmer$S($this, "") ? false : true); +}; + +FinnishStemmer.r_i_plural$LFinnishStemmer$ = FinnishStemmer$r_i_plural$LFinnishStemmer$; + +FinnishStemmer.prototype.r_t_plural$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var lab0; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + var cursor$4; + var cursor$5; + var cursor$6; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "t")) { + this.limit_backward = v_2; + return false; + } + this.bra = cursor$3 = this.cursor; + v_3 = ((this.limit - cursor$3) | 0); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, FinnishStemmer.g_V1, 97, 246)) { + this.limit_backward = v_2; + return false; + } + this.cursor = ((this.limit - v_3) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + this.limit_backward = v_2; + v_4 = ((this.limit - (cursor$4 = this.cursor)) | 0); + if (cursor$4 < this.I_p2) { + return false; + } + cursor$5 = this.cursor = this.I_p2; + v_5 = this.limit_backward; + this.limit_backward = cursor$5; + cursor$6 = this.cursor = ((this.limit - v_4) | 0); + this.ket = cursor$6; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FinnishStemmer.a_9, 2); + if (among_var === 0) { + this.limit_backward = v_5; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_5; + switch (among_var) { + case 0: + return false; + case 1: + v_6 = ((this.limit - this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "po")) { + break lab0; + } + return false; + } + this.cursor = ((this.limit - v_6) | 0); + break; + } + return (! BaseStemmer$slice_from$LBaseStemmer$S(this, "") ? false : true); +}; + +FinnishStemmer.prototype.r_t_plural = FinnishStemmer.prototype.r_t_plural$; + +function FinnishStemmer$r_t_plural$LFinnishStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var lab0; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + var cursor$4; + var cursor$5; + var cursor$6; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_p1) { + return false; + } + cursor$1 = $this.cursor = $this.I_p1; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "t")) { + $this.limit_backward = v_2; + return false; + } + $this.bra = cursor$3 = $this.cursor; + v_3 = (($this.limit - cursor$3) | 0); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, FinnishStemmer.g_V1, 97, 246)) { + $this.limit_backward = v_2; + return false; + } + $this.cursor = (($this.limit - v_3) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + $this.limit_backward = v_2; + v_4 = (($this.limit - (cursor$4 = $this.cursor)) | 0); + if (cursor$4 < $this.I_p2) { + return false; + } + cursor$5 = $this.cursor = $this.I_p2; + v_5 = $this.limit_backward; + $this.limit_backward = cursor$5; + cursor$6 = $this.cursor = (($this.limit - v_4) | 0); + $this.ket = cursor$6; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FinnishStemmer.a_9, 2); + if (among_var === 0) { + $this.limit_backward = v_5; + return false; + } + $this.bra = $this.cursor; + $this.limit_backward = v_5; + switch (among_var) { + case 0: + return false; + case 1: + v_6 = (($this.limit - $this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "po")) { + break lab0; + } + return false; + } + $this.cursor = (($this.limit - v_6) | 0); + break; + } + return (! BaseStemmer$slice_from$LBaseStemmer$S($this, "") ? false : true); +}; + +FinnishStemmer.r_t_plural$LFinnishStemmer$ = FinnishStemmer$r_t_plural$LFinnishStemmer$; + +FinnishStemmer.prototype.r_tidy$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab7; + var s$0; + var cursor$0; + var cursor$1; + var cursor$2; + var limit$0; + var cursor$3; + var limit$1; + var cursor$4; + var limit$2; + var cursor$5; + var limit$3; + var cursor$6; + var cursor$7; + var cursor$8; + var S_x$0; + var $__jsx_postinc_t; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$2 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$2; + cursor$3 = this.cursor = (((limit$0 = this.limit) - v_1) | 0); + v_3 = ((limit$0 - cursor$3) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_4 = ((this.limit - this.cursor) | 0); + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FinnishStemmer.a_5, 7) === 0 ? false : true)) { + break lab0; + } + cursor$1 = this.cursor = ((this.limit - v_4) | 0); + this.ket = cursor$1; + if (cursor$1 <= this.limit_backward) { + break lab0; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + cursor$4 = this.cursor = (((limit$1 = this.limit) - v_3) | 0); + v_5 = ((limit$1 - cursor$4) | 0); + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, FinnishStemmer.g_AEI, 97, 228)) { + break lab1; + } + this.bra = this.cursor; + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, FinnishStemmer.g_V1, 97, 246)) { + break lab1; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + cursor$5 = this.cursor = (((limit$2 = this.limit) - v_5) | 0); + v_6 = ((limit$2 - cursor$5) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "j")) { + break lab2; + } + this.bra = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_7 = ((this.limit - this.cursor) | 0); + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "o")) { + break lab4; + } + break lab3; + } + this.cursor = ((this.limit - v_7) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "u")) { + break lab2; + } + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + cursor$6 = this.cursor = (((limit$3 = this.limit) - v_6) | 0); + v_8 = ((limit$3 - cursor$6) | 0); + lab5 = true; +lab5: + while (lab5 === true) { + lab5 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "o")) { + break lab5; + } + this.bra = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "j")) { + break lab5; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + this.cursor = ((this.limit - v_8) | 0); + this.limit_backward = v_2; +golab6: + while (true) { + v_9 = ((this.limit - this.cursor) | 0); + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, FinnishStemmer.g_V1, 97, 246)) { + break lab7; + } + this.cursor = ((this.limit - v_9) | 0); + break golab6; + } + cursor$7 = this.cursor = ((this.limit - v_9) | 0); + if (cursor$7 <= this.limit_backward) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + this.ket = cursor$8 = this.cursor; + if (cursor$8 <= this.limit_backward) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + this.bra = this.cursor; + S_x$0 = this.S_x = BaseStemmer$slice_to$LBaseStemmer$S(this, this.S_x); + return (S_x$0 === '' ? false : ! (s$0 = this.S_x, BaseStemmer$eq_s_b$LBaseStemmer$IS(this, s$0.length, s$0)) ? false : ! BaseStemmer$slice_from$LBaseStemmer$S(this, "") ? false : true); +}; + +FinnishStemmer.prototype.r_tidy = FinnishStemmer.prototype.r_tidy$; + +function FinnishStemmer$r_tidy$LFinnishStemmer$($this) { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab7; + var s$0; + var cursor$0; + var cursor$1; + var cursor$2; + var limit$0; + var cursor$3; + var limit$1; + var cursor$4; + var limit$2; + var cursor$5; + var limit$3; + var cursor$6; + var cursor$7; + var cursor$8; + var S_x$0; + var $__jsx_postinc_t; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_p1) { + return false; + } + cursor$2 = $this.cursor = $this.I_p1; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$2; + cursor$3 = $this.cursor = (((limit$0 = $this.limit) - v_1) | 0); + v_3 = ((limit$0 - cursor$3) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_4 = (($this.limit - $this.cursor) | 0); + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FinnishStemmer.a_5, 7) === 0 ? false : true)) { + break lab0; + } + cursor$1 = $this.cursor = (($this.limit - v_4) | 0); + $this.ket = cursor$1; + if (cursor$1 <= $this.limit_backward) { + break lab0; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + cursor$4 = $this.cursor = (((limit$1 = $this.limit) - v_3) | 0); + v_5 = ((limit$1 - cursor$4) | 0); + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, FinnishStemmer.g_AEI, 97, 228)) { + break lab1; + } + $this.bra = $this.cursor; + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, FinnishStemmer.g_V1, 97, 246)) { + break lab1; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + cursor$5 = $this.cursor = (((limit$2 = $this.limit) - v_5) | 0); + v_6 = ((limit$2 - cursor$5) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "j")) { + break lab2; + } + $this.bra = $this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_7 = (($this.limit - $this.cursor) | 0); + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "o")) { + break lab4; + } + break lab3; + } + $this.cursor = (($this.limit - v_7) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "u")) { + break lab2; + } + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + cursor$6 = $this.cursor = (((limit$3 = $this.limit) - v_6) | 0); + v_8 = ((limit$3 - cursor$6) | 0); + lab5 = true; +lab5: + while (lab5 === true) { + lab5 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "o")) { + break lab5; + } + $this.bra = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "j")) { + break lab5; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + $this.cursor = (($this.limit - v_8) | 0); + $this.limit_backward = v_2; +golab6: + while (true) { + v_9 = (($this.limit - $this.cursor) | 0); + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, FinnishStemmer.g_V1, 97, 246)) { + break lab7; + } + $this.cursor = (($this.limit - v_9) | 0); + break golab6; + } + cursor$7 = $this.cursor = (($this.limit - v_9) | 0); + if (cursor$7 <= $this.limit_backward) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + $this.ket = cursor$8 = $this.cursor; + if (cursor$8 <= $this.limit_backward) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + $this.bra = $this.cursor; + S_x$0 = $this.S_x = BaseStemmer$slice_to$LBaseStemmer$S($this, $this.S_x); + return (S_x$0 === '' ? false : ! (s$0 = $this.S_x, BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s$0.length, s$0)) ? false : ! BaseStemmer$slice_from$LBaseStemmer$S($this, "") ? false : true); +}; + +FinnishStemmer.r_tidy$LFinnishStemmer$ = FinnishStemmer$r_tidy$LFinnishStemmer$; + +FinnishStemmer.prototype.stem$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var cursor$0; + var limit$0; + var cursor$1; + var limit$1; + var cursor$2; + var limit$2; + var cursor$3; + var limit$3; + var cursor$4; + var limit$4; + var cursor$5; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! FinnishStemmer$r_mark_regions$LFinnishStemmer$(this)) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.B_ending_removed = false; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = ((limit$0 - cursor$1) | 0); + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! FinnishStemmer$r_particle_etc$LFinnishStemmer$(this)) { + break lab1; + } + } + cursor$2 = this.cursor = (((limit$1 = this.limit) - v_2) | 0); + v_3 = ((limit$1 - cursor$2) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! FinnishStemmer$r_possessive$LFinnishStemmer$(this)) { + break lab2; + } + } + cursor$3 = this.cursor = (((limit$2 = this.limit) - v_3) | 0); + v_4 = ((limit$2 - cursor$3) | 0); + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! FinnishStemmer$r_case_ending$LFinnishStemmer$(this)) { + break lab3; + } + } + cursor$4 = this.cursor = (((limit$3 = this.limit) - v_4) | 0); + v_5 = ((limit$3 - cursor$4) | 0); + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! FinnishStemmer$r_other_endings$LFinnishStemmer$(this)) { + break lab4; + } + } + this.cursor = ((this.limit - v_5) | 0); + lab5 = true; +lab5: + while (lab5 === true) { + lab5 = false; + v_6 = ((this.limit - this.cursor) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.B_ending_removed) { + break lab6; + } + v_7 = ((this.limit - this.cursor) | 0); + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! FinnishStemmer$r_i_plural$LFinnishStemmer$(this)) { + break lab7; + } + } + this.cursor = ((this.limit - v_7) | 0); + break lab5; + } + cursor$5 = this.cursor = (((limit$4 = this.limit) - v_6) | 0); + v_8 = ((limit$4 - cursor$5) | 0); + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! FinnishStemmer$r_t_plural$LFinnishStemmer$(this)) { + break lab8; + } + } + this.cursor = ((this.limit - v_8) | 0); + } + lab9 = true; +lab9: + while (lab9 === true) { + lab9 = false; + if (! FinnishStemmer$r_tidy$LFinnishStemmer$(this)) { + break lab9; + } + } + this.cursor = this.limit_backward; + return true; +}; + +FinnishStemmer.prototype.stem = FinnishStemmer.prototype.stem$; + +FinnishStemmer.prototype.equals$X = function (o) { + return o instanceof FinnishStemmer; +}; + +FinnishStemmer.prototype.equals = FinnishStemmer.prototype.equals$X; + +function FinnishStemmer$equals$LFinnishStemmer$X($this, o) { + return o instanceof FinnishStemmer; +}; + +FinnishStemmer.equals$LFinnishStemmer$X = FinnishStemmer$equals$LFinnishStemmer$X; + +FinnishStemmer.prototype.hashCode$ = function () { + var classname; + var hash; + var i; + var char; + classname = "FinnishStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +FinnishStemmer.prototype.hashCode = FinnishStemmer.prototype.hashCode$; + +function FinnishStemmer$hashCode$LFinnishStemmer$($this) { + var classname; + var hash; + var i; + var char; + classname = "FinnishStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +FinnishStemmer.hashCode$LFinnishStemmer$ = FinnishStemmer$hashCode$LFinnishStemmer$; + +FinnishStemmer.serialVersionUID = 1; +$__jsx_lazy_init(FinnishStemmer, "methodObject", function () { + return new FinnishStemmer(); +}); +$__jsx_lazy_init(FinnishStemmer, "a_0", function () { + return [ new Among("pa", -1, 1), new Among("sti", -1, 2), new Among("kaan", -1, 1), new Among("han", -1, 1), new Among("kin", -1, 1), new Among("h\u00E4n", -1, 1), new Among("k\u00E4\u00E4n", -1, 1), new Among("ko", -1, 1), new Among("p\u00E4", -1, 1), new Among("k\u00F6", -1, 1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_1", function () { + return [ new Among("lla", -1, -1), new Among("na", -1, -1), new Among("ssa", -1, -1), new Among("ta", -1, -1), new Among("lta", 3, -1), new Among("sta", 3, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_2", function () { + return [ new Among("ll\u00E4", -1, -1), new Among("n\u00E4", -1, -1), new Among("ss\u00E4", -1, -1), new Among("t\u00E4", -1, -1), new Among("lt\u00E4", 3, -1), new Among("st\u00E4", 3, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_3", function () { + return [ new Among("lle", -1, -1), new Among("ine", -1, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_4", function () { + return [ new Among("nsa", -1, 3), new Among("mme", -1, 3), new Among("nne", -1, 3), new Among("ni", -1, 2), new Among("si", -1, 1), new Among("an", -1, 4), new Among("en", -1, 6), new Among("\u00E4n", -1, 5), new Among("ns\u00E4", -1, 3) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_5", function () { + return [ new Among("aa", -1, -1), new Among("ee", -1, -1), new Among("ii", -1, -1), new Among("oo", -1, -1), new Among("uu", -1, -1), new Among("\u00E4\u00E4", -1, -1), new Among("\u00F6\u00F6", -1, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_6", function () { + return [ new Among("a", -1, 8), new Among("lla", 0, -1), new Among("na", 0, -1), new Among("ssa", 0, -1), new Among("ta", 0, -1), new Among("lta", 4, -1), new Among("sta", 4, -1), new Among("tta", 4, 9), new Among("lle", -1, -1), new Among("ine", -1, -1), new Among("ksi", -1, -1), new Among("n", -1, 7), new Among("han", 11, 1), new Among$0("den", 11, -1, (function (instance) { + var this$0; + this$0 = instance; + return (! this$0.eq_s_b$IS(1, "i") ? false : ! this$0.in_grouping_b$AIII(FinnishStemmer.g_V2, 97, 246) ? false : true); + }), FinnishStemmer.methodObject), new Among$0("seen", 11, -1, (function (instance) { + var this$0; + this$0 = instance; + return (this$0.find_among_b$ALAmong$I(FinnishStemmer.a_5, 7) === 0 ? false : true); + }), FinnishStemmer.methodObject), new Among("hen", 11, 2), new Among$0("tten", 11, -1, (function (instance) { + var this$0; + this$0 = instance; + return (! this$0.eq_s_b$IS(1, "i") ? false : ! this$0.in_grouping_b$AIII(FinnishStemmer.g_V2, 97, 246) ? false : true); + }), FinnishStemmer.methodObject), new Among("hin", 11, 3), new Among$0("siin", 11, -1, (function (instance) { + var this$0; + this$0 = instance; + return (! this$0.eq_s_b$IS(1, "i") ? false : ! this$0.in_grouping_b$AIII(FinnishStemmer.g_V2, 97, 246) ? false : true); + }), FinnishStemmer.methodObject), new Among("hon", 11, 4), new Among("h\u00E4n", 11, 5), new Among("h\u00F6n", 11, 6), new Among("\u00E4", -1, 8), new Among("ll\u00E4", 22, -1), new Among("n\u00E4", 22, -1), new Among("ss\u00E4", 22, -1), new Among("t\u00E4", 22, -1), new Among("lt\u00E4", 26, -1), new Among("st\u00E4", 26, -1), new Among("tt\u00E4", 26, 9) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_7", function () { + return [ new Among("eja", -1, -1), new Among("mma", -1, 1), new Among("imma", 1, -1), new Among("mpa", -1, 1), new Among("impa", 3, -1), new Among("mmi", -1, 1), new Among("immi", 5, -1), new Among("mpi", -1, 1), new Among("impi", 7, -1), new Among("ej\u00E4", -1, -1), new Among("mm\u00E4", -1, 1), new Among("imm\u00E4", 10, -1), new Among("mp\u00E4", -1, 1), new Among("imp\u00E4", 12, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_8", function () { + return [ new Among("i", -1, -1), new Among("j", -1, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_9", function () { + return [ new Among("mma", -1, 1), new Among("imma", 0, -1) ]; +}); +FinnishStemmer.g_AEI = [ 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8 ]; +FinnishStemmer.g_V1 = [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 ]; +FinnishStemmer.g_V2 = [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 ]; +FinnishStemmer.g_particle_end = [ 17, 97, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 ]; + +var $__jsx_classMap = { + "src/among.jsx": { + Among: Among, + Among$SII: Among, + Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$0 + }, + "src/stemmer.jsx": { + Stemmer: Stemmer, + Stemmer$: Stemmer + }, + "src/base-stemmer.jsx": { + BaseStemmer: BaseStemmer, + BaseStemmer$: BaseStemmer + }, + "src/finnish-stemmer.jsx": { + FinnishStemmer: FinnishStemmer, + FinnishStemmer$: FinnishStemmer + } +}; + + +})(JSX); + +var Among = JSX.require("src/among.jsx").Among; +var Among$SII = JSX.require("src/among.jsx").Among$SII; +var Stemmer = JSX.require("src/stemmer.jsx").Stemmer; +var BaseStemmer = JSX.require("src/base-stemmer.jsx").BaseStemmer; +var FinnishStemmer = JSX.require("src/finnish-stemmer.jsx").FinnishStemmer; diff --git a/sphinx/sphinx/search/non-minified-js/french-stemmer.js b/sphinx/sphinx/search/non-minified-js/french-stemmer.js new file mode 100644 index 0000000..3b3c060 --- /dev/null +++ b/sphinx/sphinx/search/non-minified-js/french-stemmer.js @@ -0,0 +1,3667 @@ +// generatedy by JSX compiler 0.9.89 (2014-05-20 06:01:03 +0900; 8e8c6105f36f3dfe440ea026a3c93a3444977102) +var JSX = {}; +(function (JSX) { +/** + * extends the class + */ +function $__jsx_extend(derivations, base) { + var ctor = function () {}; + ctor.prototype = base.prototype; + var proto = new ctor(); + for (var i in derivations) { + derivations[i].prototype = proto; + } +} + +/** + * copies the implementations from source interface to target + */ +function $__jsx_merge_interface(target, source) { + for (var k in source.prototype) + if (source.prototype.hasOwnProperty(k)) + target.prototype[k] = source.prototype[k]; +} + +/** + * defers the initialization of the property + */ +function $__jsx_lazy_init(obj, prop, func) { + function reset(obj, prop, value) { + delete obj[prop]; + obj[prop] = value; + return value; + } + + Object.defineProperty(obj, prop, { + get: function () { + return reset(obj, prop, func()); + }, + set: function (v) { + reset(obj, prop, v); + }, + enumerable: true, + configurable: true + }); +} + +var $__jsx_imul = Math.imul; +if (typeof $__jsx_imul === "undefined") { + $__jsx_imul = function (a, b) { + var ah = (a >>> 16) & 0xffff; + var al = a & 0xffff; + var bh = (b >>> 16) & 0xffff; + var bl = b & 0xffff; + return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0); + }; +} + +/** + * fused int-ops with side-effects + */ +function $__jsx_ipadd(o, p, r) { + return o[p] = (o[p] + r) | 0; +} +function $__jsx_ipsub(o, p, r) { + return o[p] = (o[p] - r) | 0; +} +function $__jsx_ipmul(o, p, r) { + return o[p] = $__jsx_imul(o[p], r); +} +function $__jsx_ipdiv(o, p, r) { + return o[p] = (o[p] / r) | 0; +} +function $__jsx_ipmod(o, p, r) { + return o[p] = (o[p] % r) | 0; +} +function $__jsx_ippostinc(o, p) { + var v = o[p]; + o[p] = (v + 1) | 0; + return v; +} +function $__jsx_ippostdec(o, p) { + var v = o[p]; + o[p] = (v - 1) | 0; + return v; +} + +/** + * non-inlined version of Array#each + */ +function $__jsx_forEach(o, f) { + var l = o.length; + for (var i = 0; i < l; ++i) + f(o[i]); +} + +/* + * global functions, renamed to avoid conflict with local variable names + */ +var $__jsx_parseInt = parseInt; +var $__jsx_parseFloat = parseFloat; +function $__jsx_isNaN(n) { return n !== n; } +var $__jsx_isFinite = isFinite; + +var $__jsx_encodeURIComponent = encodeURIComponent; +var $__jsx_decodeURIComponent = decodeURIComponent; +var $__jsx_encodeURI = encodeURI; +var $__jsx_decodeURI = decodeURI; + +var $__jsx_ObjectToString = Object.prototype.toString; +var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty; + +/* + * profiler object, initialized afterwards + */ +function $__jsx_profiler() { +} + +/* + * public interface to JSX code + */ +JSX.require = function (path) { + var m = $__jsx_classMap[path]; + return m !== undefined ? m : null; +}; + +JSX.profilerIsRunning = function () { + return $__jsx_profiler.getResults != null; +}; + +JSX.getProfileResults = function () { + return ($__jsx_profiler.getResults || function () { return {}; })(); +}; + +JSX.postProfileResults = function (url, cb) { + if ($__jsx_profiler.postResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.postResults(url, cb); +}; + +JSX.resetProfileResults = function () { + if ($__jsx_profiler.resetResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.resetResults(); +}; +JSX.DEBUG = false; +var GeneratorFunction$0 = +(function () { + try { + return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); + } catch (e) { + return function GeneratorFunction () {}; + } +})(); +var __jsx_generator_object$0 = +(function () { + function __jsx_generator_object() { + this.__next = 0; + this.__loop = null; + this.__seed = null; + this.__value = undefined; + this.__status = 0; // SUSPENDED: 0, ACTIVE: 1, DEAD: 2 + } + + __jsx_generator_object.prototype.next = function (seed) { + switch (this.__status) { + case 0: + this.__status = 1; + this.__seed = seed; + + // go next! + this.__loop(this.__next); + + var done = false; + if (this.__next != -1) { + this.__status = 0; + } else { + this.__status = 2; + done = true; + } + return { value: this.__value, done: done }; + case 1: + throw new Error("Generator is already running"); + case 2: + throw new Error("Generator is already finished"); + default: + throw new Error("Unexpected generator internal state"); + } + }; + + return __jsx_generator_object; +}()); +function Among(s, substring_i, result) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = null; + this.instance = null; +}; + +function Among$0(s, substring_i, result, method, instance) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = method; + this.instance = instance; +}; + +$__jsx_extend([Among, Among$0], Object); +function Stemmer() { +}; + +$__jsx_extend([Stemmer], Object); +function BaseStemmer() { + var current$0; + var cursor$0; + var limit$0; + this.cache = ({ }); + current$0 = this.current = ""; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +$__jsx_extend([BaseStemmer], Stemmer); +BaseStemmer.prototype.setCurrent$S = function (value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = this.current = value; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + + +function BaseStemmer$setCurrent$LBaseStemmer$S($this, value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = $this.current = value; + cursor$0 = $this.cursor = 0; + limit$0 = $this.limit = current$0.length; + $this.limit_backward = 0; + $this.bra = cursor$0; + $this.ket = limit$0; +}; + +BaseStemmer.setCurrent$LBaseStemmer$S = BaseStemmer$setCurrent$LBaseStemmer$S; + +BaseStemmer.prototype.getCurrent$ = function () { + return this.current; +}; + + +function BaseStemmer$getCurrent$LBaseStemmer$($this) { + return $this.current; +}; + +BaseStemmer.getCurrent$LBaseStemmer$ = BaseStemmer$getCurrent$LBaseStemmer$; + +BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; +}; + + +function BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$($this, other) { + $this.current = other.current; + $this.cursor = other.cursor; + $this.limit = other.limit; + $this.limit_backward = other.limit_backward; + $this.bra = other.bra; + $this.ket = other.ket; +}; + +BaseStemmer.copy_from$LBaseStemmer$LBaseStemmer$ = BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$; + +BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping$LBaseStemmer$AIII = BaseStemmer$in_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping_b$LBaseStemmer$AIII = BaseStemmer$in_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping$LBaseStemmer$AIII = BaseStemmer$out_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping_b$LBaseStemmer$AIII = BaseStemmer$out_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range$LBaseStemmer$II = BaseStemmer$in_range$LBaseStemmer$II; + +BaseStemmer.prototype.in_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range_b$LBaseStemmer$II = BaseStemmer$in_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.out_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range$LBaseStemmer$II = BaseStemmer$out_range$LBaseStemmer$II; + +BaseStemmer.prototype.out_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range_b$LBaseStemmer$II = BaseStemmer$out_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.eq_s$IS = function (s_size, s) { + var cursor$0; + if (((this.limit - this.cursor) | 0) < s_size) { + return false; + } + if (this.current.slice(cursor$0 = this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + this.cursor = (this.cursor + s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.limit - $this.cursor) | 0) < s_size) { + return false; + } + if ($this.current.slice(cursor$0 = $this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + $this.cursor = ($this.cursor + s_size) | 0; + return true; +}; + +BaseStemmer.eq_s$LBaseStemmer$IS = BaseStemmer$eq_s$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) { + var cursor$0; + if (((this.cursor - this.limit_backward) | 0) < s_size) { + return false; + } + if (this.current.slice((((cursor$0 = this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + this.cursor = (this.cursor - s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.cursor - $this.limit_backward) | 0) < s_size) { + return false; + } + if ($this.current.slice((((cursor$0 = $this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + $this.cursor = ($this.cursor - s_size) | 0; + return true; +}; + +BaseStemmer.eq_s_b$LBaseStemmer$IS = BaseStemmer$eq_s_b$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_v$S = function (s) { + return BaseStemmer$eq_s$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v$LBaseStemmer$S = BaseStemmer$eq_v$LBaseStemmer$S; + +BaseStemmer.prototype.eq_v_b$S = function (s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v_b$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v_b$LBaseStemmer$S = BaseStemmer$eq_v_b$LBaseStemmer$S; + +BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + l = this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + l = $this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + $this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among$LBaseStemmer$ALAmong$I = BaseStemmer$find_among$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + lb = this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(this); + this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + lb = $this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method($this); + $this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among_b$LBaseStemmer$ALAmong$I = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit = (this.limit + adjustment) | 0; + if (this.cursor >= c_ket) { + this.cursor = (this.cursor + adjustment) | 0; + } else if (this.cursor > c_bra) { + this.cursor = c_bra; + } + return (adjustment | 0); +}; + + +function BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + $this.current = $this.current.slice(0, c_bra) + s + $this.current.slice(c_ket); + $this.limit = ($this.limit + adjustment) | 0; + if ($this.cursor >= c_ket) { + $this.cursor = ($this.cursor + adjustment) | 0; + } else if ($this.cursor > c_bra) { + $this.cursor = c_bra; + } + return (adjustment | 0); +}; + +BaseStemmer.replace_s$LBaseStemmer$IIS = BaseStemmer$replace_s$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_check$ = function () { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true); +}; + + +function BaseStemmer$slice_check$LBaseStemmer$($this) { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true); +}; + +BaseStemmer.slice_check$LBaseStemmer$ = BaseStemmer$slice_check$LBaseStemmer$; + +BaseStemmer.prototype.slice_from$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS(this, this.bra, this.ket, s); + result = true; + } + return result; +}; + + +function BaseStemmer$slice_from$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS($this, $this.bra, $this.ket, s); + result = true; + } + return result; +}; + +BaseStemmer.slice_from$LBaseStemmer$S = BaseStemmer$slice_from$LBaseStemmer$S; + +BaseStemmer.prototype.slice_del$ = function () { + return BaseStemmer$slice_from$LBaseStemmer$S(this, ""); +}; + + +function BaseStemmer$slice_del$LBaseStemmer$($this) { + return BaseStemmer$slice_from$LBaseStemmer$S($this, ""); +}; + +BaseStemmer.slice_del$LBaseStemmer$ = BaseStemmer$slice_del$LBaseStemmer$; + +BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS(this, c_bra, c_ket, s); + if (c_bra <= this.bra) { + this.bra = (this.bra + adjustment) | 0; + } + if (c_bra <= this.ket) { + this.ket = (this.ket + adjustment) | 0; + } +}; + + +function BaseStemmer$insert$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s); + if (c_bra <= $this.bra) { + $this.bra = ($this.bra + adjustment) | 0; + } + if (c_bra <= $this.ket) { + $this.ket = ($this.ket + adjustment) | 0; + } +}; + +BaseStemmer.insert$LBaseStemmer$IIS = BaseStemmer$insert$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_to$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + result = this.current.slice(this.bra, this.ket); + } + return result; +}; + + +function BaseStemmer$slice_to$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + result = $this.current.slice($this.bra, $this.ket); + } + return result; +}; + +BaseStemmer.slice_to$LBaseStemmer$S = BaseStemmer$slice_to$LBaseStemmer$S; + +BaseStemmer.prototype.assign_to$S = function (s) { + return this.current.slice(0, this.limit); +}; + + +function BaseStemmer$assign_to$LBaseStemmer$S($this, s) { + return $this.current.slice(0, $this.limit); +}; + +BaseStemmer.assign_to$LBaseStemmer$S = BaseStemmer$assign_to$LBaseStemmer$S; + +BaseStemmer.prototype.stem$ = function () { + return false; +}; + + +BaseStemmer.prototype.stemWord$S = function (word) { + var result; + var current$0; + var cursor$0; + var limit$0; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + return result; +}; + +BaseStemmer.prototype.stemWord = BaseStemmer.prototype.stemWord$S; + +BaseStemmer.prototype.stemWords$AS = function (words) { + var results; + var i; + var word; + var result; + var current$0; + var cursor$0; + var limit$0; + results = [ ]; + for (i = 0; i < words.length; i++) { + word = words[i]; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + results.push(result); + } + return results; +}; + +BaseStemmer.prototype.stemWords = BaseStemmer.prototype.stemWords$AS; + +function FrenchStemmer() { + BaseStemmer.call(this); + this.I_p2 = 0; + this.I_p1 = 0; + this.I_pV = 0; +}; + +$__jsx_extend([FrenchStemmer], BaseStemmer); +FrenchStemmer.prototype.copy_from$LFrenchStemmer$ = function (other) { + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + this.I_pV = other.I_pV; + BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$(this, other); +}; + +FrenchStemmer.prototype.copy_from = FrenchStemmer.prototype.copy_from$LFrenchStemmer$; + +FrenchStemmer.prototype.r_prelude$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var lab1; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var cursor$0; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + golab2: + while (true) { + v_2 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_3 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab5; + } + this.bra = this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + v_4 = this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "u")) { + break lab7; + } + this.ket = this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab7; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "U")) { + return false; + } + break lab6; + } + this.cursor = v_4; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "i")) { + break lab8; + } + this.ket = this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab8; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "I")) { + return false; + } + break lab6; + } + this.cursor = v_4; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "y")) { + break lab5; + } + this.ket = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "Y")) { + return false; + } + } + break lab4; + } + this.cursor = v_3; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + this.bra = this.cursor; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "y")) { + break lab9; + } + this.ket = this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab9; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "Y")) { + return false; + } + break lab4; + } + this.cursor = v_3; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "q")) { + break lab3; + } + this.bra = this.cursor; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "u")) { + break lab3; + } + this.ket = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "U")) { + return false; + } + } + this.cursor = v_2; + break golab2; + } + cursor$0 = this.cursor = v_2; + if (cursor$0 >= this.limit) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +FrenchStemmer.prototype.r_prelude = FrenchStemmer.prototype.r_prelude$; + +function FrenchStemmer$r_prelude$LFrenchStemmer$($this) { + var v_1; + var v_2; + var v_3; + var v_4; + var lab1; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var cursor$0; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + golab2: + while (true) { + v_2 = $this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_3 = $this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab5; + } + $this.bra = $this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + v_4 = $this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "u")) { + break lab7; + } + $this.ket = $this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab7; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "U")) { + return false; + } + break lab6; + } + $this.cursor = v_4; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "i")) { + break lab8; + } + $this.ket = $this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab8; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "I")) { + return false; + } + break lab6; + } + $this.cursor = v_4; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "y")) { + break lab5; + } + $this.ket = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "Y")) { + return false; + } + } + break lab4; + } + $this.cursor = v_3; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + $this.bra = $this.cursor; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "y")) { + break lab9; + } + $this.ket = $this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab9; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "Y")) { + return false; + } + break lab4; + } + $this.cursor = v_3; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "q")) { + break lab3; + } + $this.bra = $this.cursor; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "u")) { + break lab3; + } + $this.ket = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "U")) { + return false; + } + } + $this.cursor = v_2; + break golab2; + } + cursor$0 = $this.cursor = v_2; + if (cursor$0 >= $this.limit) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + continue replab0; + } + $this.cursor = v_1; + break replab0; + } + return true; +}; + +FrenchStemmer.r_prelude$LFrenchStemmer$ = FrenchStemmer$r_prelude$LFrenchStemmer$; + +FrenchStemmer.prototype.r_mark_regions$ = function () { + var v_1; + var v_2; + var v_4; + var lab0; + var lab1; + var lab2; + var lab3; + var lab5; + var lab6; + var lab8; + var lab10; + var lab12; + var lab14; + var cursor$0; + var limit$0; + var cursor$1; + var $__jsx_postinc_t; + this.I_pV = limit$0 = this.limit; + this.I_p1 = limit$0; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab2; + } + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab2; + } + if (this.cursor >= this.limit) { + break lab2; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break lab1; + } + this.cursor = v_2; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (BaseStemmer$find_among$LBaseStemmer$ALAmong$I(this, FrenchStemmer.a_0, 3) === 0) { + break lab3; + } + break lab1; + } + cursor$0 = this.cursor = v_2; + if (cursor$0 >= this.limit) { + break lab0; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + golab4: + while (true) { + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab5; + } + break golab4; + } + if (this.cursor >= this.limit) { + break lab0; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + this.I_pV = this.cursor; + } + cursor$1 = this.cursor = v_1; + v_4 = cursor$1; + lab6 = true; +lab6: + while (lab6 === true) { + lab6 = false; + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab6; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab9: + while (true) { + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab10; + } + break golab9; + } + if (this.cursor >= this.limit) { + break lab6; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p1 = this.cursor; + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab12; + } + break golab11; + } + if (this.cursor >= this.limit) { + break lab6; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab13: + while (true) { + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab14; + } + break golab13; + } + if (this.cursor >= this.limit) { + break lab6; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p2 = this.cursor; + } + this.cursor = v_4; + return true; +}; + +FrenchStemmer.prototype.r_mark_regions = FrenchStemmer.prototype.r_mark_regions$; + +function FrenchStemmer$r_mark_regions$LFrenchStemmer$($this) { + var v_1; + var v_2; + var v_4; + var lab0; + var lab1; + var lab2; + var lab3; + var lab5; + var lab6; + var lab8; + var lab10; + var lab12; + var lab14; + var cursor$0; + var limit$0; + var cursor$1; + var $__jsx_postinc_t; + $this.I_pV = limit$0 = $this.limit; + $this.I_p1 = limit$0; + $this.I_p2 = limit$0; + v_1 = $this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = $this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab2; + } + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab2; + } + if ($this.cursor >= $this.limit) { + break lab2; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break lab1; + } + $this.cursor = v_2; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, FrenchStemmer.a_0, 3) === 0) { + break lab3; + } + break lab1; + } + cursor$0 = $this.cursor = v_2; + if (cursor$0 >= $this.limit) { + break lab0; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + golab4: + while (true) { + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab5; + } + break golab4; + } + if ($this.cursor >= $this.limit) { + break lab0; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + $this.I_pV = $this.cursor; + } + cursor$1 = $this.cursor = v_1; + v_4 = cursor$1; + lab6 = true; +lab6: + while (lab6 === true) { + lab6 = false; + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab8; + } + break golab7; + } + if ($this.cursor >= $this.limit) { + break lab6; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab9: + while (true) { + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab10; + } + break golab9; + } + if ($this.cursor >= $this.limit) { + break lab6; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p1 = $this.cursor; + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab12; + } + break golab11; + } + if ($this.cursor >= $this.limit) { + break lab6; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab13: + while (true) { + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab14; + } + break golab13; + } + if ($this.cursor >= $this.limit) { + break lab6; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p2 = $this.cursor; + } + $this.cursor = v_4; + return true; +}; + +FrenchStemmer.r_mark_regions$LFrenchStemmer$ = FrenchStemmer$r_mark_regions$LFrenchStemmer$; + +FrenchStemmer.prototype.r_postlude$ = function () { + var among_var; + var v_1; + var lab1; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I(this, FrenchStemmer.a_1, 4); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "i")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "u")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "y")) { + return false; + } + break; + case 4: + if (this.cursor >= this.limit) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +FrenchStemmer.prototype.r_postlude = FrenchStemmer.prototype.r_postlude$; + +function FrenchStemmer$r_postlude$LFrenchStemmer$($this) { + var among_var; + var v_1; + var lab1; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + $this.bra = $this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, FrenchStemmer.a_1, 4); + if (among_var === 0) { + break lab1; + } + $this.ket = $this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "i")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "u")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "y")) { + return false; + } + break; + case 4: + if ($this.cursor >= $this.limit) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + $this.cursor = v_1; + break replab0; + } + return true; +}; + +FrenchStemmer.r_postlude$LFrenchStemmer$ = FrenchStemmer$r_postlude$LFrenchStemmer$; + +FrenchStemmer.prototype.r_RV$ = function () { + return (! (this.I_pV <= this.cursor) ? false : true); +}; + +FrenchStemmer.prototype.r_RV = FrenchStemmer.prototype.r_RV$; + +function FrenchStemmer$r_RV$LFrenchStemmer$($this) { + return (! ($this.I_pV <= $this.cursor) ? false : true); +}; + +FrenchStemmer.r_RV$LFrenchStemmer$ = FrenchStemmer$r_RV$LFrenchStemmer$; + +FrenchStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +FrenchStemmer.prototype.r_R1 = FrenchStemmer.prototype.r_R1$; + +function FrenchStemmer$r_R1$LFrenchStemmer$($this) { + return (! ($this.I_p1 <= $this.cursor) ? false : true); +}; + +FrenchStemmer.r_R1$LFrenchStemmer$ = FrenchStemmer$r_R1$LFrenchStemmer$; + +FrenchStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +FrenchStemmer.prototype.r_R2 = FrenchStemmer.prototype.r_R2$; + +function FrenchStemmer$r_R2$LFrenchStemmer$($this) { + return (! ($this.I_p2 <= $this.cursor) ? false : true); +}; + +FrenchStemmer.r_R2$LFrenchStemmer$ = FrenchStemmer$r_R2$LFrenchStemmer$; + +FrenchStemmer.prototype.r_standard_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_10; + var v_11; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var lab10; + var lab11; + var lab12; + var lab13; + var lab14; + var lab15; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FrenchStemmer.a_4, 43); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_1 = ((this.limit - this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "ic")) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + this.bra = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = ((this.limit - this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab2; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break lab1; + } + this.cursor = ((this.limit - v_2) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "iqU")) { + return false; + } + } + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "log")) { + return false; + } + break; + case 4: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "u")) { + return false; + } + break; + case 5: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ent")) { + return false; + } + break; + case 6: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_3 = ((this.limit - this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FrenchStemmer.a_2, 6); + if (among_var === 0) { + this.cursor = ((this.limit - v_3) | 0); + break lab3; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = ((this.limit - v_3) | 0); + break lab3; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = ((this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "at")) { + this.cursor = ((this.limit - v_3) | 0); + break lab3; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + this.cursor = ((this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_4 = ((this.limit - this.cursor) | 0); + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab5; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break lab4; + } + cursor$1 = this.cursor = ((this.limit - v_4) | 0); + if (! (! (this.I_p1 <= cursor$1) ? false : true)) { + this.cursor = ((this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "eux")) { + return false; + } + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = ((this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 4: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + this.cursor = ((this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "i")) { + return false; + } + break; + } + } + break; + case 7: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_5 = ((this.limit - this.cursor) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FrenchStemmer.a_3, 3); + if (among_var === 0) { + this.cursor = ((this.limit - v_5) | 0); + break lab6; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = ((this.limit - v_5) | 0); + break lab6; + case 1: + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + v_6 = ((this.limit - this.cursor) | 0); + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab8; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break lab7; + } + this.cursor = ((this.limit - v_6) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "abl")) { + return false; + } + } + break; + case 2: + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_7 = ((this.limit - this.cursor) | 0); + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab10; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break lab9; + } + this.cursor = ((this.limit - v_7) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "iqU")) { + return false; + } + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = ((this.limit - v_5) | 0); + break lab6; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + } + break; + case 8: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_8 = ((this.limit - this.cursor) | 0); + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "at")) { + this.cursor = ((this.limit - v_8) | 0); + break lab11; + } + this.bra = cursor$2 = this.cursor; + if (! (! (this.I_p2 <= cursor$2) ? false : true)) { + this.cursor = ((this.limit - v_8) | 0); + break lab11; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "ic")) { + this.cursor = ((this.limit - v_8) | 0); + break lab11; + } + this.bra = this.cursor; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + v_9 = ((this.limit - this.cursor) | 0); + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab13; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break lab12; + } + this.cursor = ((this.limit - v_9) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "iqU")) { + return false; + } + } + } + break; + case 9: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "eau")) { + return false; + } + break; + case 10: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "al")) { + return false; + } + break; + case 11: + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + v_10 = ((this.limit - this.cursor) | 0); + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab15; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break lab14; + } + cursor$3 = this.cursor = ((this.limit - v_10) | 0); + if (! (! (this.I_p1 <= cursor$3) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "eux")) { + return false; + } + } + break; + case 12: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 13: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ant")) { + return false; + } + return false; + case 14: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ent")) { + return false; + } + return false; + case 15: + v_11 = ((this.limit - this.cursor) | 0); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + return false; + } + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + this.cursor = ((this.limit - v_11) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + return false; + } + return true; +}; + +FrenchStemmer.prototype.r_standard_suffix = FrenchStemmer.prototype.r_standard_suffix$; + +function FrenchStemmer$r_standard_suffix$LFrenchStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_10; + var v_11; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var lab10; + var lab11; + var lab12; + var lab13; + var lab14; + var lab15; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FrenchStemmer.a_4, 43); + if (among_var === 0) { + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_1 = (($this.limit - $this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "ic")) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + $this.bra = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = (($this.limit - $this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + break lab2; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break lab1; + } + $this.cursor = (($this.limit - v_2) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "iqU")) { + return false; + } + } + } + break; + case 3: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "log")) { + return false; + } + break; + case 4: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "u")) { + return false; + } + break; + case 5: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ent")) { + return false; + } + break; + case 6: + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_3 = (($this.limit - $this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FrenchStemmer.a_2, 6); + if (among_var === 0) { + $this.cursor = (($this.limit - v_3) | 0); + break lab3; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.cursor = (($this.limit - v_3) | 0); + break lab3; + case 1: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + $this.cursor = (($this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "at")) { + $this.cursor = (($this.limit - v_3) | 0); + break lab3; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$0) ? false : true)) { + $this.cursor = (($this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_4 = (($this.limit - $this.cursor) | 0); + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + break lab5; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break lab4; + } + cursor$1 = $this.cursor = (($this.limit - v_4) | 0); + if (! (! ($this.I_p1 <= cursor$1) ? false : true)) { + $this.cursor = (($this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "eux")) { + return false; + } + } + break; + case 3: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + $this.cursor = (($this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 4: + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + $this.cursor = (($this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "i")) { + return false; + } + break; + } + } + break; + case 7: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_5 = (($this.limit - $this.cursor) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FrenchStemmer.a_3, 3); + if (among_var === 0) { + $this.cursor = (($this.limit - v_5) | 0); + break lab6; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.cursor = (($this.limit - v_5) | 0); + break lab6; + case 1: + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + v_6 = (($this.limit - $this.cursor) | 0); + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + break lab8; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break lab7; + } + $this.cursor = (($this.limit - v_6) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "abl")) { + return false; + } + } + break; + case 2: + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_7 = (($this.limit - $this.cursor) | 0); + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + break lab10; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break lab9; + } + $this.cursor = (($this.limit - v_7) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "iqU")) { + return false; + } + } + break; + case 3: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + $this.cursor = (($this.limit - v_5) | 0); + break lab6; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + } + break; + case 8: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_8 = (($this.limit - $this.cursor) | 0); + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "at")) { + $this.cursor = (($this.limit - v_8) | 0); + break lab11; + } + $this.bra = cursor$2 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$2) ? false : true)) { + $this.cursor = (($this.limit - v_8) | 0); + break lab11; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "ic")) { + $this.cursor = (($this.limit - v_8) | 0); + break lab11; + } + $this.bra = $this.cursor; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + v_9 = (($this.limit - $this.cursor) | 0); + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + break lab13; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break lab12; + } + $this.cursor = (($this.limit - v_9) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "iqU")) { + return false; + } + } + } + break; + case 9: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "eau")) { + return false; + } + break; + case 10: + if (! (! ($this.I_p1 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "al")) { + return false; + } + break; + case 11: + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + v_10 = (($this.limit - $this.cursor) | 0); + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + break lab15; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break lab14; + } + cursor$3 = $this.cursor = (($this.limit - v_10) | 0); + if (! (! ($this.I_p1 <= cursor$3) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "eux")) { + return false; + } + } + break; + case 12: + if (! (! ($this.I_p1 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 13: + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ant")) { + return false; + } + return false; + case 14: + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ent")) { + return false; + } + return false; + case 15: + v_11 = (($this.limit - $this.cursor) | 0); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + return false; + } + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + return false; + } + $this.cursor = (($this.limit - v_11) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + return false; + } + return true; +}; + +FrenchStemmer.r_standard_suffix$LFrenchStemmer$ = FrenchStemmer$r_standard_suffix$LFrenchStemmer$; + +FrenchStemmer.prototype.r_i_verb_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FrenchStemmer.a_5, 35); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + this.limit_backward = v_2; + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + this.limit_backward = v_2; + return true; +}; + +FrenchStemmer.prototype.r_i_verb_suffix = FrenchStemmer.prototype.r_i_verb_suffix$; + +function FrenchStemmer$r_i_verb_suffix$LFrenchStemmer$($this) { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_pV) { + return false; + } + cursor$1 = $this.cursor = $this.I_pV; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FrenchStemmer.a_5, 35); + if (among_var === 0) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.limit_backward = v_2; + return false; + case 1: + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + $this.limit_backward = v_2; + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + $this.limit_backward = v_2; + return true; +}; + +FrenchStemmer.r_i_verb_suffix$LFrenchStemmer$ = FrenchStemmer$r_i_verb_suffix$LFrenchStemmer$; + +FrenchStemmer.prototype.r_verb_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var lab0; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FrenchStemmer.a_6, 38); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.limit_backward = v_2; + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_3 = ((this.limit - this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "e")) { + this.cursor = ((this.limit - v_3) | 0); + break lab0; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + break; + } + this.limit_backward = v_2; + return true; +}; + +FrenchStemmer.prototype.r_verb_suffix = FrenchStemmer.prototype.r_verb_suffix$; + +function FrenchStemmer$r_verb_suffix$LFrenchStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var lab0; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_pV) { + return false; + } + cursor$1 = $this.cursor = $this.I_pV; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FrenchStemmer.a_6, 38); + if (among_var === 0) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.limit_backward = v_2; + return false; + case 1: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + $this.limit_backward = v_2; + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_3 = (($this.limit - $this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "e")) { + $this.cursor = (($this.limit - v_3) | 0); + break lab0; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + break; + } + $this.limit_backward = v_2; + return true; +}; + +FrenchStemmer.r_verb_suffix$LFrenchStemmer$ = FrenchStemmer$r_verb_suffix$LFrenchStemmer$; + +FrenchStemmer.prototype.r_residual_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var lab0; + var lab1; + var lab2; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + v_1 = ((this.limit - this.cursor) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "s")) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + this.bra = cursor$0 = this.cursor; + v_2 = ((this.limit - cursor$0) | 0); + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, FrenchStemmer.g_keep_with_s, 97, 232)) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + this.cursor = ((this.limit - v_2) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + v_3 = ((this.limit - (cursor$1 = this.cursor)) | 0); + if (cursor$1 < this.I_pV) { + return false; + } + cursor$2 = this.cursor = this.I_pV; + v_4 = this.limit_backward; + this.limit_backward = cursor$2; + cursor$3 = this.cursor = ((this.limit - v_3) | 0); + this.ket = cursor$3; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FrenchStemmer.a_7, 7); + if (among_var === 0) { + this.limit_backward = v_4; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_4; + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.limit_backward = v_4; + return false; + } + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_5 = ((this.limit - this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "s")) { + break lab2; + } + break lab1; + } + this.cursor = ((this.limit - v_5) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "t")) { + this.limit_backward = v_4; + return false; + } + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "i")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 4: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "gu")) { + this.limit_backward = v_4; + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + this.limit_backward = v_4; + return true; +}; + +FrenchStemmer.prototype.r_residual_suffix = FrenchStemmer.prototype.r_residual_suffix$; + +function FrenchStemmer$r_residual_suffix$LFrenchStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var lab0; + var lab1; + var lab2; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + v_1 = (($this.limit - $this.cursor) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "s")) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + $this.bra = cursor$0 = $this.cursor; + v_2 = (($this.limit - cursor$0) | 0); + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, FrenchStemmer.g_keep_with_s, 97, 232)) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + $this.cursor = (($this.limit - v_2) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + v_3 = (($this.limit - (cursor$1 = $this.cursor)) | 0); + if (cursor$1 < $this.I_pV) { + return false; + } + cursor$2 = $this.cursor = $this.I_pV; + v_4 = $this.limit_backward; + $this.limit_backward = cursor$2; + cursor$3 = $this.cursor = (($this.limit - v_3) | 0); + $this.ket = cursor$3; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FrenchStemmer.a_7, 7); + if (among_var === 0) { + $this.limit_backward = v_4; + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.limit_backward = v_4; + return false; + case 1: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + $this.limit_backward = v_4; + return false; + } + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_5 = (($this.limit - $this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "s")) { + break lab2; + } + break lab1; + } + $this.cursor = (($this.limit - v_5) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "t")) { + $this.limit_backward = v_4; + return false; + } + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "i")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 4: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "gu")) { + $this.limit_backward = v_4; + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + $this.limit_backward = v_4; + return true; +}; + +FrenchStemmer.r_residual_suffix$LFrenchStemmer$ = FrenchStemmer$r_residual_suffix$LFrenchStemmer$; + +FrenchStemmer.prototype.r_un_double$ = function () { + var v_1; + var cursor$0; + var $__jsx_postinc_t; + v_1 = ((this.limit - this.cursor) | 0); + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FrenchStemmer.a_8, 5) === 0) { + return false; + } + cursor$0 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$0; + if (cursor$0 <= this.limit_backward) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + this.bra = this.cursor; + return (! BaseStemmer$slice_from$LBaseStemmer$S(this, "") ? false : true); +}; + +FrenchStemmer.prototype.r_un_double = FrenchStemmer.prototype.r_un_double$; + +function FrenchStemmer$r_un_double$LFrenchStemmer$($this) { + var v_1; + var cursor$0; + var $__jsx_postinc_t; + v_1 = (($this.limit - $this.cursor) | 0); + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FrenchStemmer.a_8, 5) === 0) { + return false; + } + cursor$0 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$0; + if (cursor$0 <= $this.limit_backward) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + $this.bra = $this.cursor; + return (! BaseStemmer$slice_from$LBaseStemmer$S($this, "") ? false : true); +}; + +FrenchStemmer.r_un_double$LFrenchStemmer$ = FrenchStemmer$r_un_double$LFrenchStemmer$; + +FrenchStemmer.prototype.r_un_accent$ = function () { + var v_3; + var v_1; + var lab1; + var lab2; + var lab3; + v_1 = 1; +replab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab1; + } + v_1--; + continue replab0; + } + break replab0; + } + if (v_1 > 0) { + return false; + } + this.ket = this.cursor; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + v_3 = ((this.limit - this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u00E9")) { + break lab3; + } + break lab2; + } + this.cursor = ((this.limit - v_3) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u00E8")) { + return false; + } + } + this.bra = this.cursor; + return (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e") ? false : true); +}; + +FrenchStemmer.prototype.r_un_accent = FrenchStemmer.prototype.r_un_accent$; + +function FrenchStemmer$r_un_accent$LFrenchStemmer$($this) { + var v_3; + var v_1; + var lab1; + var lab2; + var lab3; + v_1 = 1; +replab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab1; + } + v_1--; + continue replab0; + } + break replab0; + } + if (v_1 > 0) { + return false; + } + $this.ket = $this.cursor; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + v_3 = (($this.limit - $this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u00E9")) { + break lab3; + } + break lab2; + } + $this.cursor = (($this.limit - v_3) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u00E8")) { + return false; + } + } + $this.bra = $this.cursor; + return (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e") ? false : true); +}; + +FrenchStemmer.r_un_accent$LFrenchStemmer$ = FrenchStemmer$r_un_accent$LFrenchStemmer$; + +FrenchStemmer.prototype.stem$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_11; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var lab10; + var lab11; + var lab12; + var lab13; + var cursor$0; + var limit$0; + var cursor$1; + var cursor$2; + var limit$1; + var cursor$3; + var limit$2; + var cursor$4; + var cursor$5; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! FrenchStemmer$r_prelude$LFrenchStemmer$(this)) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! FrenchStemmer$r_mark_regions$LFrenchStemmer$(this)) { + break lab1; + } + } + cursor$2 = this.cursor = v_2; + this.limit_backward = cursor$2; + cursor$3 = this.cursor = limit$1 = this.limit; + v_3 = ((limit$1 - cursor$3) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_4 = ((this.limit - this.cursor) | 0); + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_5 = ((this.limit - this.cursor) | 0); + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_6 = ((this.limit - this.cursor) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! FrenchStemmer$r_standard_suffix$LFrenchStemmer$(this)) { + break lab6; + } + break lab5; + } + this.cursor = ((this.limit - v_6) | 0); + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! FrenchStemmer$r_i_verb_suffix$LFrenchStemmer$(this)) { + break lab7; + } + break lab5; + } + this.cursor = ((this.limit - v_6) | 0); + if (! FrenchStemmer$r_verb_suffix$LFrenchStemmer$(this)) { + break lab4; + } + } + cursor$1 = this.cursor = (((limit$0 = this.limit) - v_5) | 0); + v_7 = ((limit$0 - cursor$1) | 0); + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + this.ket = this.cursor; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_8 = ((this.limit - this.cursor) | 0); + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "Y")) { + break lab10; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "i")) { + return false; + } + break lab9; + } + this.cursor = ((this.limit - v_8) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u00E7")) { + this.cursor = ((this.limit - v_7) | 0); + break lab8; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "c")) { + return false; + } + } + } + break lab3; + } + this.cursor = ((this.limit - v_4) | 0); + if (! FrenchStemmer$r_residual_suffix$LFrenchStemmer$(this)) { + break lab2; + } + } + } + cursor$4 = this.cursor = (((limit$2 = this.limit) - v_3) | 0); + v_9 = ((limit$2 - cursor$4) | 0); + lab11 = true; +lab11: + while (lab11 === true) { + lab11 = false; + if (! FrenchStemmer$r_un_double$LFrenchStemmer$(this)) { + break lab11; + } + } + this.cursor = ((this.limit - v_9) | 0); + lab12 = true; +lab12: + while (lab12 === true) { + lab12 = false; + if (! FrenchStemmer$r_un_accent$LFrenchStemmer$(this)) { + break lab12; + } + } + cursor$5 = this.cursor = this.limit_backward; + v_11 = cursor$5; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + if (! FrenchStemmer$r_postlude$LFrenchStemmer$(this)) { + break lab13; + } + } + this.cursor = v_11; + return true; +}; + +FrenchStemmer.prototype.stem = FrenchStemmer.prototype.stem$; + +FrenchStemmer.prototype.equals$X = function (o) { + return o instanceof FrenchStemmer; +}; + +FrenchStemmer.prototype.equals = FrenchStemmer.prototype.equals$X; + +function FrenchStemmer$equals$LFrenchStemmer$X($this, o) { + return o instanceof FrenchStemmer; +}; + +FrenchStemmer.equals$LFrenchStemmer$X = FrenchStemmer$equals$LFrenchStemmer$X; + +FrenchStemmer.prototype.hashCode$ = function () { + var classname; + var hash; + var i; + var char; + classname = "FrenchStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +FrenchStemmer.prototype.hashCode = FrenchStemmer.prototype.hashCode$; + +function FrenchStemmer$hashCode$LFrenchStemmer$($this) { + var classname; + var hash; + var i; + var char; + classname = "FrenchStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +FrenchStemmer.hashCode$LFrenchStemmer$ = FrenchStemmer$hashCode$LFrenchStemmer$; + +FrenchStemmer.serialVersionUID = 1; +$__jsx_lazy_init(FrenchStemmer, "methodObject", function () { + return new FrenchStemmer(); +}); +$__jsx_lazy_init(FrenchStemmer, "a_0", function () { + return [ new Among("col", -1, -1), new Among("par", -1, -1), new Among("tap", -1, -1) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_1", function () { + return [ new Among("", -1, 4), new Among("I", 0, 1), new Among("U", 0, 2), new Among("Y", 0, 3) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_2", function () { + return [ new Among("iqU", -1, 3), new Among("abl", -1, 3), new Among("I\u00E8r", -1, 4), new Among("i\u00E8r", -1, 4), new Among("eus", -1, 2), new Among("iv", -1, 1) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_3", function () { + return [ new Among("ic", -1, 2), new Among("abil", -1, 1), new Among("iv", -1, 3) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_4", function () { + return [ new Among("iqUe", -1, 1), new Among("atrice", -1, 2), new Among("ance", -1, 1), new Among("ence", -1, 5), new Among("logie", -1, 3), new Among("able", -1, 1), new Among("isme", -1, 1), new Among("euse", -1, 11), new Among("iste", -1, 1), new Among("ive", -1, 8), new Among("if", -1, 8), new Among("usion", -1, 4), new Among("ation", -1, 2), new Among("ution", -1, 4), new Among("ateur", -1, 2), new Among("iqUes", -1, 1), new Among("atrices", -1, 2), new Among("ances", -1, 1), new Among("ences", -1, 5), new Among("logies", -1, 3), new Among("ables", -1, 1), new Among("ismes", -1, 1), new Among("euses", -1, 11), new Among("istes", -1, 1), new Among("ives", -1, 8), new Among("ifs", -1, 8), new Among("usions", -1, 4), new Among("ations", -1, 2), new Among("utions", -1, 4), new Among("ateurs", -1, 2), new Among("ments", -1, 15), new Among("ements", 30, 6), new Among("issements", 31, 12), new Among("it\u00E9s", -1, 7), new Among("ment", -1, 15), new Among("ement", 34, 6), new Among("issement", 35, 12), new Among("amment", 34, 13), new Among("emment", 34, 14), new Among("aux", -1, 10), new Among("eaux", 39, 9), new Among("eux", -1, 1), new Among("it\u00E9", -1, 7) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_5", function () { + return [ new Among("ira", -1, 1), new Among("ie", -1, 1), new Among("isse", -1, 1), new Among("issante", -1, 1), new Among("i", -1, 1), new Among("irai", 4, 1), new Among("ir", -1, 1), new Among("iras", -1, 1), new Among("ies", -1, 1), new Among("\u00EEmes", -1, 1), new Among("isses", -1, 1), new Among("issantes", -1, 1), new Among("\u00EEtes", -1, 1), new Among("is", -1, 1), new Among("irais", 13, 1), new Among("issais", 13, 1), new Among("irions", -1, 1), new Among("issions", -1, 1), new Among("irons", -1, 1), new Among("issons", -1, 1), new Among("issants", -1, 1), new Among("it", -1, 1), new Among("irait", 21, 1), new Among("issait", 21, 1), new Among("issant", -1, 1), new Among("iraIent", -1, 1), new Among("issaIent", -1, 1), new Among("irent", -1, 1), new Among("issent", -1, 1), new Among("iront", -1, 1), new Among("\u00EEt", -1, 1), new Among("iriez", -1, 1), new Among("issiez", -1, 1), new Among("irez", -1, 1), new Among("issez", -1, 1) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_6", function () { + return [ new Among("a", -1, 3), new Among("era", 0, 2), new Among("asse", -1, 3), new Among("ante", -1, 3), new Among("\u00E9e", -1, 2), new Among("ai", -1, 3), new Among("erai", 5, 2), new Among("er", -1, 2), new Among("as", -1, 3), new Among("eras", 8, 2), new Among("\u00E2mes", -1, 3), new Among("asses", -1, 3), new Among("antes", -1, 3), new Among("\u00E2tes", -1, 3), new Among("\u00E9es", -1, 2), new Among("ais", -1, 3), new Among("erais", 15, 2), new Among("ions", -1, 1), new Among("erions", 17, 2), new Among("assions", 17, 3), new Among("erons", -1, 2), new Among("ants", -1, 3), new Among("\u00E9s", -1, 2), new Among("ait", -1, 3), new Among("erait", 23, 2), new Among("ant", -1, 3), new Among("aIent", -1, 3), new Among("eraIent", 26, 2), new Among("\u00E8rent", -1, 2), new Among("assent", -1, 3), new Among("eront", -1, 2), new Among("\u00E2t", -1, 3), new Among("ez", -1, 2), new Among("iez", 32, 2), new Among("eriez", 33, 2), new Among("assiez", 33, 3), new Among("erez", 32, 2), new Among("\u00E9", -1, 2) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_7", function () { + return [ new Among("e", -1, 3), new Among("I\u00E8re", 0, 2), new Among("i\u00E8re", 0, 2), new Among("ion", -1, 1), new Among("Ier", -1, 2), new Among("ier", -1, 2), new Among("\u00EB", -1, 4) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_8", function () { + return [ new Among("ell", -1, -1), new Among("eill", -1, -1), new Among("enn", -1, -1), new Among("onn", -1, -1), new Among("ett", -1, -1) ]; +}); +FrenchStemmer.g_v = [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 130, 103, 8, 5 ]; +FrenchStemmer.g_keep_with_s = [ 1, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 ]; + +var $__jsx_classMap = { + "src/among.jsx": { + Among: Among, + Among$SII: Among, + Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$0 + }, + "src/stemmer.jsx": { + Stemmer: Stemmer, + Stemmer$: Stemmer + }, + "src/base-stemmer.jsx": { + BaseStemmer: BaseStemmer, + BaseStemmer$: BaseStemmer + }, + "src/french-stemmer.jsx": { + FrenchStemmer: FrenchStemmer, + FrenchStemmer$: FrenchStemmer + } +}; + + +})(JSX); + +var Among = JSX.require("src/among.jsx").Among; +var Among$SII = JSX.require("src/among.jsx").Among$SII; +var Stemmer = JSX.require("src/stemmer.jsx").Stemmer; +var BaseStemmer = JSX.require("src/base-stemmer.jsx").BaseStemmer; +var FrenchStemmer = JSX.require("src/french-stemmer.jsx").FrenchStemmer; diff --git a/sphinx/sphinx/search/non-minified-js/german-stemmer.js b/sphinx/sphinx/search/non-minified-js/german-stemmer.js new file mode 100644 index 0000000..4f1dc1c --- /dev/null +++ b/sphinx/sphinx/search/non-minified-js/german-stemmer.js @@ -0,0 +1,2506 @@ +// generatedy by JSX compiler 0.9.89 (2014-05-20 06:01:03 +0900; 8e8c6105f36f3dfe440ea026a3c93a3444977102) +var JSX = {}; +(function (JSX) { +/** + * extends the class + */ +function $__jsx_extend(derivations, base) { + var ctor = function () {}; + ctor.prototype = base.prototype; + var proto = new ctor(); + for (var i in derivations) { + derivations[i].prototype = proto; + } +} + +/** + * copies the implementations from source interface to target + */ +function $__jsx_merge_interface(target, source) { + for (var k in source.prototype) + if (source.prototype.hasOwnProperty(k)) + target.prototype[k] = source.prototype[k]; +} + +/** + * defers the initialization of the property + */ +function $__jsx_lazy_init(obj, prop, func) { + function reset(obj, prop, value) { + delete obj[prop]; + obj[prop] = value; + return value; + } + + Object.defineProperty(obj, prop, { + get: function () { + return reset(obj, prop, func()); + }, + set: function (v) { + reset(obj, prop, v); + }, + enumerable: true, + configurable: true + }); +} + +var $__jsx_imul = Math.imul; +if (typeof $__jsx_imul === "undefined") { + $__jsx_imul = function (a, b) { + var ah = (a >>> 16) & 0xffff; + var al = a & 0xffff; + var bh = (b >>> 16) & 0xffff; + var bl = b & 0xffff; + return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0); + }; +} + +/** + * fused int-ops with side-effects + */ +function $__jsx_ipadd(o, p, r) { + return o[p] = (o[p] + r) | 0; +} +function $__jsx_ipsub(o, p, r) { + return o[p] = (o[p] - r) | 0; +} +function $__jsx_ipmul(o, p, r) { + return o[p] = $__jsx_imul(o[p], r); +} +function $__jsx_ipdiv(o, p, r) { + return o[p] = (o[p] / r) | 0; +} +function $__jsx_ipmod(o, p, r) { + return o[p] = (o[p] % r) | 0; +} +function $__jsx_ippostinc(o, p) { + var v = o[p]; + o[p] = (v + 1) | 0; + return v; +} +function $__jsx_ippostdec(o, p) { + var v = o[p]; + o[p] = (v - 1) | 0; + return v; +} + +/** + * non-inlined version of Array#each + */ +function $__jsx_forEach(o, f) { + var l = o.length; + for (var i = 0; i < l; ++i) + f(o[i]); +} + +/* + * global functions, renamed to avoid conflict with local variable names + */ +var $__jsx_parseInt = parseInt; +var $__jsx_parseFloat = parseFloat; +function $__jsx_isNaN(n) { return n !== n; } +var $__jsx_isFinite = isFinite; + +var $__jsx_encodeURIComponent = encodeURIComponent; +var $__jsx_decodeURIComponent = decodeURIComponent; +var $__jsx_encodeURI = encodeURI; +var $__jsx_decodeURI = decodeURI; + +var $__jsx_ObjectToString = Object.prototype.toString; +var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty; + +/* + * profiler object, initialized afterwards + */ +function $__jsx_profiler() { +} + +/* + * public interface to JSX code + */ +JSX.require = function (path) { + var m = $__jsx_classMap[path]; + return m !== undefined ? m : null; +}; + +JSX.profilerIsRunning = function () { + return $__jsx_profiler.getResults != null; +}; + +JSX.getProfileResults = function () { + return ($__jsx_profiler.getResults || function () { return {}; })(); +}; + +JSX.postProfileResults = function (url, cb) { + if ($__jsx_profiler.postResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.postResults(url, cb); +}; + +JSX.resetProfileResults = function () { + if ($__jsx_profiler.resetResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.resetResults(); +}; +JSX.DEBUG = false; +var GeneratorFunction$0 = +(function () { + try { + return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); + } catch (e) { + return function GeneratorFunction () {}; + } +})(); +var __jsx_generator_object$0 = +(function () { + function __jsx_generator_object() { + this.__next = 0; + this.__loop = null; + this.__seed = null; + this.__value = undefined; + this.__status = 0; // SUSPENDED: 0, ACTIVE: 1, DEAD: 2 + } + + __jsx_generator_object.prototype.next = function (seed) { + switch (this.__status) { + case 0: + this.__status = 1; + this.__seed = seed; + + // go next! + this.__loop(this.__next); + + var done = false; + if (this.__next != -1) { + this.__status = 0; + } else { + this.__status = 2; + done = true; + } + return { value: this.__value, done: done }; + case 1: + throw new Error("Generator is already running"); + case 2: + throw new Error("Generator is already finished"); + default: + throw new Error("Unexpected generator internal state"); + } + }; + + return __jsx_generator_object; +}()); +function Among(s, substring_i, result) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = null; + this.instance = null; +}; + +function Among$0(s, substring_i, result, method, instance) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = method; + this.instance = instance; +}; + +$__jsx_extend([Among, Among$0], Object); +function Stemmer() { +}; + +$__jsx_extend([Stemmer], Object); +function BaseStemmer() { + var current$0; + var cursor$0; + var limit$0; + this.cache = ({ }); + current$0 = this.current = ""; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +$__jsx_extend([BaseStemmer], Stemmer); +BaseStemmer.prototype.setCurrent$S = function (value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = this.current = value; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + + +function BaseStemmer$setCurrent$LBaseStemmer$S($this, value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = $this.current = value; + cursor$0 = $this.cursor = 0; + limit$0 = $this.limit = current$0.length; + $this.limit_backward = 0; + $this.bra = cursor$0; + $this.ket = limit$0; +}; + +BaseStemmer.setCurrent$LBaseStemmer$S = BaseStemmer$setCurrent$LBaseStemmer$S; + +BaseStemmer.prototype.getCurrent$ = function () { + return this.current; +}; + + +function BaseStemmer$getCurrent$LBaseStemmer$($this) { + return $this.current; +}; + +BaseStemmer.getCurrent$LBaseStemmer$ = BaseStemmer$getCurrent$LBaseStemmer$; + +BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; +}; + + +function BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$($this, other) { + $this.current = other.current; + $this.cursor = other.cursor; + $this.limit = other.limit; + $this.limit_backward = other.limit_backward; + $this.bra = other.bra; + $this.ket = other.ket; +}; + +BaseStemmer.copy_from$LBaseStemmer$LBaseStemmer$ = BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$; + +BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping$LBaseStemmer$AIII = BaseStemmer$in_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping_b$LBaseStemmer$AIII = BaseStemmer$in_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping$LBaseStemmer$AIII = BaseStemmer$out_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping_b$LBaseStemmer$AIII = BaseStemmer$out_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range$LBaseStemmer$II = BaseStemmer$in_range$LBaseStemmer$II; + +BaseStemmer.prototype.in_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range_b$LBaseStemmer$II = BaseStemmer$in_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.out_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range$LBaseStemmer$II = BaseStemmer$out_range$LBaseStemmer$II; + +BaseStemmer.prototype.out_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range_b$LBaseStemmer$II = BaseStemmer$out_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.eq_s$IS = function (s_size, s) { + var cursor$0; + if (((this.limit - this.cursor) | 0) < s_size) { + return false; + } + if (this.current.slice(cursor$0 = this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + this.cursor = (this.cursor + s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.limit - $this.cursor) | 0) < s_size) { + return false; + } + if ($this.current.slice(cursor$0 = $this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + $this.cursor = ($this.cursor + s_size) | 0; + return true; +}; + +BaseStemmer.eq_s$LBaseStemmer$IS = BaseStemmer$eq_s$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) { + var cursor$0; + if (((this.cursor - this.limit_backward) | 0) < s_size) { + return false; + } + if (this.current.slice((((cursor$0 = this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + this.cursor = (this.cursor - s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.cursor - $this.limit_backward) | 0) < s_size) { + return false; + } + if ($this.current.slice((((cursor$0 = $this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + $this.cursor = ($this.cursor - s_size) | 0; + return true; +}; + +BaseStemmer.eq_s_b$LBaseStemmer$IS = BaseStemmer$eq_s_b$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_v$S = function (s) { + return BaseStemmer$eq_s$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v$LBaseStemmer$S = BaseStemmer$eq_v$LBaseStemmer$S; + +BaseStemmer.prototype.eq_v_b$S = function (s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v_b$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v_b$LBaseStemmer$S = BaseStemmer$eq_v_b$LBaseStemmer$S; + +BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + l = this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + l = $this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + $this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among$LBaseStemmer$ALAmong$I = BaseStemmer$find_among$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + lb = this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(this); + this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + lb = $this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method($this); + $this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among_b$LBaseStemmer$ALAmong$I = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit = (this.limit + adjustment) | 0; + if (this.cursor >= c_ket) { + this.cursor = (this.cursor + adjustment) | 0; + } else if (this.cursor > c_bra) { + this.cursor = c_bra; + } + return (adjustment | 0); +}; + + +function BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + $this.current = $this.current.slice(0, c_bra) + s + $this.current.slice(c_ket); + $this.limit = ($this.limit + adjustment) | 0; + if ($this.cursor >= c_ket) { + $this.cursor = ($this.cursor + adjustment) | 0; + } else if ($this.cursor > c_bra) { + $this.cursor = c_bra; + } + return (adjustment | 0); +}; + +BaseStemmer.replace_s$LBaseStemmer$IIS = BaseStemmer$replace_s$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_check$ = function () { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true); +}; + + +function BaseStemmer$slice_check$LBaseStemmer$($this) { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true); +}; + +BaseStemmer.slice_check$LBaseStemmer$ = BaseStemmer$slice_check$LBaseStemmer$; + +BaseStemmer.prototype.slice_from$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS(this, this.bra, this.ket, s); + result = true; + } + return result; +}; + + +function BaseStemmer$slice_from$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS($this, $this.bra, $this.ket, s); + result = true; + } + return result; +}; + +BaseStemmer.slice_from$LBaseStemmer$S = BaseStemmer$slice_from$LBaseStemmer$S; + +BaseStemmer.prototype.slice_del$ = function () { + return BaseStemmer$slice_from$LBaseStemmer$S(this, ""); +}; + + +function BaseStemmer$slice_del$LBaseStemmer$($this) { + return BaseStemmer$slice_from$LBaseStemmer$S($this, ""); +}; + +BaseStemmer.slice_del$LBaseStemmer$ = BaseStemmer$slice_del$LBaseStemmer$; + +BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS(this, c_bra, c_ket, s); + if (c_bra <= this.bra) { + this.bra = (this.bra + adjustment) | 0; + } + if (c_bra <= this.ket) { + this.ket = (this.ket + adjustment) | 0; + } +}; + + +function BaseStemmer$insert$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s); + if (c_bra <= $this.bra) { + $this.bra = ($this.bra + adjustment) | 0; + } + if (c_bra <= $this.ket) { + $this.ket = ($this.ket + adjustment) | 0; + } +}; + +BaseStemmer.insert$LBaseStemmer$IIS = BaseStemmer$insert$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_to$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + result = this.current.slice(this.bra, this.ket); + } + return result; +}; + + +function BaseStemmer$slice_to$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + result = $this.current.slice($this.bra, $this.ket); + } + return result; +}; + +BaseStemmer.slice_to$LBaseStemmer$S = BaseStemmer$slice_to$LBaseStemmer$S; + +BaseStemmer.prototype.assign_to$S = function (s) { + return this.current.slice(0, this.limit); +}; + + +function BaseStemmer$assign_to$LBaseStemmer$S($this, s) { + return $this.current.slice(0, $this.limit); +}; + +BaseStemmer.assign_to$LBaseStemmer$S = BaseStemmer$assign_to$LBaseStemmer$S; + +BaseStemmer.prototype.stem$ = function () { + return false; +}; + + +BaseStemmer.prototype.stemWord$S = function (word) { + var result; + var current$0; + var cursor$0; + var limit$0; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + return result; +}; + +BaseStemmer.prototype.stemWord = BaseStemmer.prototype.stemWord$S; + +BaseStemmer.prototype.stemWords$AS = function (words) { + var results; + var i; + var word; + var result; + var current$0; + var cursor$0; + var limit$0; + results = [ ]; + for (i = 0; i < words.length; i++) { + word = words[i]; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + results.push(result); + } + return results; +}; + +BaseStemmer.prototype.stemWords = BaseStemmer.prototype.stemWords$AS; + +function GermanStemmer() { + BaseStemmer.call(this); + this.I_x = 0; + this.I_p2 = 0; + this.I_p1 = 0; +}; + +$__jsx_extend([GermanStemmer], BaseStemmer); +GermanStemmer.prototype.copy_from$LGermanStemmer$ = function (other) { + this.I_x = other.I_x; + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$(this, other); +}; + +GermanStemmer.prototype.copy_from = GermanStemmer.prototype.copy_from$LGermanStemmer$; + +GermanStemmer.prototype.r_prelude$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var lab1; + var lab2; + var lab3; + var lab5; + var lab7; + var lab8; + var lab9; + var cursor$0; + var cursor$1; + var $__jsx_postinc_t; + v_1 = this.cursor; +replab0: + while (true) { + v_2 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_3 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.bra = this.cursor; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "\u00DF")) { + break lab3; + } + this.ket = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ss")) { + return false; + } + break lab2; + } + cursor$0 = this.cursor = v_3; + if (cursor$0 >= this.limit) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + continue replab0; + } + this.cursor = v_2; + break replab0; + } + this.cursor = v_1; +replab4: + while (true) { + v_4 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + golab6: + while (true) { + v_5 = this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, GermanStemmer.g_v, 97, 252)) { + break lab7; + } + this.bra = this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + v_6 = this.cursor; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "u")) { + break lab9; + } + this.ket = this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, GermanStemmer.g_v, 97, 252)) { + break lab9; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "U")) { + return false; + } + break lab8; + } + this.cursor = v_6; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "y")) { + break lab7; + } + this.ket = this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, GermanStemmer.g_v, 97, 252)) { + break lab7; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "Y")) { + return false; + } + } + this.cursor = v_5; + break golab6; + } + cursor$1 = this.cursor = v_5; + if (cursor$1 >= this.limit) { + break lab5; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + continue replab4; + } + this.cursor = v_4; + break replab4; + } + return true; +}; + +GermanStemmer.prototype.r_prelude = GermanStemmer.prototype.r_prelude$; + +function GermanStemmer$r_prelude$LGermanStemmer$($this) { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var lab1; + var lab2; + var lab3; + var lab5; + var lab7; + var lab8; + var lab9; + var cursor$0; + var cursor$1; + var $__jsx_postinc_t; + v_1 = $this.cursor; +replab0: + while (true) { + v_2 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_3 = $this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + $this.bra = $this.cursor; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "\u00DF")) { + break lab3; + } + $this.ket = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ss")) { + return false; + } + break lab2; + } + cursor$0 = $this.cursor = v_3; + if (cursor$0 >= $this.limit) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + continue replab0; + } + $this.cursor = v_2; + break replab0; + } + $this.cursor = v_1; +replab4: + while (true) { + v_4 = $this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + golab6: + while (true) { + v_5 = $this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, GermanStemmer.g_v, 97, 252)) { + break lab7; + } + $this.bra = $this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + v_6 = $this.cursor; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "u")) { + break lab9; + } + $this.ket = $this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, GermanStemmer.g_v, 97, 252)) { + break lab9; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "U")) { + return false; + } + break lab8; + } + $this.cursor = v_6; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "y")) { + break lab7; + } + $this.ket = $this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, GermanStemmer.g_v, 97, 252)) { + break lab7; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "Y")) { + return false; + } + } + $this.cursor = v_5; + break golab6; + } + cursor$1 = $this.cursor = v_5; + if (cursor$1 >= $this.limit) { + break lab5; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + continue replab4; + } + $this.cursor = v_4; + break replab4; + } + return true; +}; + +GermanStemmer.r_prelude$LGermanStemmer$ = GermanStemmer$r_prelude$LGermanStemmer$; + +GermanStemmer.prototype.r_mark_regions$ = function () { + var v_1; + var c; + var lab1; + var lab3; + var lab4; + var lab6; + var lab8; + var limit$0; + var cursor$0; + var cursor$1; + var $__jsx_postinc_t; + this.I_p1 = limit$0 = this.limit; + this.I_p2 = limit$0; + v_1 = cursor$0 = this.cursor; + c = (cursor$0 + 3 | 0); + if (0 > c || c > limit$0) { + return false; + } + cursor$1 = this.cursor = c; + this.I_x = cursor$1; + this.cursor = v_1; +golab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, GermanStemmer.g_v, 97, 252)) { + break lab1; + } + break golab0; + } + if (this.cursor >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, GermanStemmer.g_v, 97, 252)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p1 = this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! (this.I_p1 < this.I_x)) { + break lab4; + } + this.I_p1 = this.I_x; + } +golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, GermanStemmer.g_v, 97, 252)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } +golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, GermanStemmer.g_v, 97, 252)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p2 = this.cursor; + return true; +}; + +GermanStemmer.prototype.r_mark_regions = GermanStemmer.prototype.r_mark_regions$; + +function GermanStemmer$r_mark_regions$LGermanStemmer$($this) { + var v_1; + var c; + var lab1; + var lab3; + var lab4; + var lab6; + var lab8; + var limit$0; + var cursor$0; + var cursor$1; + var $__jsx_postinc_t; + $this.I_p1 = limit$0 = $this.limit; + $this.I_p2 = limit$0; + v_1 = cursor$0 = $this.cursor; + c = (cursor$0 + 3 | 0); + if (0 > c || c > limit$0) { + return false; + } + cursor$1 = $this.cursor = c; + $this.I_x = cursor$1; + $this.cursor = v_1; +golab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, GermanStemmer.g_v, 97, 252)) { + break lab1; + } + break golab0; + } + if ($this.cursor >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, GermanStemmer.g_v, 97, 252)) { + break lab3; + } + break golab2; + } + if ($this.cursor >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p1 = $this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! ($this.I_p1 < $this.I_x)) { + break lab4; + } + $this.I_p1 = $this.I_x; + } +golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, GermanStemmer.g_v, 97, 252)) { + break lab6; + } + break golab5; + } + if ($this.cursor >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } +golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, GermanStemmer.g_v, 97, 252)) { + break lab8; + } + break golab7; + } + if ($this.cursor >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p2 = $this.cursor; + return true; +}; + +GermanStemmer.r_mark_regions$LGermanStemmer$ = GermanStemmer$r_mark_regions$LGermanStemmer$; + +GermanStemmer.prototype.r_postlude$ = function () { + var among_var; + var v_1; + var lab1; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I(this, GermanStemmer.a_0, 6); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "y")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "u")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "o")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "u")) { + return false; + } + break; + case 6: + if (this.cursor >= this.limit) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +GermanStemmer.prototype.r_postlude = GermanStemmer.prototype.r_postlude$; + +function GermanStemmer$r_postlude$LGermanStemmer$($this) { + var among_var; + var v_1; + var lab1; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + $this.bra = $this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, GermanStemmer.a_0, 6); + if (among_var === 0) { + break lab1; + } + $this.ket = $this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "y")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "u")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "o")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "u")) { + return false; + } + break; + case 6: + if ($this.cursor >= $this.limit) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + $this.cursor = v_1; + break replab0; + } + return true; +}; + +GermanStemmer.r_postlude$LGermanStemmer$ = GermanStemmer$r_postlude$LGermanStemmer$; + +GermanStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +GermanStemmer.prototype.r_R1 = GermanStemmer.prototype.r_R1$; + +function GermanStemmer$r_R1$LGermanStemmer$($this) { + return (! ($this.I_p1 <= $this.cursor) ? false : true); +}; + +GermanStemmer.r_R1$LGermanStemmer$ = GermanStemmer$r_R1$LGermanStemmer$; + +GermanStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +GermanStemmer.prototype.r_R2 = GermanStemmer.prototype.r_R2$; + +function GermanStemmer$r_R2$LGermanStemmer$($this) { + return (! ($this.I_p2 <= $this.cursor) ? false : true); +}; + +GermanStemmer.r_R2$LGermanStemmer$ = GermanStemmer$r_R2$LGermanStemmer$; + +GermanStemmer.prototype.r_standard_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_10; + var lab0; + var lab1; + var lab2; + var c; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var lab10; + var cursor$0; + var cursor$1; + var limit$0; + var cursor$2; + var cursor$3; + var cursor$4; + var cursor$5; + var cursor$6; + var cursor$7; + var limit$1; + var cursor$8; + v_1 = ((this.limit - this.cursor) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, GermanStemmer.a_1, 7); + if (among_var === 0) { + break lab0; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + break lab0; + } + switch (among_var) { + case 0: + break lab0; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_2 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "s")) { + this.cursor = ((this.limit - v_2) | 0); + break lab1; + } + this.bra = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 3, "nis")) { + this.cursor = ((this.limit - v_2) | 0); + break lab1; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + break; + case 3: + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, GermanStemmer.g_s_ending, 98, 116)) { + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + } + cursor$2 = this.cursor = (((limit$0 = this.limit) - v_1) | 0); + v_3 = ((limit$0 - cursor$2) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, GermanStemmer.a_2, 4); + if (among_var === 0) { + break lab2; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_p1 <= cursor$1) ? false : true)) { + break lab2; + } + switch (among_var) { + case 0: + break lab2; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, GermanStemmer.g_st_ending, 98, 116)) { + break lab2; + } + c = (this.cursor - 3 | 0); + if (this.limit_backward > c || c > this.limit) { + break lab2; + } + this.cursor = c; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + } + cursor$8 = this.cursor = (((limit$1 = this.limit) - v_3) | 0); + v_4 = ((limit$1 - cursor$8) | 0); + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, GermanStemmer.a_4, 8); + if (among_var === 0) { + break lab3; + } + this.bra = cursor$3 = this.cursor; + if (! (! (this.I_p2 <= cursor$3) ? false : true)) { + break lab3; + } + switch (among_var) { + case 0: + break lab3; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_5 = ((this.limit - this.cursor) | 0); + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "ig")) { + this.cursor = ((this.limit - v_5) | 0); + break lab4; + } + this.bra = cursor$4 = this.cursor; + v_6 = ((this.limit - cursor$4) | 0); + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "e")) { + break lab5; + } + this.cursor = ((this.limit - v_5) | 0); + break lab4; + } + cursor$5 = this.cursor = ((this.limit - v_6) | 0); + if (! (! (this.I_p2 <= cursor$5) ? false : true)) { + this.cursor = ((this.limit - v_5) | 0); + break lab4; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + break; + case 2: + v_7 = ((this.limit - this.cursor) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "e")) { + break lab6; + } + break lab3; + } + this.cursor = ((this.limit - v_7) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_8 = ((this.limit - this.cursor) | 0); + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + this.ket = this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + v_9 = ((this.limit - this.cursor) | 0); + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "er")) { + break lab9; + } + break lab8; + } + this.cursor = ((this.limit - v_9) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "en")) { + this.cursor = ((this.limit - v_8) | 0); + break lab7; + } + } + this.bra = cursor$6 = this.cursor; + if (! (! (this.I_p1 <= cursor$6) ? false : true)) { + this.cursor = ((this.limit - v_8) | 0); + break lab7; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_10 = ((this.limit - this.cursor) | 0); + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, GermanStemmer.a_3, 2); + if (among_var === 0) { + this.cursor = ((this.limit - v_10) | 0); + break lab10; + } + this.bra = cursor$7 = this.cursor; + if (! (! (this.I_p2 <= cursor$7) ? false : true)) { + this.cursor = ((this.limit - v_10) | 0); + break lab10; + } + switch (among_var) { + case 0: + this.cursor = ((this.limit - v_10) | 0); + break lab10; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + } + break; + } + } + this.cursor = ((this.limit - v_4) | 0); + return true; +}; + +GermanStemmer.prototype.r_standard_suffix = GermanStemmer.prototype.r_standard_suffix$; + +function GermanStemmer$r_standard_suffix$LGermanStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_10; + var lab0; + var lab1; + var lab2; + var c; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var lab10; + var cursor$0; + var cursor$1; + var limit$0; + var cursor$2; + var cursor$3; + var cursor$4; + var cursor$5; + var cursor$6; + var cursor$7; + var limit$1; + var cursor$8; + v_1 = (($this.limit - $this.cursor) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, GermanStemmer.a_1, 7); + if (among_var === 0) { + break lab0; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p1 <= cursor$0) ? false : true)) { + break lab0; + } + switch (among_var) { + case 0: + break lab0; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_2 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "s")) { + $this.cursor = (($this.limit - v_2) | 0); + break lab1; + } + $this.bra = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 3, "nis")) { + $this.cursor = (($this.limit - v_2) | 0); + break lab1; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + break; + case 3: + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, GermanStemmer.g_s_ending, 98, 116)) { + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + } + cursor$2 = $this.cursor = (((limit$0 = $this.limit) - v_1) | 0); + v_3 = ((limit$0 - cursor$2) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, GermanStemmer.a_2, 4); + if (among_var === 0) { + break lab2; + } + $this.bra = cursor$1 = $this.cursor; + if (! (! ($this.I_p1 <= cursor$1) ? false : true)) { + break lab2; + } + switch (among_var) { + case 0: + break lab2; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, GermanStemmer.g_st_ending, 98, 116)) { + break lab2; + } + c = ($this.cursor - 3 | 0); + if ($this.limit_backward > c || c > $this.limit) { + break lab2; + } + $this.cursor = c; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + } + cursor$8 = $this.cursor = (((limit$1 = $this.limit) - v_3) | 0); + v_4 = ((limit$1 - cursor$8) | 0); + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, GermanStemmer.a_4, 8); + if (among_var === 0) { + break lab3; + } + $this.bra = cursor$3 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$3) ? false : true)) { + break lab3; + } + switch (among_var) { + case 0: + break lab3; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_5 = (($this.limit - $this.cursor) | 0); + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "ig")) { + $this.cursor = (($this.limit - v_5) | 0); + break lab4; + } + $this.bra = cursor$4 = $this.cursor; + v_6 = (($this.limit - cursor$4) | 0); + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "e")) { + break lab5; + } + $this.cursor = (($this.limit - v_5) | 0); + break lab4; + } + cursor$5 = $this.cursor = (($this.limit - v_6) | 0); + if (! (! ($this.I_p2 <= cursor$5) ? false : true)) { + $this.cursor = (($this.limit - v_5) | 0); + break lab4; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + break; + case 2: + v_7 = (($this.limit - $this.cursor) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "e")) { + break lab6; + } + break lab3; + } + $this.cursor = (($this.limit - v_7) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_8 = (($this.limit - $this.cursor) | 0); + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + $this.ket = $this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + v_9 = (($this.limit - $this.cursor) | 0); + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "er")) { + break lab9; + } + break lab8; + } + $this.cursor = (($this.limit - v_9) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "en")) { + $this.cursor = (($this.limit - v_8) | 0); + break lab7; + } + } + $this.bra = cursor$6 = $this.cursor; + if (! (! ($this.I_p1 <= cursor$6) ? false : true)) { + $this.cursor = (($this.limit - v_8) | 0); + break lab7; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_10 = (($this.limit - $this.cursor) | 0); + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, GermanStemmer.a_3, 2); + if (among_var === 0) { + $this.cursor = (($this.limit - v_10) | 0); + break lab10; + } + $this.bra = cursor$7 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$7) ? false : true)) { + $this.cursor = (($this.limit - v_10) | 0); + break lab10; + } + switch (among_var) { + case 0: + $this.cursor = (($this.limit - v_10) | 0); + break lab10; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + } + break; + } + } + $this.cursor = (($this.limit - v_4) | 0); + return true; +}; + +GermanStemmer.r_standard_suffix$LGermanStemmer$ = GermanStemmer$r_standard_suffix$LGermanStemmer$; + +GermanStemmer.prototype.stem$ = function () { + var v_1; + var v_2; + var v_4; + var lab0; + var lab1; + var lab2; + var lab3; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! GermanStemmer$r_prelude$LGermanStemmer$(this)) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! GermanStemmer$r_mark_regions$LGermanStemmer$(this)) { + break lab1; + } + } + cursor$1 = this.cursor = v_2; + this.limit_backward = cursor$1; + this.cursor = this.limit; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! GermanStemmer$r_standard_suffix$LGermanStemmer$(this)) { + break lab2; + } + } + cursor$2 = this.cursor = this.limit_backward; + v_4 = cursor$2; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! GermanStemmer$r_postlude$LGermanStemmer$(this)) { + break lab3; + } + } + this.cursor = v_4; + return true; +}; + +GermanStemmer.prototype.stem = GermanStemmer.prototype.stem$; + +GermanStemmer.prototype.equals$X = function (o) { + return o instanceof GermanStemmer; +}; + +GermanStemmer.prototype.equals = GermanStemmer.prototype.equals$X; + +function GermanStemmer$equals$LGermanStemmer$X($this, o) { + return o instanceof GermanStemmer; +}; + +GermanStemmer.equals$LGermanStemmer$X = GermanStemmer$equals$LGermanStemmer$X; + +GermanStemmer.prototype.hashCode$ = function () { + var classname; + var hash; + var i; + var char; + classname = "GermanStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +GermanStemmer.prototype.hashCode = GermanStemmer.prototype.hashCode$; + +function GermanStemmer$hashCode$LGermanStemmer$($this) { + var classname; + var hash; + var i; + var char; + classname = "GermanStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +GermanStemmer.hashCode$LGermanStemmer$ = GermanStemmer$hashCode$LGermanStemmer$; + +GermanStemmer.serialVersionUID = 1; +$__jsx_lazy_init(GermanStemmer, "methodObject", function () { + return new GermanStemmer(); +}); +$__jsx_lazy_init(GermanStemmer, "a_0", function () { + return [ new Among("", -1, 6), new Among("U", 0, 2), new Among("Y", 0, 1), new Among("\u00E4", 0, 3), new Among("\u00F6", 0, 4), new Among("\u00FC", 0, 5) ]; +}); +$__jsx_lazy_init(GermanStemmer, "a_1", function () { + return [ new Among("e", -1, 2), new Among("em", -1, 1), new Among("en", -1, 2), new Among("ern", -1, 1), new Among("er", -1, 1), new Among("s", -1, 3), new Among("es", 5, 2) ]; +}); +$__jsx_lazy_init(GermanStemmer, "a_2", function () { + return [ new Among("en", -1, 1), new Among("er", -1, 1), new Among("st", -1, 2), new Among("est", 2, 1) ]; +}); +$__jsx_lazy_init(GermanStemmer, "a_3", function () { + return [ new Among("ig", -1, 1), new Among("lich", -1, 1) ]; +}); +$__jsx_lazy_init(GermanStemmer, "a_4", function () { + return [ new Among("end", -1, 1), new Among("ig", -1, 2), new Among("ung", -1, 1), new Among("lich", -1, 3), new Among("isch", -1, 2), new Among("ik", -1, 2), new Among("heit", -1, 3), new Among("keit", -1, 4) ]; +}); +GermanStemmer.g_v = [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32, 8 ]; +GermanStemmer.g_s_ending = [ 117, 30, 5 ]; +GermanStemmer.g_st_ending = [ 117, 30, 4 ]; + +var $__jsx_classMap = { + "src/among.jsx": { + Among: Among, + Among$SII: Among, + Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$0 + }, + "src/stemmer.jsx": { + Stemmer: Stemmer, + Stemmer$: Stemmer + }, + "src/base-stemmer.jsx": { + BaseStemmer: BaseStemmer, + BaseStemmer$: BaseStemmer + }, + "src/german-stemmer.jsx": { + GermanStemmer: GermanStemmer, + GermanStemmer$: GermanStemmer + } +}; + + +})(JSX); + +var Among = JSX.require("src/among.jsx").Among; +var Among$SII = JSX.require("src/among.jsx").Among$SII; +var Stemmer = JSX.require("src/stemmer.jsx").Stemmer; +var BaseStemmer = JSX.require("src/base-stemmer.jsx").BaseStemmer; +var GermanStemmer = JSX.require("src/german-stemmer.jsx").GermanStemmer; diff --git a/sphinx/sphinx/search/non-minified-js/hungarian-stemmer.js b/sphinx/sphinx/search/non-minified-js/hungarian-stemmer.js new file mode 100644 index 0000000..c9a6347 --- /dev/null +++ b/sphinx/sphinx/search/non-minified-js/hungarian-stemmer.js @@ -0,0 +1,2893 @@ +// generatedy by JSX compiler 0.9.89 (2014-05-20 06:01:03 +0900; 8e8c6105f36f3dfe440ea026a3c93a3444977102) +var JSX = {}; +(function (JSX) { +/** + * extends the class + */ +function $__jsx_extend(derivations, base) { + var ctor = function () {}; + ctor.prototype = base.prototype; + var proto = new ctor(); + for (var i in derivations) { + derivations[i].prototype = proto; + } +} + +/** + * copies the implementations from source interface to target + */ +function $__jsx_merge_interface(target, source) { + for (var k in source.prototype) + if (source.prototype.hasOwnProperty(k)) + target.prototype[k] = source.prototype[k]; +} + +/** + * defers the initialization of the property + */ +function $__jsx_lazy_init(obj, prop, func) { + function reset(obj, prop, value) { + delete obj[prop]; + obj[prop] = value; + return value; + } + + Object.defineProperty(obj, prop, { + get: function () { + return reset(obj, prop, func()); + }, + set: function (v) { + reset(obj, prop, v); + }, + enumerable: true, + configurable: true + }); +} + +var $__jsx_imul = Math.imul; +if (typeof $__jsx_imul === "undefined") { + $__jsx_imul = function (a, b) { + var ah = (a >>> 16) & 0xffff; + var al = a & 0xffff; + var bh = (b >>> 16) & 0xffff; + var bl = b & 0xffff; + return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0); + }; +} + +/** + * fused int-ops with side-effects + */ +function $__jsx_ipadd(o, p, r) { + return o[p] = (o[p] + r) | 0; +} +function $__jsx_ipsub(o, p, r) { + return o[p] = (o[p] - r) | 0; +} +function $__jsx_ipmul(o, p, r) { + return o[p] = $__jsx_imul(o[p], r); +} +function $__jsx_ipdiv(o, p, r) { + return o[p] = (o[p] / r) | 0; +} +function $__jsx_ipmod(o, p, r) { + return o[p] = (o[p] % r) | 0; +} +function $__jsx_ippostinc(o, p) { + var v = o[p]; + o[p] = (v + 1) | 0; + return v; +} +function $__jsx_ippostdec(o, p) { + var v = o[p]; + o[p] = (v - 1) | 0; + return v; +} + +/** + * non-inlined version of Array#each + */ +function $__jsx_forEach(o, f) { + var l = o.length; + for (var i = 0; i < l; ++i) + f(o[i]); +} + +/* + * global functions, renamed to avoid conflict with local variable names + */ +var $__jsx_parseInt = parseInt; +var $__jsx_parseFloat = parseFloat; +function $__jsx_isNaN(n) { return n !== n; } +var $__jsx_isFinite = isFinite; + +var $__jsx_encodeURIComponent = encodeURIComponent; +var $__jsx_decodeURIComponent = decodeURIComponent; +var $__jsx_encodeURI = encodeURI; +var $__jsx_decodeURI = decodeURI; + +var $__jsx_ObjectToString = Object.prototype.toString; +var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty; + +/* + * profiler object, initialized afterwards + */ +function $__jsx_profiler() { +} + +/* + * public interface to JSX code + */ +JSX.require = function (path) { + var m = $__jsx_classMap[path]; + return m !== undefined ? m : null; +}; + +JSX.profilerIsRunning = function () { + return $__jsx_profiler.getResults != null; +}; + +JSX.getProfileResults = function () { + return ($__jsx_profiler.getResults || function () { return {}; })(); +}; + +JSX.postProfileResults = function (url, cb) { + if ($__jsx_profiler.postResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.postResults(url, cb); +}; + +JSX.resetProfileResults = function () { + if ($__jsx_profiler.resetResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.resetResults(); +}; +JSX.DEBUG = false; +var GeneratorFunction$0 = +(function () { + try { + return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); + } catch (e) { + return function GeneratorFunction () {}; + } +})(); +var __jsx_generator_object$0 = +(function () { + function __jsx_generator_object() { + this.__next = 0; + this.__loop = null; + this.__seed = null; + this.__value = undefined; + this.__status = 0; // SUSPENDED: 0, ACTIVE: 1, DEAD: 2 + } + + __jsx_generator_object.prototype.next = function (seed) { + switch (this.__status) { + case 0: + this.__status = 1; + this.__seed = seed; + + // go next! + this.__loop(this.__next); + + var done = false; + if (this.__next != -1) { + this.__status = 0; + } else { + this.__status = 2; + done = true; + } + return { value: this.__value, done: done }; + case 1: + throw new Error("Generator is already running"); + case 2: + throw new Error("Generator is already finished"); + default: + throw new Error("Unexpected generator internal state"); + } + }; + + return __jsx_generator_object; +}()); +function Among(s, substring_i, result) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = null; + this.instance = null; +}; + +function Among$0(s, substring_i, result, method, instance) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = method; + this.instance = instance; +}; + +$__jsx_extend([Among, Among$0], Object); +function Stemmer() { +}; + +$__jsx_extend([Stemmer], Object); +function BaseStemmer() { + var current$0; + var cursor$0; + var limit$0; + this.cache = ({ }); + current$0 = this.current = ""; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +$__jsx_extend([BaseStemmer], Stemmer); +BaseStemmer.prototype.setCurrent$S = function (value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = this.current = value; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + + +function BaseStemmer$setCurrent$LBaseStemmer$S($this, value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = $this.current = value; + cursor$0 = $this.cursor = 0; + limit$0 = $this.limit = current$0.length; + $this.limit_backward = 0; + $this.bra = cursor$0; + $this.ket = limit$0; +}; + +BaseStemmer.setCurrent$LBaseStemmer$S = BaseStemmer$setCurrent$LBaseStemmer$S; + +BaseStemmer.prototype.getCurrent$ = function () { + return this.current; +}; + + +function BaseStemmer$getCurrent$LBaseStemmer$($this) { + return $this.current; +}; + +BaseStemmer.getCurrent$LBaseStemmer$ = BaseStemmer$getCurrent$LBaseStemmer$; + +BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; +}; + + +function BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$($this, other) { + $this.current = other.current; + $this.cursor = other.cursor; + $this.limit = other.limit; + $this.limit_backward = other.limit_backward; + $this.bra = other.bra; + $this.ket = other.ket; +}; + +BaseStemmer.copy_from$LBaseStemmer$LBaseStemmer$ = BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$; + +BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping$LBaseStemmer$AIII = BaseStemmer$in_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping_b$LBaseStemmer$AIII = BaseStemmer$in_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping$LBaseStemmer$AIII = BaseStemmer$out_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping_b$LBaseStemmer$AIII = BaseStemmer$out_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range$LBaseStemmer$II = BaseStemmer$in_range$LBaseStemmer$II; + +BaseStemmer.prototype.in_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range_b$LBaseStemmer$II = BaseStemmer$in_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.out_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range$LBaseStemmer$II = BaseStemmer$out_range$LBaseStemmer$II; + +BaseStemmer.prototype.out_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range_b$LBaseStemmer$II = BaseStemmer$out_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.eq_s$IS = function (s_size, s) { + var cursor$0; + if (((this.limit - this.cursor) | 0) < s_size) { + return false; + } + if (this.current.slice(cursor$0 = this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + this.cursor = (this.cursor + s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.limit - $this.cursor) | 0) < s_size) { + return false; + } + if ($this.current.slice(cursor$0 = $this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + $this.cursor = ($this.cursor + s_size) | 0; + return true; +}; + +BaseStemmer.eq_s$LBaseStemmer$IS = BaseStemmer$eq_s$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) { + var cursor$0; + if (((this.cursor - this.limit_backward) | 0) < s_size) { + return false; + } + if (this.current.slice((((cursor$0 = this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + this.cursor = (this.cursor - s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.cursor - $this.limit_backward) | 0) < s_size) { + return false; + } + if ($this.current.slice((((cursor$0 = $this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + $this.cursor = ($this.cursor - s_size) | 0; + return true; +}; + +BaseStemmer.eq_s_b$LBaseStemmer$IS = BaseStemmer$eq_s_b$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_v$S = function (s) { + return BaseStemmer$eq_s$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v$LBaseStemmer$S = BaseStemmer$eq_v$LBaseStemmer$S; + +BaseStemmer.prototype.eq_v_b$S = function (s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v_b$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v_b$LBaseStemmer$S = BaseStemmer$eq_v_b$LBaseStemmer$S; + +BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + l = this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + l = $this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + $this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among$LBaseStemmer$ALAmong$I = BaseStemmer$find_among$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + lb = this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(this); + this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + lb = $this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method($this); + $this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among_b$LBaseStemmer$ALAmong$I = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit = (this.limit + adjustment) | 0; + if (this.cursor >= c_ket) { + this.cursor = (this.cursor + adjustment) | 0; + } else if (this.cursor > c_bra) { + this.cursor = c_bra; + } + return (adjustment | 0); +}; + + +function BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + $this.current = $this.current.slice(0, c_bra) + s + $this.current.slice(c_ket); + $this.limit = ($this.limit + adjustment) | 0; + if ($this.cursor >= c_ket) { + $this.cursor = ($this.cursor + adjustment) | 0; + } else if ($this.cursor > c_bra) { + $this.cursor = c_bra; + } + return (adjustment | 0); +}; + +BaseStemmer.replace_s$LBaseStemmer$IIS = BaseStemmer$replace_s$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_check$ = function () { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true); +}; + + +function BaseStemmer$slice_check$LBaseStemmer$($this) { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true); +}; + +BaseStemmer.slice_check$LBaseStemmer$ = BaseStemmer$slice_check$LBaseStemmer$; + +BaseStemmer.prototype.slice_from$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS(this, this.bra, this.ket, s); + result = true; + } + return result; +}; + + +function BaseStemmer$slice_from$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS($this, $this.bra, $this.ket, s); + result = true; + } + return result; +}; + +BaseStemmer.slice_from$LBaseStemmer$S = BaseStemmer$slice_from$LBaseStemmer$S; + +BaseStemmer.prototype.slice_del$ = function () { + return BaseStemmer$slice_from$LBaseStemmer$S(this, ""); +}; + + +function BaseStemmer$slice_del$LBaseStemmer$($this) { + return BaseStemmer$slice_from$LBaseStemmer$S($this, ""); +}; + +BaseStemmer.slice_del$LBaseStemmer$ = BaseStemmer$slice_del$LBaseStemmer$; + +BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS(this, c_bra, c_ket, s); + if (c_bra <= this.bra) { + this.bra = (this.bra + adjustment) | 0; + } + if (c_bra <= this.ket) { + this.ket = (this.ket + adjustment) | 0; + } +}; + + +function BaseStemmer$insert$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s); + if (c_bra <= $this.bra) { + $this.bra = ($this.bra + adjustment) | 0; + } + if (c_bra <= $this.ket) { + $this.ket = ($this.ket + adjustment) | 0; + } +}; + +BaseStemmer.insert$LBaseStemmer$IIS = BaseStemmer$insert$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_to$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + result = this.current.slice(this.bra, this.ket); + } + return result; +}; + + +function BaseStemmer$slice_to$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + result = $this.current.slice($this.bra, $this.ket); + } + return result; +}; + +BaseStemmer.slice_to$LBaseStemmer$S = BaseStemmer$slice_to$LBaseStemmer$S; + +BaseStemmer.prototype.assign_to$S = function (s) { + return this.current.slice(0, this.limit); +}; + + +function BaseStemmer$assign_to$LBaseStemmer$S($this, s) { + return $this.current.slice(0, $this.limit); +}; + +BaseStemmer.assign_to$LBaseStemmer$S = BaseStemmer$assign_to$LBaseStemmer$S; + +BaseStemmer.prototype.stem$ = function () { + return false; +}; + + +BaseStemmer.prototype.stemWord$S = function (word) { + var result; + var current$0; + var cursor$0; + var limit$0; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + return result; +}; + +BaseStemmer.prototype.stemWord = BaseStemmer.prototype.stemWord$S; + +BaseStemmer.prototype.stemWords$AS = function (words) { + var results; + var i; + var word; + var result; + var current$0; + var cursor$0; + var limit$0; + results = [ ]; + for (i = 0; i < words.length; i++) { + word = words[i]; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + results.push(result); + } + return results; +}; + +BaseStemmer.prototype.stemWords = BaseStemmer.prototype.stemWords$AS; + +function HungarianStemmer() { + BaseStemmer.call(this); + this.I_p1 = 0; +}; + +$__jsx_extend([HungarianStemmer], BaseStemmer); +HungarianStemmer.prototype.copy_from$LHungarianStemmer$ = function (other) { + this.I_p1 = other.I_p1; + BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$(this, other); +}; + +HungarianStemmer.prototype.copy_from = HungarianStemmer.prototype.copy_from$LHungarianStemmer$; + +HungarianStemmer.prototype.r_mark_regions$ = function () { + var v_1; + var v_2; + var v_3; + var lab0; + var lab1; + var lab3; + var lab4; + var lab5; + var lab7; + var cursor$0; + var cursor$1; + var $__jsx_postinc_t; + this.I_p1 = this.limit; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, HungarianStemmer.g_v, 97, 252)) { + break lab1; + } + golab2: + while (true) { + v_2 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, HungarianStemmer.g_v, 97, 252)) { + break lab3; + } + this.cursor = v_2; + break golab2; + } + cursor$0 = this.cursor = v_2; + if (cursor$0 >= this.limit) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_3 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (BaseStemmer$find_among$LBaseStemmer$ALAmong$I(this, HungarianStemmer.a_0, 8) === 0) { + break lab5; + } + break lab4; + } + cursor$1 = this.cursor = v_3; + if (cursor$1 >= this.limit) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p1 = this.cursor; + break lab0; + } + this.cursor = v_1; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, HungarianStemmer.g_v, 97, 252)) { + return false; + } + golab6: + while (true) { + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, HungarianStemmer.g_v, 97, 252)) { + break lab7; + } + break golab6; + } + if (this.cursor >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p1 = this.cursor; + } + return true; +}; + +HungarianStemmer.prototype.r_mark_regions = HungarianStemmer.prototype.r_mark_regions$; + +function HungarianStemmer$r_mark_regions$LHungarianStemmer$($this) { + var v_1; + var v_2; + var v_3; + var lab0; + var lab1; + var lab3; + var lab4; + var lab5; + var lab7; + var cursor$0; + var cursor$1; + var $__jsx_postinc_t; + $this.I_p1 = $this.limit; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, HungarianStemmer.g_v, 97, 252)) { + break lab1; + } + golab2: + while (true) { + v_2 = $this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, HungarianStemmer.g_v, 97, 252)) { + break lab3; + } + $this.cursor = v_2; + break golab2; + } + cursor$0 = $this.cursor = v_2; + if (cursor$0 >= $this.limit) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_3 = $this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, HungarianStemmer.a_0, 8) === 0) { + break lab5; + } + break lab4; + } + cursor$1 = $this.cursor = v_3; + if (cursor$1 >= $this.limit) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p1 = $this.cursor; + break lab0; + } + $this.cursor = v_1; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, HungarianStemmer.g_v, 97, 252)) { + return false; + } + golab6: + while (true) { + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, HungarianStemmer.g_v, 97, 252)) { + break lab7; + } + break golab6; + } + if ($this.cursor >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p1 = $this.cursor; + } + return true; +}; + +HungarianStemmer.r_mark_regions$LHungarianStemmer$ = HungarianStemmer$r_mark_regions$LHungarianStemmer$; + +HungarianStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +HungarianStemmer.prototype.r_R1 = HungarianStemmer.prototype.r_R1$; + +function HungarianStemmer$r_R1$LHungarianStemmer$($this) { + return (! ($this.I_p1 <= $this.cursor) ? false : true); +}; + +HungarianStemmer.r_R1$LHungarianStemmer$ = HungarianStemmer$r_R1$LHungarianStemmer$; + +HungarianStemmer.prototype.r_v_ending$ = function () { + var among_var; + var cursor$0; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, HungarianStemmer.a_1, 2); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + } + return true; +}; + +HungarianStemmer.prototype.r_v_ending = HungarianStemmer.prototype.r_v_ending$; + +function HungarianStemmer$r_v_ending$LHungarianStemmer$($this) { + var among_var; + var cursor$0; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, HungarianStemmer.a_1, 2); + if (among_var === 0) { + return false; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + } + return true; +}; + +HungarianStemmer.r_v_ending$LHungarianStemmer$ = HungarianStemmer$r_v_ending$LHungarianStemmer$; + +HungarianStemmer.prototype.r_double$ = function () { + var v_1; + v_1 = ((this.limit - this.cursor) | 0); + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, HungarianStemmer.a_2, 23) === 0) { + return false; + } + this.cursor = ((this.limit - v_1) | 0); + return true; +}; + +HungarianStemmer.prototype.r_double = HungarianStemmer.prototype.r_double$; + +function HungarianStemmer$r_double$LHungarianStemmer$($this) { + var v_1; + v_1 = (($this.limit - $this.cursor) | 0); + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, HungarianStemmer.a_2, 23) === 0) { + return false; + } + $this.cursor = (($this.limit - v_1) | 0); + return true; +}; + +HungarianStemmer.r_double$LHungarianStemmer$ = HungarianStemmer$r_double$LHungarianStemmer$; + +HungarianStemmer.prototype.r_undouble$ = function () { + var c; + var cursor$0; + var cursor$1; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + this.ket = cursor$0 = this.cursor; + c = (cursor$0 - 1 | 0); + if (this.limit_backward > c || c > this.limit) { + return false; + } + cursor$1 = this.cursor = c; + this.bra = cursor$1; + return (! BaseStemmer$slice_from$LBaseStemmer$S(this, "") ? false : true); +}; + +HungarianStemmer.prototype.r_undouble = HungarianStemmer.prototype.r_undouble$; + +function HungarianStemmer$r_undouble$LHungarianStemmer$($this) { + var c; + var cursor$0; + var cursor$1; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + $this.ket = cursor$0 = $this.cursor; + c = (cursor$0 - 1 | 0); + if ($this.limit_backward > c || c > $this.limit) { + return false; + } + cursor$1 = $this.cursor = c; + $this.bra = cursor$1; + return (! BaseStemmer$slice_from$LBaseStemmer$S($this, "") ? false : true); +}; + +HungarianStemmer.r_undouble$LHungarianStemmer$ = HungarianStemmer$r_undouble$LHungarianStemmer$; + +HungarianStemmer.prototype.r_instrum$ = function () { + var among_var; + var cursor$0; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, HungarianStemmer.a_3, 2); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! HungarianStemmer$r_double$LHungarianStemmer$(this)) { + return false; + } + break; + case 2: + if (! HungarianStemmer$r_double$LHungarianStemmer$(this)) { + return false; + } + break; + } + return (! BaseStemmer$slice_from$LBaseStemmer$S(this, "") ? false : ! HungarianStemmer$r_undouble$LHungarianStemmer$(this) ? false : true); +}; + +HungarianStemmer.prototype.r_instrum = HungarianStemmer.prototype.r_instrum$; + +function HungarianStemmer$r_instrum$LHungarianStemmer$($this) { + var among_var; + var cursor$0; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, HungarianStemmer.a_3, 2); + if (among_var === 0) { + return false; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! HungarianStemmer$r_double$LHungarianStemmer$($this)) { + return false; + } + break; + case 2: + if (! HungarianStemmer$r_double$LHungarianStemmer$($this)) { + return false; + } + break; + } + return (! BaseStemmer$slice_from$LBaseStemmer$S($this, "") ? false : ! HungarianStemmer$r_undouble$LHungarianStemmer$($this) ? false : true); +}; + +HungarianStemmer.r_instrum$LHungarianStemmer$ = HungarianStemmer$r_instrum$LHungarianStemmer$; + +HungarianStemmer.prototype.r_case$ = function () { + var cursor$0; + this.ket = this.cursor; + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, HungarianStemmer.a_4, 44) === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + return (! (! (this.I_p1 <= cursor$0) ? false : true) ? false : ! BaseStemmer$slice_from$LBaseStemmer$S(this, "") ? false : ! HungarianStemmer$r_v_ending$LHungarianStemmer$(this) ? false : true); +}; + +HungarianStemmer.prototype.r_case = HungarianStemmer.prototype.r_case$; + +function HungarianStemmer$r_case$LHungarianStemmer$($this) { + var cursor$0; + $this.ket = $this.cursor; + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, HungarianStemmer.a_4, 44) === 0) { + return false; + } + $this.bra = cursor$0 = $this.cursor; + return (! (! ($this.I_p1 <= cursor$0) ? false : true) ? false : ! BaseStemmer$slice_from$LBaseStemmer$S($this, "") ? false : ! HungarianStemmer$r_v_ending$LHungarianStemmer$($this) ? false : true); +}; + +HungarianStemmer.r_case$LHungarianStemmer$ = HungarianStemmer$r_case$LHungarianStemmer$; + +HungarianStemmer.prototype.r_case_special$ = function () { + var among_var; + var cursor$0; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, HungarianStemmer.a_5, 3); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + } + return true; +}; + +HungarianStemmer.prototype.r_case_special = HungarianStemmer.prototype.r_case_special$; + +function HungarianStemmer$r_case_special$LHungarianStemmer$($this) { + var among_var; + var cursor$0; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, HungarianStemmer.a_5, 3); + if (among_var === 0) { + return false; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + } + return true; +}; + +HungarianStemmer.r_case_special$LHungarianStemmer$ = HungarianStemmer$r_case_special$LHungarianStemmer$; + +HungarianStemmer.prototype.r_case_other$ = function () { + var among_var; + var cursor$0; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, HungarianStemmer.a_6, 6); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + } + return true; +}; + +HungarianStemmer.prototype.r_case_other = HungarianStemmer.prototype.r_case_other$; + +function HungarianStemmer$r_case_other$LHungarianStemmer$($this) { + var among_var; + var cursor$0; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, HungarianStemmer.a_6, 6); + if (among_var === 0) { + return false; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + } + return true; +}; + +HungarianStemmer.r_case_other$LHungarianStemmer$ = HungarianStemmer$r_case_other$LHungarianStemmer$; + +HungarianStemmer.prototype.r_factive$ = function () { + var among_var; + var cursor$0; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, HungarianStemmer.a_7, 2); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! HungarianStemmer$r_double$LHungarianStemmer$(this)) { + return false; + } + break; + case 2: + if (! HungarianStemmer$r_double$LHungarianStemmer$(this)) { + return false; + } + break; + } + return (! BaseStemmer$slice_from$LBaseStemmer$S(this, "") ? false : ! HungarianStemmer$r_undouble$LHungarianStemmer$(this) ? false : true); +}; + +HungarianStemmer.prototype.r_factive = HungarianStemmer.prototype.r_factive$; + +function HungarianStemmer$r_factive$LHungarianStemmer$($this) { + var among_var; + var cursor$0; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, HungarianStemmer.a_7, 2); + if (among_var === 0) { + return false; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! HungarianStemmer$r_double$LHungarianStemmer$($this)) { + return false; + } + break; + case 2: + if (! HungarianStemmer$r_double$LHungarianStemmer$($this)) { + return false; + } + break; + } + return (! BaseStemmer$slice_from$LBaseStemmer$S($this, "") ? false : ! HungarianStemmer$r_undouble$LHungarianStemmer$($this) ? false : true); +}; + +HungarianStemmer.r_factive$LHungarianStemmer$ = HungarianStemmer$r_factive$LHungarianStemmer$; + +HungarianStemmer.prototype.r_plural$ = function () { + var among_var; + var cursor$0; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, HungarianStemmer.a_8, 7); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 6: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 7: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +HungarianStemmer.prototype.r_plural = HungarianStemmer.prototype.r_plural$; + +function HungarianStemmer$r_plural$LHungarianStemmer$($this) { + var among_var; + var cursor$0; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, HungarianStemmer.a_8, 7); + if (among_var === 0) { + return false; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 6: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 7: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +HungarianStemmer.r_plural$LHungarianStemmer$ = HungarianStemmer$r_plural$LHungarianStemmer$; + +HungarianStemmer.prototype.r_owned$ = function () { + var among_var; + var cursor$0; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, HungarianStemmer.a_9, 12); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + case 6: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 7: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 8: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + case 9: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +HungarianStemmer.prototype.r_owned = HungarianStemmer.prototype.r_owned$; + +function HungarianStemmer$r_owned$LHungarianStemmer$($this) { + var among_var; + var cursor$0; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, HungarianStemmer.a_9, 12); + if (among_var === 0) { + return false; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + case 6: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 7: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 8: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + case 9: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +HungarianStemmer.r_owned$LHungarianStemmer$ = HungarianStemmer$r_owned$LHungarianStemmer$; + +HungarianStemmer.prototype.r_sing_owner$ = function () { + var among_var; + var cursor$0; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, HungarianStemmer.a_10, 31); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 6: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + case 7: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 8: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 9: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 10: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 11: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + case 12: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 13: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 14: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 15: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + case 16: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 17: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 18: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 19: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 20: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + } + return true; +}; + +HungarianStemmer.prototype.r_sing_owner = HungarianStemmer.prototype.r_sing_owner$; + +function HungarianStemmer$r_sing_owner$LHungarianStemmer$($this) { + var among_var; + var cursor$0; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, HungarianStemmer.a_10, 31); + if (among_var === 0) { + return false; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 6: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + case 7: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 8: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 9: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 10: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 11: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + case 12: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 13: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 14: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 15: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + case 16: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 17: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 18: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 19: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 20: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + } + return true; +}; + +HungarianStemmer.r_sing_owner$LHungarianStemmer$ = HungarianStemmer$r_sing_owner$LHungarianStemmer$; + +HungarianStemmer.prototype.r_plur_owner$ = function () { + var among_var; + var cursor$0; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, HungarianStemmer.a_11, 42); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 6: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 7: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 8: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + case 9: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 10: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 11: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 12: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 13: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + case 14: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 15: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 16: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 17: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 18: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 19: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + case 20: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 21: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 22: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 23: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + case 24: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 25: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 26: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 27: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 28: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + case 29: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +HungarianStemmer.prototype.r_plur_owner = HungarianStemmer.prototype.r_plur_owner$; + +function HungarianStemmer$r_plur_owner$LHungarianStemmer$($this) { + var among_var; + var cursor$0; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, HungarianStemmer.a_11, 42); + if (among_var === 0) { + return false; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 6: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 7: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 8: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + case 9: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 10: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 11: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 12: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 13: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + case 14: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 15: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 16: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 17: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 18: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 19: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + case 20: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 21: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 22: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 23: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + case 24: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 25: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 26: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 27: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 28: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + case 29: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +HungarianStemmer.r_plur_owner$LHungarianStemmer$ = HungarianStemmer$r_plur_owner$LHungarianStemmer$; + +HungarianStemmer.prototype.stem$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var cursor$0; + var limit$0; + var cursor$1; + var limit$1; + var cursor$2; + var limit$2; + var cursor$3; + var limit$3; + var cursor$4; + var limit$4; + var cursor$5; + var limit$5; + var cursor$6; + var limit$6; + var cursor$7; + var limit$7; + var cursor$8; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! HungarianStemmer$r_mark_regions$LHungarianStemmer$(this)) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = ((limit$0 - cursor$1) | 0); + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! HungarianStemmer$r_instrum$LHungarianStemmer$(this)) { + break lab1; + } + } + cursor$2 = this.cursor = (((limit$1 = this.limit) - v_2) | 0); + v_3 = ((limit$1 - cursor$2) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! HungarianStemmer$r_case$LHungarianStemmer$(this)) { + break lab2; + } + } + cursor$3 = this.cursor = (((limit$2 = this.limit) - v_3) | 0); + v_4 = ((limit$2 - cursor$3) | 0); + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! HungarianStemmer$r_case_special$LHungarianStemmer$(this)) { + break lab3; + } + } + cursor$4 = this.cursor = (((limit$3 = this.limit) - v_4) | 0); + v_5 = ((limit$3 - cursor$4) | 0); + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! HungarianStemmer$r_case_other$LHungarianStemmer$(this)) { + break lab4; + } + } + cursor$5 = this.cursor = (((limit$4 = this.limit) - v_5) | 0); + v_6 = ((limit$4 - cursor$5) | 0); + lab5 = true; +lab5: + while (lab5 === true) { + lab5 = false; + if (! HungarianStemmer$r_factive$LHungarianStemmer$(this)) { + break lab5; + } + } + cursor$6 = this.cursor = (((limit$5 = this.limit) - v_6) | 0); + v_7 = ((limit$5 - cursor$6) | 0); + lab6 = true; +lab6: + while (lab6 === true) { + lab6 = false; + if (! HungarianStemmer$r_owned$LHungarianStemmer$(this)) { + break lab6; + } + } + cursor$7 = this.cursor = (((limit$6 = this.limit) - v_7) | 0); + v_8 = ((limit$6 - cursor$7) | 0); + lab7 = true; +lab7: + while (lab7 === true) { + lab7 = false; + if (! HungarianStemmer$r_sing_owner$LHungarianStemmer$(this)) { + break lab7; + } + } + cursor$8 = this.cursor = (((limit$7 = this.limit) - v_8) | 0); + v_9 = ((limit$7 - cursor$8) | 0); + lab8 = true; +lab8: + while (lab8 === true) { + lab8 = false; + if (! HungarianStemmer$r_plur_owner$LHungarianStemmer$(this)) { + break lab8; + } + } + this.cursor = ((this.limit - v_9) | 0); + lab9 = true; +lab9: + while (lab9 === true) { + lab9 = false; + if (! HungarianStemmer$r_plural$LHungarianStemmer$(this)) { + break lab9; + } + } + this.cursor = this.limit_backward; + return true; +}; + +HungarianStemmer.prototype.stem = HungarianStemmer.prototype.stem$; + +HungarianStemmer.prototype.equals$X = function (o) { + return o instanceof HungarianStemmer; +}; + +HungarianStemmer.prototype.equals = HungarianStemmer.prototype.equals$X; + +function HungarianStemmer$equals$LHungarianStemmer$X($this, o) { + return o instanceof HungarianStemmer; +}; + +HungarianStemmer.equals$LHungarianStemmer$X = HungarianStemmer$equals$LHungarianStemmer$X; + +HungarianStemmer.prototype.hashCode$ = function () { + var classname; + var hash; + var i; + var char; + classname = "HungarianStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +HungarianStemmer.prototype.hashCode = HungarianStemmer.prototype.hashCode$; + +function HungarianStemmer$hashCode$LHungarianStemmer$($this) { + var classname; + var hash; + var i; + var char; + classname = "HungarianStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +HungarianStemmer.hashCode$LHungarianStemmer$ = HungarianStemmer$hashCode$LHungarianStemmer$; + +HungarianStemmer.serialVersionUID = 1; +$__jsx_lazy_init(HungarianStemmer, "methodObject", function () { + return new HungarianStemmer(); +}); +$__jsx_lazy_init(HungarianStemmer, "a_0", function () { + return [ new Among("cs", -1, -1), new Among("dzs", -1, -1), new Among("gy", -1, -1), new Among("ly", -1, -1), new Among("ny", -1, -1), new Among("sz", -1, -1), new Among("ty", -1, -1), new Among("zs", -1, -1) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_1", function () { + return [ new Among("\u00E1", -1, 1), new Among("\u00E9", -1, 2) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_2", function () { + return [ new Among("bb", -1, -1), new Among("cc", -1, -1), new Among("dd", -1, -1), new Among("ff", -1, -1), new Among("gg", -1, -1), new Among("jj", -1, -1), new Among("kk", -1, -1), new Among("ll", -1, -1), new Among("mm", -1, -1), new Among("nn", -1, -1), new Among("pp", -1, -1), new Among("rr", -1, -1), new Among("ccs", -1, -1), new Among("ss", -1, -1), new Among("zzs", -1, -1), new Among("tt", -1, -1), new Among("vv", -1, -1), new Among("ggy", -1, -1), new Among("lly", -1, -1), new Among("nny", -1, -1), new Among("tty", -1, -1), new Among("ssz", -1, -1), new Among("zz", -1, -1) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_3", function () { + return [ new Among("al", -1, 1), new Among("el", -1, 2) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_4", function () { + return [ new Among("ba", -1, -1), new Among("ra", -1, -1), new Among("be", -1, -1), new Among("re", -1, -1), new Among("ig", -1, -1), new Among("nak", -1, -1), new Among("nek", -1, -1), new Among("val", -1, -1), new Among("vel", -1, -1), new Among("ul", -1, -1), new Among("n\u00E1l", -1, -1), new Among("n\u00E9l", -1, -1), new Among("b\u00F3l", -1, -1), new Among("r\u00F3l", -1, -1), new Among("t\u00F3l", -1, -1), new Among("b\u00F5l", -1, -1), new Among("r\u00F5l", -1, -1), new Among("t\u00F5l", -1, -1), new Among("\u00FCl", -1, -1), new Among("n", -1, -1), new Among("an", 19, -1), new Among("ban", 20, -1), new Among("en", 19, -1), new Among("ben", 22, -1), new Among("k\u00E9ppen", 22, -1), new Among("on", 19, -1), new Among("\u00F6n", 19, -1), new Among("k\u00E9pp", -1, -1), new Among("kor", -1, -1), new Among("t", -1, -1), new Among("at", 29, -1), new Among("et", 29, -1), new Among("k\u00E9nt", 29, -1), new Among("ank\u00E9nt", 32, -1), new Among("enk\u00E9nt", 32, -1), new Among("onk\u00E9nt", 32, -1), new Among("ot", 29, -1), new Among("\u00E9rt", 29, -1), new Among("\u00F6t", 29, -1), new Among("hez", -1, -1), new Among("hoz", -1, -1), new Among("h\u00F6z", -1, -1), new Among("v\u00E1", -1, -1), new Among("v\u00E9", -1, -1) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_5", function () { + return [ new Among("\u00E1n", -1, 2), new Among("\u00E9n", -1, 1), new Among("\u00E1nk\u00E9nt", -1, 3) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_6", function () { + return [ new Among("stul", -1, 2), new Among("astul", 0, 1), new Among("\u00E1stul", 0, 3), new Among("st\u00FCl", -1, 2), new Among("est\u00FCl", 3, 1), new Among("\u00E9st\u00FCl", 3, 4) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_7", function () { + return [ new Among("\u00E1", -1, 1), new Among("\u00E9", -1, 2) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_8", function () { + return [ new Among("k", -1, 7), new Among("ak", 0, 4), new Among("ek", 0, 6), new Among("ok", 0, 5), new Among("\u00E1k", 0, 1), new Among("\u00E9k", 0, 2), new Among("\u00F6k", 0, 3) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_9", function () { + return [ new Among("\u00E9i", -1, 7), new Among("\u00E1\u00E9i", 0, 6), new Among("\u00E9\u00E9i", 0, 5), new Among("\u00E9", -1, 9), new Among("k\u00E9", 3, 4), new Among("ak\u00E9", 4, 1), new Among("ek\u00E9", 4, 1), new Among("ok\u00E9", 4, 1), new Among("\u00E1k\u00E9", 4, 3), new Among("\u00E9k\u00E9", 4, 2), new Among("\u00F6k\u00E9", 4, 1), new Among("\u00E9\u00E9", 3, 8) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_10", function () { + return [ new Among("a", -1, 18), new Among("ja", 0, 17), new Among("d", -1, 16), new Among("ad", 2, 13), new Among("ed", 2, 13), new Among("od", 2, 13), new Among("\u00E1d", 2, 14), new Among("\u00E9d", 2, 15), new Among("\u00F6d", 2, 13), new Among("e", -1, 18), new Among("je", 9, 17), new Among("nk", -1, 4), new Among("unk", 11, 1), new Among("\u00E1nk", 11, 2), new Among("\u00E9nk", 11, 3), new Among("\u00FCnk", 11, 1), new Among("uk", -1, 8), new Among("juk", 16, 7), new Among("\u00E1juk", 17, 5), new Among("\u00FCk", -1, 8), new Among("j\u00FCk", 19, 7), new Among("\u00E9j\u00FCk", 20, 6), new Among("m", -1, 12), new Among("am", 22, 9), new Among("em", 22, 9), new Among("om", 22, 9), new Among("\u00E1m", 22, 10), new Among("\u00E9m", 22, 11), new Among("o", -1, 18), new Among("\u00E1", -1, 19), new Among("\u00E9", -1, 20) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_11", function () { + return [ new Among("id", -1, 10), new Among("aid", 0, 9), new Among("jaid", 1, 6), new Among("eid", 0, 9), new Among("jeid", 3, 6), new Among("\u00E1id", 0, 7), new Among("\u00E9id", 0, 8), new Among("i", -1, 15), new Among("ai", 7, 14), new Among("jai", 8, 11), new Among("ei", 7, 14), new Among("jei", 10, 11), new Among("\u00E1i", 7, 12), new Among("\u00E9i", 7, 13), new Among("itek", -1, 24), new Among("eitek", 14, 21), new Among("jeitek", 15, 20), new Among("\u00E9itek", 14, 23), new Among("ik", -1, 29), new Among("aik", 18, 26), new Among("jaik", 19, 25), new Among("eik", 18, 26), new Among("jeik", 21, 25), new Among("\u00E1ik", 18, 27), new Among("\u00E9ik", 18, 28), new Among("ink", -1, 20), new Among("aink", 25, 17), new Among("jaink", 26, 16), new Among("eink", 25, 17), new Among("jeink", 28, 16), new Among("\u00E1ink", 25, 18), new Among("\u00E9ink", 25, 19), new Among("aitok", -1, 21), new Among("jaitok", 32, 20), new Among("\u00E1itok", -1, 22), new Among("im", -1, 5), new Among("aim", 35, 4), new Among("jaim", 36, 1), new Among("eim", 35, 4), new Among("jeim", 38, 1), new Among("\u00E1im", 35, 2), new Among("\u00E9im", 35, 3) ]; +}); +HungarianStemmer.g_v = [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 52, 14 ]; + +var $__jsx_classMap = { + "src/among.jsx": { + Among: Among, + Among$SII: Among, + Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$0 + }, + "src/stemmer.jsx": { + Stemmer: Stemmer, + Stemmer$: Stemmer + }, + "src/base-stemmer.jsx": { + BaseStemmer: BaseStemmer, + BaseStemmer$: BaseStemmer + }, + "src/hungarian-stemmer.jsx": { + HungarianStemmer: HungarianStemmer, + HungarianStemmer$: HungarianStemmer + } +}; + + +})(JSX); + +var Among = JSX.require("src/among.jsx").Among; +var Among$SII = JSX.require("src/among.jsx").Among$SII; +var Stemmer = JSX.require("src/stemmer.jsx").Stemmer; +var BaseStemmer = JSX.require("src/base-stemmer.jsx").BaseStemmer; +var HungarianStemmer = JSX.require("src/hungarian-stemmer.jsx").HungarianStemmer; diff --git a/sphinx/sphinx/search/non-minified-js/italian-stemmer.js b/sphinx/sphinx/search/non-minified-js/italian-stemmer.js new file mode 100644 index 0000000..ca16ff2 --- /dev/null +++ b/sphinx/sphinx/search/non-minified-js/italian-stemmer.js @@ -0,0 +1,2978 @@ +// generatedy by JSX compiler 0.9.89 (2014-05-20 06:01:03 +0900; 8e8c6105f36f3dfe440ea026a3c93a3444977102) +var JSX = {}; +(function (JSX) { +/** + * extends the class + */ +function $__jsx_extend(derivations, base) { + var ctor = function () {}; + ctor.prototype = base.prototype; + var proto = new ctor(); + for (var i in derivations) { + derivations[i].prototype = proto; + } +} + +/** + * copies the implementations from source interface to target + */ +function $__jsx_merge_interface(target, source) { + for (var k in source.prototype) + if (source.prototype.hasOwnProperty(k)) + target.prototype[k] = source.prototype[k]; +} + +/** + * defers the initialization of the property + */ +function $__jsx_lazy_init(obj, prop, func) { + function reset(obj, prop, value) { + delete obj[prop]; + obj[prop] = value; + return value; + } + + Object.defineProperty(obj, prop, { + get: function () { + return reset(obj, prop, func()); + }, + set: function (v) { + reset(obj, prop, v); + }, + enumerable: true, + configurable: true + }); +} + +var $__jsx_imul = Math.imul; +if (typeof $__jsx_imul === "undefined") { + $__jsx_imul = function (a, b) { + var ah = (a >>> 16) & 0xffff; + var al = a & 0xffff; + var bh = (b >>> 16) & 0xffff; + var bl = b & 0xffff; + return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0); + }; +} + +/** + * fused int-ops with side-effects + */ +function $__jsx_ipadd(o, p, r) { + return o[p] = (o[p] + r) | 0; +} +function $__jsx_ipsub(o, p, r) { + return o[p] = (o[p] - r) | 0; +} +function $__jsx_ipmul(o, p, r) { + return o[p] = $__jsx_imul(o[p], r); +} +function $__jsx_ipdiv(o, p, r) { + return o[p] = (o[p] / r) | 0; +} +function $__jsx_ipmod(o, p, r) { + return o[p] = (o[p] % r) | 0; +} +function $__jsx_ippostinc(o, p) { + var v = o[p]; + o[p] = (v + 1) | 0; + return v; +} +function $__jsx_ippostdec(o, p) { + var v = o[p]; + o[p] = (v - 1) | 0; + return v; +} + +/** + * non-inlined version of Array#each + */ +function $__jsx_forEach(o, f) { + var l = o.length; + for (var i = 0; i < l; ++i) + f(o[i]); +} + +/* + * global functions, renamed to avoid conflict with local variable names + */ +var $__jsx_parseInt = parseInt; +var $__jsx_parseFloat = parseFloat; +function $__jsx_isNaN(n) { return n !== n; } +var $__jsx_isFinite = isFinite; + +var $__jsx_encodeURIComponent = encodeURIComponent; +var $__jsx_decodeURIComponent = decodeURIComponent; +var $__jsx_encodeURI = encodeURI; +var $__jsx_decodeURI = decodeURI; + +var $__jsx_ObjectToString = Object.prototype.toString; +var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty; + +/* + * profiler object, initialized afterwards + */ +function $__jsx_profiler() { +} + +/* + * public interface to JSX code + */ +JSX.require = function (path) { + var m = $__jsx_classMap[path]; + return m !== undefined ? m : null; +}; + +JSX.profilerIsRunning = function () { + return $__jsx_profiler.getResults != null; +}; + +JSX.getProfileResults = function () { + return ($__jsx_profiler.getResults || function () { return {}; })(); +}; + +JSX.postProfileResults = function (url, cb) { + if ($__jsx_profiler.postResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.postResults(url, cb); +}; + +JSX.resetProfileResults = function () { + if ($__jsx_profiler.resetResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.resetResults(); +}; +JSX.DEBUG = false; +var GeneratorFunction$0 = +(function () { + try { + return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); + } catch (e) { + return function GeneratorFunction () {}; + } +})(); +var __jsx_generator_object$0 = +(function () { + function __jsx_generator_object() { + this.__next = 0; + this.__loop = null; + this.__seed = null; + this.__value = undefined; + this.__status = 0; // SUSPENDED: 0, ACTIVE: 1, DEAD: 2 + } + + __jsx_generator_object.prototype.next = function (seed) { + switch (this.__status) { + case 0: + this.__status = 1; + this.__seed = seed; + + // go next! + this.__loop(this.__next); + + var done = false; + if (this.__next != -1) { + this.__status = 0; + } else { + this.__status = 2; + done = true; + } + return { value: this.__value, done: done }; + case 1: + throw new Error("Generator is already running"); + case 2: + throw new Error("Generator is already finished"); + default: + throw new Error("Unexpected generator internal state"); + } + }; + + return __jsx_generator_object; +}()); +function Among(s, substring_i, result) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = null; + this.instance = null; +}; + +function Among$0(s, substring_i, result, method, instance) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = method; + this.instance = instance; +}; + +$__jsx_extend([Among, Among$0], Object); +function Stemmer() { +}; + +$__jsx_extend([Stemmer], Object); +function BaseStemmer() { + var current$0; + var cursor$0; + var limit$0; + this.cache = ({ }); + current$0 = this.current = ""; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +$__jsx_extend([BaseStemmer], Stemmer); +BaseStemmer.prototype.setCurrent$S = function (value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = this.current = value; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + + +function BaseStemmer$setCurrent$LBaseStemmer$S($this, value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = $this.current = value; + cursor$0 = $this.cursor = 0; + limit$0 = $this.limit = current$0.length; + $this.limit_backward = 0; + $this.bra = cursor$0; + $this.ket = limit$0; +}; + +BaseStemmer.setCurrent$LBaseStemmer$S = BaseStemmer$setCurrent$LBaseStemmer$S; + +BaseStemmer.prototype.getCurrent$ = function () { + return this.current; +}; + + +function BaseStemmer$getCurrent$LBaseStemmer$($this) { + return $this.current; +}; + +BaseStemmer.getCurrent$LBaseStemmer$ = BaseStemmer$getCurrent$LBaseStemmer$; + +BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; +}; + + +function BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$($this, other) { + $this.current = other.current; + $this.cursor = other.cursor; + $this.limit = other.limit; + $this.limit_backward = other.limit_backward; + $this.bra = other.bra; + $this.ket = other.ket; +}; + +BaseStemmer.copy_from$LBaseStemmer$LBaseStemmer$ = BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$; + +BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping$LBaseStemmer$AIII = BaseStemmer$in_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping_b$LBaseStemmer$AIII = BaseStemmer$in_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping$LBaseStemmer$AIII = BaseStemmer$out_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping_b$LBaseStemmer$AIII = BaseStemmer$out_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range$LBaseStemmer$II = BaseStemmer$in_range$LBaseStemmer$II; + +BaseStemmer.prototype.in_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range_b$LBaseStemmer$II = BaseStemmer$in_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.out_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range$LBaseStemmer$II = BaseStemmer$out_range$LBaseStemmer$II; + +BaseStemmer.prototype.out_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range_b$LBaseStemmer$II = BaseStemmer$out_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.eq_s$IS = function (s_size, s) { + var cursor$0; + if (((this.limit - this.cursor) | 0) < s_size) { + return false; + } + if (this.current.slice(cursor$0 = this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + this.cursor = (this.cursor + s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.limit - $this.cursor) | 0) < s_size) { + return false; + } + if ($this.current.slice(cursor$0 = $this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + $this.cursor = ($this.cursor + s_size) | 0; + return true; +}; + +BaseStemmer.eq_s$LBaseStemmer$IS = BaseStemmer$eq_s$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) { + var cursor$0; + if (((this.cursor - this.limit_backward) | 0) < s_size) { + return false; + } + if (this.current.slice((((cursor$0 = this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + this.cursor = (this.cursor - s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.cursor - $this.limit_backward) | 0) < s_size) { + return false; + } + if ($this.current.slice((((cursor$0 = $this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + $this.cursor = ($this.cursor - s_size) | 0; + return true; +}; + +BaseStemmer.eq_s_b$LBaseStemmer$IS = BaseStemmer$eq_s_b$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_v$S = function (s) { + return BaseStemmer$eq_s$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v$LBaseStemmer$S = BaseStemmer$eq_v$LBaseStemmer$S; + +BaseStemmer.prototype.eq_v_b$S = function (s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v_b$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v_b$LBaseStemmer$S = BaseStemmer$eq_v_b$LBaseStemmer$S; + +BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + l = this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + l = $this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + $this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among$LBaseStemmer$ALAmong$I = BaseStemmer$find_among$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + lb = this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(this); + this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + lb = $this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method($this); + $this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among_b$LBaseStemmer$ALAmong$I = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit = (this.limit + adjustment) | 0; + if (this.cursor >= c_ket) { + this.cursor = (this.cursor + adjustment) | 0; + } else if (this.cursor > c_bra) { + this.cursor = c_bra; + } + return (adjustment | 0); +}; + + +function BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + $this.current = $this.current.slice(0, c_bra) + s + $this.current.slice(c_ket); + $this.limit = ($this.limit + adjustment) | 0; + if ($this.cursor >= c_ket) { + $this.cursor = ($this.cursor + adjustment) | 0; + } else if ($this.cursor > c_bra) { + $this.cursor = c_bra; + } + return (adjustment | 0); +}; + +BaseStemmer.replace_s$LBaseStemmer$IIS = BaseStemmer$replace_s$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_check$ = function () { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true); +}; + + +function BaseStemmer$slice_check$LBaseStemmer$($this) { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true); +}; + +BaseStemmer.slice_check$LBaseStemmer$ = BaseStemmer$slice_check$LBaseStemmer$; + +BaseStemmer.prototype.slice_from$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS(this, this.bra, this.ket, s); + result = true; + } + return result; +}; + + +function BaseStemmer$slice_from$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS($this, $this.bra, $this.ket, s); + result = true; + } + return result; +}; + +BaseStemmer.slice_from$LBaseStemmer$S = BaseStemmer$slice_from$LBaseStemmer$S; + +BaseStemmer.prototype.slice_del$ = function () { + return BaseStemmer$slice_from$LBaseStemmer$S(this, ""); +}; + + +function BaseStemmer$slice_del$LBaseStemmer$($this) { + return BaseStemmer$slice_from$LBaseStemmer$S($this, ""); +}; + +BaseStemmer.slice_del$LBaseStemmer$ = BaseStemmer$slice_del$LBaseStemmer$; + +BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS(this, c_bra, c_ket, s); + if (c_bra <= this.bra) { + this.bra = (this.bra + adjustment) | 0; + } + if (c_bra <= this.ket) { + this.ket = (this.ket + adjustment) | 0; + } +}; + + +function BaseStemmer$insert$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s); + if (c_bra <= $this.bra) { + $this.bra = ($this.bra + adjustment) | 0; + } + if (c_bra <= $this.ket) { + $this.ket = ($this.ket + adjustment) | 0; + } +}; + +BaseStemmer.insert$LBaseStemmer$IIS = BaseStemmer$insert$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_to$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + result = this.current.slice(this.bra, this.ket); + } + return result; +}; + + +function BaseStemmer$slice_to$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + result = $this.current.slice($this.bra, $this.ket); + } + return result; +}; + +BaseStemmer.slice_to$LBaseStemmer$S = BaseStemmer$slice_to$LBaseStemmer$S; + +BaseStemmer.prototype.assign_to$S = function (s) { + return this.current.slice(0, this.limit); +}; + + +function BaseStemmer$assign_to$LBaseStemmer$S($this, s) { + return $this.current.slice(0, $this.limit); +}; + +BaseStemmer.assign_to$LBaseStemmer$S = BaseStemmer$assign_to$LBaseStemmer$S; + +BaseStemmer.prototype.stem$ = function () { + return false; +}; + + +BaseStemmer.prototype.stemWord$S = function (word) { + var result; + var current$0; + var cursor$0; + var limit$0; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + return result; +}; + +BaseStemmer.prototype.stemWord = BaseStemmer.prototype.stemWord$S; + +BaseStemmer.prototype.stemWords$AS = function (words) { + var results; + var i; + var word; + var result; + var current$0; + var cursor$0; + var limit$0; + results = [ ]; + for (i = 0; i < words.length; i++) { + word = words[i]; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + results.push(result); + } + return results; +}; + +BaseStemmer.prototype.stemWords = BaseStemmer.prototype.stemWords$AS; + +function ItalianStemmer() { + BaseStemmer.call(this); + this.I_p2 = 0; + this.I_p1 = 0; + this.I_pV = 0; +}; + +$__jsx_extend([ItalianStemmer], BaseStemmer); +ItalianStemmer.prototype.copy_from$LItalianStemmer$ = function (other) { + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + this.I_pV = other.I_pV; + BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$(this, other); +}; + +ItalianStemmer.prototype.copy_from = ItalianStemmer.prototype.copy_from$LItalianStemmer$; + +ItalianStemmer.prototype.r_prelude$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var lab1; + var lab3; + var lab5; + var lab6; + var lab7; + var cursor$0; + var $__jsx_postinc_t; + v_1 = this.cursor; +replab0: + while (true) { + v_2 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I(this, ItalianStemmer.a_0, 7); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "\u00E0")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "\u00E8")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "\u00EC")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "\u00F2")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "\u00F9")) { + return false; + } + break; + case 6: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "qU")) { + return false; + } + break; + case 7: + if (this.cursor >= this.limit) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + this.cursor = v_2; + break replab0; + } + this.cursor = v_1; +replab2: + while (true) { + v_3 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + golab4: + while (true) { + v_4 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, ItalianStemmer.g_v, 97, 249)) { + break lab5; + } + this.bra = this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + v_5 = this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "u")) { + break lab7; + } + this.ket = this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, ItalianStemmer.g_v, 97, 249)) { + break lab7; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "U")) { + return false; + } + break lab6; + } + this.cursor = v_5; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "i")) { + break lab5; + } + this.ket = this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, ItalianStemmer.g_v, 97, 249)) { + break lab5; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "I")) { + return false; + } + } + this.cursor = v_4; + break golab4; + } + cursor$0 = this.cursor = v_4; + if (cursor$0 >= this.limit) { + break lab3; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + continue replab2; + } + this.cursor = v_3; + break replab2; + } + return true; +}; + +ItalianStemmer.prototype.r_prelude = ItalianStemmer.prototype.r_prelude$; + +function ItalianStemmer$r_prelude$LItalianStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var lab1; + var lab3; + var lab5; + var lab6; + var lab7; + var cursor$0; + var $__jsx_postinc_t; + v_1 = $this.cursor; +replab0: + while (true) { + v_2 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + $this.bra = $this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, ItalianStemmer.a_0, 7); + if (among_var === 0) { + break lab1; + } + $this.ket = $this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "\u00E0")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "\u00E8")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "\u00EC")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "\u00F2")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "\u00F9")) { + return false; + } + break; + case 6: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "qU")) { + return false; + } + break; + case 7: + if ($this.cursor >= $this.limit) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + $this.cursor = v_2; + break replab0; + } + $this.cursor = v_1; +replab2: + while (true) { + v_3 = $this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + golab4: + while (true) { + v_4 = $this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, ItalianStemmer.g_v, 97, 249)) { + break lab5; + } + $this.bra = $this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + v_5 = $this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "u")) { + break lab7; + } + $this.ket = $this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, ItalianStemmer.g_v, 97, 249)) { + break lab7; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "U")) { + return false; + } + break lab6; + } + $this.cursor = v_5; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "i")) { + break lab5; + } + $this.ket = $this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, ItalianStemmer.g_v, 97, 249)) { + break lab5; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "I")) { + return false; + } + } + $this.cursor = v_4; + break golab4; + } + cursor$0 = $this.cursor = v_4; + if (cursor$0 >= $this.limit) { + break lab3; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + continue replab2; + } + $this.cursor = v_3; + break replab2; + } + return true; +}; + +ItalianStemmer.r_prelude$LItalianStemmer$ = ItalianStemmer$r_prelude$LItalianStemmer$; + +ItalianStemmer.prototype.r_mark_regions$ = function () { + var v_1; + var v_2; + var v_3; + var v_6; + var v_8; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab6; + var lab8; + var lab9; + var lab10; + var lab12; + var lab13; + var lab15; + var lab17; + var lab19; + var lab21; + var limit$0; + var cursor$0; + var $__jsx_postinc_t; + this.I_pV = limit$0 = this.limit; + this.I_p1 = limit$0; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, ItalianStemmer.g_v, 97, 249)) { + break lab2; + } + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, ItalianStemmer.g_v, 97, 249)) { + break lab4; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, ItalianStemmer.g_v, 97, 249)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + break lab4; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + break lab3; + } + this.cursor = v_3; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, ItalianStemmer.g_v, 97, 249)) { + break lab2; + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, ItalianStemmer.g_v, 97, 249)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab2; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + break lab1; + } + this.cursor = v_2; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, ItalianStemmer.g_v, 97, 249)) { + break lab0; + } + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_6 = this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, ItalianStemmer.g_v, 97, 249)) { + break lab10; + } + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, ItalianStemmer.g_v, 97, 249)) { + break lab12; + } + break golab11; + } + if (this.cursor >= this.limit) { + break lab10; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + break lab9; + } + this.cursor = v_6; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, ItalianStemmer.g_v, 97, 249)) { + break lab0; + } + if (this.cursor >= this.limit) { + break lab0; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + this.I_pV = this.cursor; + } + cursor$0 = this.cursor = v_1; + v_8 = cursor$0; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + golab14: + while (true) { + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, ItalianStemmer.g_v, 97, 249)) { + break lab15; + } + break golab14; + } + if (this.cursor >= this.limit) { + break lab13; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab16: + while (true) { + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, ItalianStemmer.g_v, 97, 249)) { + break lab17; + } + break golab16; + } + if (this.cursor >= this.limit) { + break lab13; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p1 = this.cursor; + golab18: + while (true) { + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, ItalianStemmer.g_v, 97, 249)) { + break lab19; + } + break golab18; + } + if (this.cursor >= this.limit) { + break lab13; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab20: + while (true) { + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, ItalianStemmer.g_v, 97, 249)) { + break lab21; + } + break golab20; + } + if (this.cursor >= this.limit) { + break lab13; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p2 = this.cursor; + } + this.cursor = v_8; + return true; +}; + +ItalianStemmer.prototype.r_mark_regions = ItalianStemmer.prototype.r_mark_regions$; + +function ItalianStemmer$r_mark_regions$LItalianStemmer$($this) { + var v_1; + var v_2; + var v_3; + var v_6; + var v_8; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab6; + var lab8; + var lab9; + var lab10; + var lab12; + var lab13; + var lab15; + var lab17; + var lab19; + var lab21; + var limit$0; + var cursor$0; + var $__jsx_postinc_t; + $this.I_pV = limit$0 = $this.limit; + $this.I_p1 = limit$0; + $this.I_p2 = limit$0; + v_1 = $this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = $this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, ItalianStemmer.g_v, 97, 249)) { + break lab2; + } + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = $this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, ItalianStemmer.g_v, 97, 249)) { + break lab4; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, ItalianStemmer.g_v, 97, 249)) { + break lab6; + } + break golab5; + } + if ($this.cursor >= $this.limit) { + break lab4; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + break lab3; + } + $this.cursor = v_3; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, ItalianStemmer.g_v, 97, 249)) { + break lab2; + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, ItalianStemmer.g_v, 97, 249)) { + break lab8; + } + break golab7; + } + if ($this.cursor >= $this.limit) { + break lab2; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + break lab1; + } + $this.cursor = v_2; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, ItalianStemmer.g_v, 97, 249)) { + break lab0; + } + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_6 = $this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, ItalianStemmer.g_v, 97, 249)) { + break lab10; + } + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, ItalianStemmer.g_v, 97, 249)) { + break lab12; + } + break golab11; + } + if ($this.cursor >= $this.limit) { + break lab10; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + break lab9; + } + $this.cursor = v_6; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, ItalianStemmer.g_v, 97, 249)) { + break lab0; + } + if ($this.cursor >= $this.limit) { + break lab0; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + $this.I_pV = $this.cursor; + } + cursor$0 = $this.cursor = v_1; + v_8 = cursor$0; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + golab14: + while (true) { + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, ItalianStemmer.g_v, 97, 249)) { + break lab15; + } + break golab14; + } + if ($this.cursor >= $this.limit) { + break lab13; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab16: + while (true) { + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, ItalianStemmer.g_v, 97, 249)) { + break lab17; + } + break golab16; + } + if ($this.cursor >= $this.limit) { + break lab13; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p1 = $this.cursor; + golab18: + while (true) { + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, ItalianStemmer.g_v, 97, 249)) { + break lab19; + } + break golab18; + } + if ($this.cursor >= $this.limit) { + break lab13; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab20: + while (true) { + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, ItalianStemmer.g_v, 97, 249)) { + break lab21; + } + break golab20; + } + if ($this.cursor >= $this.limit) { + break lab13; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p2 = $this.cursor; + } + $this.cursor = v_8; + return true; +}; + +ItalianStemmer.r_mark_regions$LItalianStemmer$ = ItalianStemmer$r_mark_regions$LItalianStemmer$; + +ItalianStemmer.prototype.r_postlude$ = function () { + var among_var; + var v_1; + var lab1; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I(this, ItalianStemmer.a_1, 3); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "i")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "u")) { + return false; + } + break; + case 3: + if (this.cursor >= this.limit) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +ItalianStemmer.prototype.r_postlude = ItalianStemmer.prototype.r_postlude$; + +function ItalianStemmer$r_postlude$LItalianStemmer$($this) { + var among_var; + var v_1; + var lab1; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + $this.bra = $this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, ItalianStemmer.a_1, 3); + if (among_var === 0) { + break lab1; + } + $this.ket = $this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "i")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "u")) { + return false; + } + break; + case 3: + if ($this.cursor >= $this.limit) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + $this.cursor = v_1; + break replab0; + } + return true; +}; + +ItalianStemmer.r_postlude$LItalianStemmer$ = ItalianStemmer$r_postlude$LItalianStemmer$; + +ItalianStemmer.prototype.r_RV$ = function () { + return (! (this.I_pV <= this.cursor) ? false : true); +}; + +ItalianStemmer.prototype.r_RV = ItalianStemmer.prototype.r_RV$; + +function ItalianStemmer$r_RV$LItalianStemmer$($this) { + return (! ($this.I_pV <= $this.cursor) ? false : true); +}; + +ItalianStemmer.r_RV$LItalianStemmer$ = ItalianStemmer$r_RV$LItalianStemmer$; + +ItalianStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +ItalianStemmer.prototype.r_R1 = ItalianStemmer.prototype.r_R1$; + +function ItalianStemmer$r_R1$LItalianStemmer$($this) { + return (! ($this.I_p1 <= $this.cursor) ? false : true); +}; + +ItalianStemmer.r_R1$LItalianStemmer$ = ItalianStemmer$r_R1$LItalianStemmer$; + +ItalianStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +ItalianStemmer.prototype.r_R2 = ItalianStemmer.prototype.r_R2$; + +function ItalianStemmer$r_R2$LItalianStemmer$($this) { + return (! ($this.I_p2 <= $this.cursor) ? false : true); +}; + +ItalianStemmer.r_R2$LItalianStemmer$ = ItalianStemmer$r_R2$LItalianStemmer$; + +ItalianStemmer.prototype.r_attached_pronoun$ = function () { + var among_var; + this.ket = this.cursor; + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, ItalianStemmer.a_2, 37) === 0) { + return false; + } + this.bra = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, ItalianStemmer.a_3, 5); + if (among_var === 0) { + return false; + } + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + } + return true; +}; + +ItalianStemmer.prototype.r_attached_pronoun = ItalianStemmer.prototype.r_attached_pronoun$; + +function ItalianStemmer$r_attached_pronoun$LItalianStemmer$($this) { + var among_var; + $this.ket = $this.cursor; + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, ItalianStemmer.a_2, 37) === 0) { + return false; + } + $this.bra = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, ItalianStemmer.a_3, 5); + if (among_var === 0) { + return false; + } + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + } + return true; +}; + +ItalianStemmer.r_attached_pronoun$LItalianStemmer$ = ItalianStemmer$r_attached_pronoun$LItalianStemmer$; + +ItalianStemmer.prototype.r_standard_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var lab0; + var lab1; + var lab2; + var lab3; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + var cursor$4; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, ItalianStemmer.a_6, 51); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_1 = ((this.limit - this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "ic")) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "log")) { + return false; + } + break; + case 4: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "u")) { + return false; + } + break; + case 5: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ente")) { + return false; + } + break; + case 6: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 7: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_2 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, ItalianStemmer.a_4, 4); + if (among_var === 0) { + this.cursor = ((this.limit - v_2) | 0); + break lab1; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_p2 <= cursor$1) ? false : true)) { + this.cursor = ((this.limit - v_2) | 0); + break lab1; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + switch (among_var) { + case 0: + this.cursor = ((this.limit - v_2) | 0); + break lab1; + case 1: + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "at")) { + this.cursor = ((this.limit - v_2) | 0); + break lab1; + } + this.bra = cursor$2 = this.cursor; + if (! (! (this.I_p2 <= cursor$2) ? false : true)) { + this.cursor = ((this.limit - v_2) | 0); + break lab1; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + } + break; + case 8: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_3 = ((this.limit - this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, ItalianStemmer.a_5, 3); + if (among_var === 0) { + this.cursor = ((this.limit - v_3) | 0); + break lab2; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = ((this.limit - v_3) | 0); + break lab2; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = ((this.limit - v_3) | 0); + break lab2; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + } + break; + case 9: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_4 = ((this.limit - this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "at")) { + this.cursor = ((this.limit - v_4) | 0); + break lab3; + } + this.bra = cursor$3 = this.cursor; + if (! (! (this.I_p2 <= cursor$3) ? false : true)) { + this.cursor = ((this.limit - v_4) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "ic")) { + this.cursor = ((this.limit - v_4) | 0); + break lab3; + } + this.bra = cursor$4 = this.cursor; + if (! (! (this.I_p2 <= cursor$4) ? false : true)) { + this.cursor = ((this.limit - v_4) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + break; + } + return true; +}; + +ItalianStemmer.prototype.r_standard_suffix = ItalianStemmer.prototype.r_standard_suffix$; + +function ItalianStemmer$r_standard_suffix$LItalianStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var lab0; + var lab1; + var lab2; + var lab3; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + var cursor$4; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, ItalianStemmer.a_6, 51); + if (among_var === 0) { + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_1 = (($this.limit - $this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "ic")) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$0) ? false : true)) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + break; + case 3: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "log")) { + return false; + } + break; + case 4: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "u")) { + return false; + } + break; + case 5: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ente")) { + return false; + } + break; + case 6: + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 7: + if (! (! ($this.I_p1 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_2 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, ItalianStemmer.a_4, 4); + if (among_var === 0) { + $this.cursor = (($this.limit - v_2) | 0); + break lab1; + } + $this.bra = cursor$1 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$1) ? false : true)) { + $this.cursor = (($this.limit - v_2) | 0); + break lab1; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + switch (among_var) { + case 0: + $this.cursor = (($this.limit - v_2) | 0); + break lab1; + case 1: + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "at")) { + $this.cursor = (($this.limit - v_2) | 0); + break lab1; + } + $this.bra = cursor$2 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$2) ? false : true)) { + $this.cursor = (($this.limit - v_2) | 0); + break lab1; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + } + break; + case 8: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_3 = (($this.limit - $this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, ItalianStemmer.a_5, 3); + if (among_var === 0) { + $this.cursor = (($this.limit - v_3) | 0); + break lab2; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.cursor = (($this.limit - v_3) | 0); + break lab2; + case 1: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + $this.cursor = (($this.limit - v_3) | 0); + break lab2; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + } + break; + case 9: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_4 = (($this.limit - $this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "at")) { + $this.cursor = (($this.limit - v_4) | 0); + break lab3; + } + $this.bra = cursor$3 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$3) ? false : true)) { + $this.cursor = (($this.limit - v_4) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "ic")) { + $this.cursor = (($this.limit - v_4) | 0); + break lab3; + } + $this.bra = cursor$4 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$4) ? false : true)) { + $this.cursor = (($this.limit - v_4) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + break; + } + return true; +}; + +ItalianStemmer.r_standard_suffix$LItalianStemmer$ = ItalianStemmer$r_standard_suffix$LItalianStemmer$; + +ItalianStemmer.prototype.r_verb_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, ItalianStemmer.a_7, 87); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + this.limit_backward = v_2; + return true; +}; + +ItalianStemmer.prototype.r_verb_suffix = ItalianStemmer.prototype.r_verb_suffix$; + +function ItalianStemmer$r_verb_suffix$LItalianStemmer$($this) { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_pV) { + return false; + } + cursor$1 = $this.cursor = $this.I_pV; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, ItalianStemmer.a_7, 87); + if (among_var === 0) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.limit_backward = v_2; + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + $this.limit_backward = v_2; + return true; +}; + +ItalianStemmer.r_verb_suffix$LItalianStemmer$ = ItalianStemmer$r_verb_suffix$LItalianStemmer$; + +ItalianStemmer.prototype.r_vowel_suffix$ = function () { + var v_1; + var v_2; + var lab0; + var lab1; + var cursor$0; + var cursor$1; + v_1 = ((this.limit - this.cursor) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, ItalianStemmer.g_AEIO, 97, 242)) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_pV <= cursor$0) ? false : true)) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "i")) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_pV <= cursor$1) ? false : true)) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + v_2 = ((this.limit - this.cursor) | 0); + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "h")) { + this.cursor = ((this.limit - v_2) | 0); + break lab1; + } + this.bra = this.cursor; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, ItalianStemmer.g_CG, 99, 103)) { + this.cursor = ((this.limit - v_2) | 0); + break lab1; + } + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + this.cursor = ((this.limit - v_2) | 0); + break lab1; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + return true; +}; + +ItalianStemmer.prototype.r_vowel_suffix = ItalianStemmer.prototype.r_vowel_suffix$; + +function ItalianStemmer$r_vowel_suffix$LItalianStemmer$($this) { + var v_1; + var v_2; + var lab0; + var lab1; + var cursor$0; + var cursor$1; + v_1 = (($this.limit - $this.cursor) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, ItalianStemmer.g_AEIO, 97, 242)) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_pV <= cursor$0) ? false : true)) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "i")) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + $this.bra = cursor$1 = $this.cursor; + if (! (! ($this.I_pV <= cursor$1) ? false : true)) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + v_2 = (($this.limit - $this.cursor) | 0); + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "h")) { + $this.cursor = (($this.limit - v_2) | 0); + break lab1; + } + $this.bra = $this.cursor; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, ItalianStemmer.g_CG, 99, 103)) { + $this.cursor = (($this.limit - v_2) | 0); + break lab1; + } + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + $this.cursor = (($this.limit - v_2) | 0); + break lab1; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + return true; +}; + +ItalianStemmer.r_vowel_suffix$LItalianStemmer$ = ItalianStemmer$r_vowel_suffix$LItalianStemmer$; + +ItalianStemmer.prototype.stem$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_7; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var cursor$0; + var cursor$1; + var limit$0; + var cursor$2; + var limit$1; + var cursor$3; + var cursor$4; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! ItalianStemmer$r_prelude$LItalianStemmer$(this)) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! ItalianStemmer$r_mark_regions$LItalianStemmer$(this)) { + break lab1; + } + } + cursor$1 = this.cursor = v_2; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = limit$0 = this.limit; + v_3 = ((limit$0 - cursor$2) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! ItalianStemmer$r_attached_pronoun$LItalianStemmer$(this)) { + break lab2; + } + } + cursor$3 = this.cursor = (((limit$1 = this.limit) - v_3) | 0); + v_4 = ((limit$1 - cursor$3) | 0); + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_5 = ((this.limit - this.cursor) | 0); + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! ItalianStemmer$r_standard_suffix$LItalianStemmer$(this)) { + break lab5; + } + break lab4; + } + this.cursor = ((this.limit - v_5) | 0); + if (! ItalianStemmer$r_verb_suffix$LItalianStemmer$(this)) { + break lab3; + } + } + } + this.cursor = ((this.limit - v_4) | 0); + lab6 = true; +lab6: + while (lab6 === true) { + lab6 = false; + if (! ItalianStemmer$r_vowel_suffix$LItalianStemmer$(this)) { + break lab6; + } + } + cursor$4 = this.cursor = this.limit_backward; + v_7 = cursor$4; + lab7 = true; +lab7: + while (lab7 === true) { + lab7 = false; + if (! ItalianStemmer$r_postlude$LItalianStemmer$(this)) { + break lab7; + } + } + this.cursor = v_7; + return true; +}; + +ItalianStemmer.prototype.stem = ItalianStemmer.prototype.stem$; + +ItalianStemmer.prototype.equals$X = function (o) { + return o instanceof ItalianStemmer; +}; + +ItalianStemmer.prototype.equals = ItalianStemmer.prototype.equals$X; + +function ItalianStemmer$equals$LItalianStemmer$X($this, o) { + return o instanceof ItalianStemmer; +}; + +ItalianStemmer.equals$LItalianStemmer$X = ItalianStemmer$equals$LItalianStemmer$X; + +ItalianStemmer.prototype.hashCode$ = function () { + var classname; + var hash; + var i; + var char; + classname = "ItalianStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +ItalianStemmer.prototype.hashCode = ItalianStemmer.prototype.hashCode$; + +function ItalianStemmer$hashCode$LItalianStemmer$($this) { + var classname; + var hash; + var i; + var char; + classname = "ItalianStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +ItalianStemmer.hashCode$LItalianStemmer$ = ItalianStemmer$hashCode$LItalianStemmer$; + +ItalianStemmer.serialVersionUID = 1; +$__jsx_lazy_init(ItalianStemmer, "methodObject", function () { + return new ItalianStemmer(); +}); +$__jsx_lazy_init(ItalianStemmer, "a_0", function () { + return [ new Among("", -1, 7), new Among("qu", 0, 6), new Among("\u00E1", 0, 1), new Among("\u00E9", 0, 2), new Among("\u00ED", 0, 3), new Among("\u00F3", 0, 4), new Among("\u00FA", 0, 5) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_1", function () { + return [ new Among("", -1, 3), new Among("I", 0, 1), new Among("U", 0, 2) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_2", function () { + return [ new Among("la", -1, -1), new Among("cela", 0, -1), new Among("gliela", 0, -1), new Among("mela", 0, -1), new Among("tela", 0, -1), new Among("vela", 0, -1), new Among("le", -1, -1), new Among("cele", 6, -1), new Among("gliele", 6, -1), new Among("mele", 6, -1), new Among("tele", 6, -1), new Among("vele", 6, -1), new Among("ne", -1, -1), new Among("cene", 12, -1), new Among("gliene", 12, -1), new Among("mene", 12, -1), new Among("sene", 12, -1), new Among("tene", 12, -1), new Among("vene", 12, -1), new Among("ci", -1, -1), new Among("li", -1, -1), new Among("celi", 20, -1), new Among("glieli", 20, -1), new Among("meli", 20, -1), new Among("teli", 20, -1), new Among("veli", 20, -1), new Among("gli", 20, -1), new Among("mi", -1, -1), new Among("si", -1, -1), new Among("ti", -1, -1), new Among("vi", -1, -1), new Among("lo", -1, -1), new Among("celo", 31, -1), new Among("glielo", 31, -1), new Among("melo", 31, -1), new Among("telo", 31, -1), new Among("velo", 31, -1) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_3", function () { + return [ new Among("ando", -1, 1), new Among("endo", -1, 1), new Among("ar", -1, 2), new Among("er", -1, 2), new Among("ir", -1, 2) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_4", function () { + return [ new Among("ic", -1, -1), new Among("abil", -1, -1), new Among("os", -1, -1), new Among("iv", -1, 1) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_5", function () { + return [ new Among("ic", -1, 1), new Among("abil", -1, 1), new Among("iv", -1, 1) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_6", function () { + return [ new Among("ica", -1, 1), new Among("logia", -1, 3), new Among("osa", -1, 1), new Among("ista", -1, 1), new Among("iva", -1, 9), new Among("anza", -1, 1), new Among("enza", -1, 5), new Among("ice", -1, 1), new Among("atrice", 7, 1), new Among("iche", -1, 1), new Among("logie", -1, 3), new Among("abile", -1, 1), new Among("ibile", -1, 1), new Among("usione", -1, 4), new Among("azione", -1, 2), new Among("uzione", -1, 4), new Among("atore", -1, 2), new Among("ose", -1, 1), new Among("ante", -1, 1), new Among("mente", -1, 1), new Among("amente", 19, 7), new Among("iste", -1, 1), new Among("ive", -1, 9), new Among("anze", -1, 1), new Among("enze", -1, 5), new Among("ici", -1, 1), new Among("atrici", 25, 1), new Among("ichi", -1, 1), new Among("abili", -1, 1), new Among("ibili", -1, 1), new Among("ismi", -1, 1), new Among("usioni", -1, 4), new Among("azioni", -1, 2), new Among("uzioni", -1, 4), new Among("atori", -1, 2), new Among("osi", -1, 1), new Among("anti", -1, 1), new Among("amenti", -1, 6), new Among("imenti", -1, 6), new Among("isti", -1, 1), new Among("ivi", -1, 9), new Among("ico", -1, 1), new Among("ismo", -1, 1), new Among("oso", -1, 1), new Among("amento", -1, 6), new Among("imento", -1, 6), new Among("ivo", -1, 9), new Among("it\u00E0", -1, 8), new Among("ist\u00E0", -1, 1), new Among("ist\u00E8", -1, 1), new Among("ist\u00EC", -1, 1) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_7", function () { + return [ new Among("isca", -1, 1), new Among("enda", -1, 1), new Among("ata", -1, 1), new Among("ita", -1, 1), new Among("uta", -1, 1), new Among("ava", -1, 1), new Among("eva", -1, 1), new Among("iva", -1, 1), new Among("erebbe", -1, 1), new Among("irebbe", -1, 1), new Among("isce", -1, 1), new Among("ende", -1, 1), new Among("are", -1, 1), new Among("ere", -1, 1), new Among("ire", -1, 1), new Among("asse", -1, 1), new Among("ate", -1, 1), new Among("avate", 16, 1), new Among("evate", 16, 1), new Among("ivate", 16, 1), new Among("ete", -1, 1), new Among("erete", 20, 1), new Among("irete", 20, 1), new Among("ite", -1, 1), new Among("ereste", -1, 1), new Among("ireste", -1, 1), new Among("ute", -1, 1), new Among("erai", -1, 1), new Among("irai", -1, 1), new Among("isci", -1, 1), new Among("endi", -1, 1), new Among("erei", -1, 1), new Among("irei", -1, 1), new Among("assi", -1, 1), new Among("ati", -1, 1), new Among("iti", -1, 1), new Among("eresti", -1, 1), new Among("iresti", -1, 1), new Among("uti", -1, 1), new Among("avi", -1, 1), new Among("evi", -1, 1), new Among("ivi", -1, 1), new Among("isco", -1, 1), new Among("ando", -1, 1), new Among("endo", -1, 1), new Among("Yamo", -1, 1), new Among("iamo", -1, 1), new Among("avamo", -1, 1), new Among("evamo", -1, 1), new Among("ivamo", -1, 1), new Among("eremo", -1, 1), new Among("iremo", -1, 1), new Among("assimo", -1, 1), new Among("ammo", -1, 1), new Among("emmo", -1, 1), new Among("eremmo", 54, 1), new Among("iremmo", 54, 1), new Among("immo", -1, 1), new Among("ano", -1, 1), new Among("iscano", 58, 1), new Among("avano", 58, 1), new Among("evano", 58, 1), new Among("ivano", 58, 1), new Among("eranno", -1, 1), new Among("iranno", -1, 1), new Among("ono", -1, 1), new Among("iscono", 65, 1), new Among("arono", 65, 1), new Among("erono", 65, 1), new Among("irono", 65, 1), new Among("erebbero", -1, 1), new Among("irebbero", -1, 1), new Among("assero", -1, 1), new Among("essero", -1, 1), new Among("issero", -1, 1), new Among("ato", -1, 1), new Among("ito", -1, 1), new Among("uto", -1, 1), new Among("avo", -1, 1), new Among("evo", -1, 1), new Among("ivo", -1, 1), new Among("ar", -1, 1), new Among("ir", -1, 1), new Among("er\u00E0", -1, 1), new Among("ir\u00E0", -1, 1), new Among("er\u00F2", -1, 1), new Among("ir\u00F2", -1, 1) ]; +}); +ItalianStemmer.g_v = [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2, 1 ]; +ItalianStemmer.g_AEIO = [ 17, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2 ]; +ItalianStemmer.g_CG = [ 17 ]; + +var $__jsx_classMap = { + "src/among.jsx": { + Among: Among, + Among$SII: Among, + Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$0 + }, + "src/stemmer.jsx": { + Stemmer: Stemmer, + Stemmer$: Stemmer + }, + "src/base-stemmer.jsx": { + BaseStemmer: BaseStemmer, + BaseStemmer$: BaseStemmer + }, + "src/italian-stemmer.jsx": { + ItalianStemmer: ItalianStemmer, + ItalianStemmer$: ItalianStemmer + } +}; + + +})(JSX); + +var Among = JSX.require("src/among.jsx").Among; +var Among$SII = JSX.require("src/among.jsx").Among$SII; +var Stemmer = JSX.require("src/stemmer.jsx").Stemmer; +var BaseStemmer = JSX.require("src/base-stemmer.jsx").BaseStemmer; +var ItalianStemmer = JSX.require("src/italian-stemmer.jsx").ItalianStemmer; diff --git a/sphinx/sphinx/search/non-minified-js/norwegian-stemmer.js b/sphinx/sphinx/search/non-minified-js/norwegian-stemmer.js new file mode 100644 index 0000000..38b64c5 --- /dev/null +++ b/sphinx/sphinx/search/non-minified-js/norwegian-stemmer.js @@ -0,0 +1,1771 @@ +// generatedy by JSX compiler 0.9.89 (2014-05-20 06:01:03 +0900; 8e8c6105f36f3dfe440ea026a3c93a3444977102) +var JSX = {}; +(function (JSX) { +/** + * extends the class + */ +function $__jsx_extend(derivations, base) { + var ctor = function () {}; + ctor.prototype = base.prototype; + var proto = new ctor(); + for (var i in derivations) { + derivations[i].prototype = proto; + } +} + +/** + * copies the implementations from source interface to target + */ +function $__jsx_merge_interface(target, source) { + for (var k in source.prototype) + if (source.prototype.hasOwnProperty(k)) + target.prototype[k] = source.prototype[k]; +} + +/** + * defers the initialization of the property + */ +function $__jsx_lazy_init(obj, prop, func) { + function reset(obj, prop, value) { + delete obj[prop]; + obj[prop] = value; + return value; + } + + Object.defineProperty(obj, prop, { + get: function () { + return reset(obj, prop, func()); + }, + set: function (v) { + reset(obj, prop, v); + }, + enumerable: true, + configurable: true + }); +} + +var $__jsx_imul = Math.imul; +if (typeof $__jsx_imul === "undefined") { + $__jsx_imul = function (a, b) { + var ah = (a >>> 16) & 0xffff; + var al = a & 0xffff; + var bh = (b >>> 16) & 0xffff; + var bl = b & 0xffff; + return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0); + }; +} + +/** + * fused int-ops with side-effects + */ +function $__jsx_ipadd(o, p, r) { + return o[p] = (o[p] + r) | 0; +} +function $__jsx_ipsub(o, p, r) { + return o[p] = (o[p] - r) | 0; +} +function $__jsx_ipmul(o, p, r) { + return o[p] = $__jsx_imul(o[p], r); +} +function $__jsx_ipdiv(o, p, r) { + return o[p] = (o[p] / r) | 0; +} +function $__jsx_ipmod(o, p, r) { + return o[p] = (o[p] % r) | 0; +} +function $__jsx_ippostinc(o, p) { + var v = o[p]; + o[p] = (v + 1) | 0; + return v; +} +function $__jsx_ippostdec(o, p) { + var v = o[p]; + o[p] = (v - 1) | 0; + return v; +} + +/** + * non-inlined version of Array#each + */ +function $__jsx_forEach(o, f) { + var l = o.length; + for (var i = 0; i < l; ++i) + f(o[i]); +} + +/* + * global functions, renamed to avoid conflict with local variable names + */ +var $__jsx_parseInt = parseInt; +var $__jsx_parseFloat = parseFloat; +function $__jsx_isNaN(n) { return n !== n; } +var $__jsx_isFinite = isFinite; + +var $__jsx_encodeURIComponent = encodeURIComponent; +var $__jsx_decodeURIComponent = decodeURIComponent; +var $__jsx_encodeURI = encodeURI; +var $__jsx_decodeURI = decodeURI; + +var $__jsx_ObjectToString = Object.prototype.toString; +var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty; + +/* + * profiler object, initialized afterwards + */ +function $__jsx_profiler() { +} + +/* + * public interface to JSX code + */ +JSX.require = function (path) { + var m = $__jsx_classMap[path]; + return m !== undefined ? m : null; +}; + +JSX.profilerIsRunning = function () { + return $__jsx_profiler.getResults != null; +}; + +JSX.getProfileResults = function () { + return ($__jsx_profiler.getResults || function () { return {}; })(); +}; + +JSX.postProfileResults = function (url, cb) { + if ($__jsx_profiler.postResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.postResults(url, cb); +}; + +JSX.resetProfileResults = function () { + if ($__jsx_profiler.resetResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.resetResults(); +}; +JSX.DEBUG = false; +var GeneratorFunction$0 = +(function () { + try { + return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); + } catch (e) { + return function GeneratorFunction () {}; + } +})(); +var __jsx_generator_object$0 = +(function () { + function __jsx_generator_object() { + this.__next = 0; + this.__loop = null; + this.__seed = null; + this.__value = undefined; + this.__status = 0; // SUSPENDED: 0, ACTIVE: 1, DEAD: 2 + } + + __jsx_generator_object.prototype.next = function (seed) { + switch (this.__status) { + case 0: + this.__status = 1; + this.__seed = seed; + + // go next! + this.__loop(this.__next); + + var done = false; + if (this.__next != -1) { + this.__status = 0; + } else { + this.__status = 2; + done = true; + } + return { value: this.__value, done: done }; + case 1: + throw new Error("Generator is already running"); + case 2: + throw new Error("Generator is already finished"); + default: + throw new Error("Unexpected generator internal state"); + } + }; + + return __jsx_generator_object; +}()); +function Among(s, substring_i, result) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = null; + this.instance = null; +}; + +function Among$0(s, substring_i, result, method, instance) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = method; + this.instance = instance; +}; + +$__jsx_extend([Among, Among$0], Object); +function Stemmer() { +}; + +$__jsx_extend([Stemmer], Object); +function BaseStemmer() { + var current$0; + var cursor$0; + var limit$0; + this.cache = ({ }); + current$0 = this.current = ""; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +$__jsx_extend([BaseStemmer], Stemmer); +BaseStemmer.prototype.setCurrent$S = function (value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = this.current = value; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + + +function BaseStemmer$setCurrent$LBaseStemmer$S($this, value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = $this.current = value; + cursor$0 = $this.cursor = 0; + limit$0 = $this.limit = current$0.length; + $this.limit_backward = 0; + $this.bra = cursor$0; + $this.ket = limit$0; +}; + +BaseStemmer.setCurrent$LBaseStemmer$S = BaseStemmer$setCurrent$LBaseStemmer$S; + +BaseStemmer.prototype.getCurrent$ = function () { + return this.current; +}; + + +function BaseStemmer$getCurrent$LBaseStemmer$($this) { + return $this.current; +}; + +BaseStemmer.getCurrent$LBaseStemmer$ = BaseStemmer$getCurrent$LBaseStemmer$; + +BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; +}; + + +function BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$($this, other) { + $this.current = other.current; + $this.cursor = other.cursor; + $this.limit = other.limit; + $this.limit_backward = other.limit_backward; + $this.bra = other.bra; + $this.ket = other.ket; +}; + +BaseStemmer.copy_from$LBaseStemmer$LBaseStemmer$ = BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$; + +BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping$LBaseStemmer$AIII = BaseStemmer$in_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping_b$LBaseStemmer$AIII = BaseStemmer$in_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping$LBaseStemmer$AIII = BaseStemmer$out_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping_b$LBaseStemmer$AIII = BaseStemmer$out_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range$LBaseStemmer$II = BaseStemmer$in_range$LBaseStemmer$II; + +BaseStemmer.prototype.in_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range_b$LBaseStemmer$II = BaseStemmer$in_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.out_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range$LBaseStemmer$II = BaseStemmer$out_range$LBaseStemmer$II; + +BaseStemmer.prototype.out_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range_b$LBaseStemmer$II = BaseStemmer$out_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.eq_s$IS = function (s_size, s) { + var cursor$0; + if (((this.limit - this.cursor) | 0) < s_size) { + return false; + } + if (this.current.slice(cursor$0 = this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + this.cursor = (this.cursor + s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.limit - $this.cursor) | 0) < s_size) { + return false; + } + if ($this.current.slice(cursor$0 = $this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + $this.cursor = ($this.cursor + s_size) | 0; + return true; +}; + +BaseStemmer.eq_s$LBaseStemmer$IS = BaseStemmer$eq_s$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) { + var cursor$0; + if (((this.cursor - this.limit_backward) | 0) < s_size) { + return false; + } + if (this.current.slice((((cursor$0 = this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + this.cursor = (this.cursor - s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.cursor - $this.limit_backward) | 0) < s_size) { + return false; + } + if ($this.current.slice((((cursor$0 = $this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + $this.cursor = ($this.cursor - s_size) | 0; + return true; +}; + +BaseStemmer.eq_s_b$LBaseStemmer$IS = BaseStemmer$eq_s_b$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_v$S = function (s) { + return BaseStemmer$eq_s$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v$LBaseStemmer$S = BaseStemmer$eq_v$LBaseStemmer$S; + +BaseStemmer.prototype.eq_v_b$S = function (s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v_b$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v_b$LBaseStemmer$S = BaseStemmer$eq_v_b$LBaseStemmer$S; + +BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + l = this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + l = $this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + $this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among$LBaseStemmer$ALAmong$I = BaseStemmer$find_among$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + lb = this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(this); + this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + lb = $this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method($this); + $this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among_b$LBaseStemmer$ALAmong$I = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit = (this.limit + adjustment) | 0; + if (this.cursor >= c_ket) { + this.cursor = (this.cursor + adjustment) | 0; + } else if (this.cursor > c_bra) { + this.cursor = c_bra; + } + return (adjustment | 0); +}; + + +function BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + $this.current = $this.current.slice(0, c_bra) + s + $this.current.slice(c_ket); + $this.limit = ($this.limit + adjustment) | 0; + if ($this.cursor >= c_ket) { + $this.cursor = ($this.cursor + adjustment) | 0; + } else if ($this.cursor > c_bra) { + $this.cursor = c_bra; + } + return (adjustment | 0); +}; + +BaseStemmer.replace_s$LBaseStemmer$IIS = BaseStemmer$replace_s$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_check$ = function () { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true); +}; + + +function BaseStemmer$slice_check$LBaseStemmer$($this) { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true); +}; + +BaseStemmer.slice_check$LBaseStemmer$ = BaseStemmer$slice_check$LBaseStemmer$; + +BaseStemmer.prototype.slice_from$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS(this, this.bra, this.ket, s); + result = true; + } + return result; +}; + + +function BaseStemmer$slice_from$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS($this, $this.bra, $this.ket, s); + result = true; + } + return result; +}; + +BaseStemmer.slice_from$LBaseStemmer$S = BaseStemmer$slice_from$LBaseStemmer$S; + +BaseStemmer.prototype.slice_del$ = function () { + return BaseStemmer$slice_from$LBaseStemmer$S(this, ""); +}; + + +function BaseStemmer$slice_del$LBaseStemmer$($this) { + return BaseStemmer$slice_from$LBaseStemmer$S($this, ""); +}; + +BaseStemmer.slice_del$LBaseStemmer$ = BaseStemmer$slice_del$LBaseStemmer$; + +BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS(this, c_bra, c_ket, s); + if (c_bra <= this.bra) { + this.bra = (this.bra + adjustment) | 0; + } + if (c_bra <= this.ket) { + this.ket = (this.ket + adjustment) | 0; + } +}; + + +function BaseStemmer$insert$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s); + if (c_bra <= $this.bra) { + $this.bra = ($this.bra + adjustment) | 0; + } + if (c_bra <= $this.ket) { + $this.ket = ($this.ket + adjustment) | 0; + } +}; + +BaseStemmer.insert$LBaseStemmer$IIS = BaseStemmer$insert$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_to$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + result = this.current.slice(this.bra, this.ket); + } + return result; +}; + + +function BaseStemmer$slice_to$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + result = $this.current.slice($this.bra, $this.ket); + } + return result; +}; + +BaseStemmer.slice_to$LBaseStemmer$S = BaseStemmer$slice_to$LBaseStemmer$S; + +BaseStemmer.prototype.assign_to$S = function (s) { + return this.current.slice(0, this.limit); +}; + + +function BaseStemmer$assign_to$LBaseStemmer$S($this, s) { + return $this.current.slice(0, $this.limit); +}; + +BaseStemmer.assign_to$LBaseStemmer$S = BaseStemmer$assign_to$LBaseStemmer$S; + +BaseStemmer.prototype.stem$ = function () { + return false; +}; + + +BaseStemmer.prototype.stemWord$S = function (word) { + var result; + var current$0; + var cursor$0; + var limit$0; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + return result; +}; + +BaseStemmer.prototype.stemWord = BaseStemmer.prototype.stemWord$S; + +BaseStemmer.prototype.stemWords$AS = function (words) { + var results; + var i; + var word; + var result; + var current$0; + var cursor$0; + var limit$0; + results = [ ]; + for (i = 0; i < words.length; i++) { + word = words[i]; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + results.push(result); + } + return results; +}; + +BaseStemmer.prototype.stemWords = BaseStemmer.prototype.stemWords$AS; + +function NorwegianStemmer() { + BaseStemmer.call(this); + this.I_x = 0; + this.I_p1 = 0; +}; + +$__jsx_extend([NorwegianStemmer], BaseStemmer); +NorwegianStemmer.prototype.copy_from$LNorwegianStemmer$ = function (other) { + this.I_x = other.I_x; + this.I_p1 = other.I_p1; + BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$(this, other); +}; + +NorwegianStemmer.prototype.copy_from = NorwegianStemmer.prototype.copy_from$LNorwegianStemmer$; + +NorwegianStemmer.prototype.r_mark_regions$ = function () { + var v_1; + var v_2; + var c; + var lab1; + var lab3; + var lab4; + var cursor$0; + var limit$0; + var cursor$1; + var cursor$2; + var $__jsx_postinc_t; + this.I_p1 = limit$0 = this.limit; + v_1 = cursor$0 = this.cursor; + c = (cursor$0 + 3 | 0); + if (0 > c || c > limit$0) { + return false; + } + cursor$2 = this.cursor = c; + this.I_x = cursor$2; + this.cursor = v_1; +golab0: + while (true) { + v_2 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, NorwegianStemmer.g_v, 97, 248)) { + break lab1; + } + this.cursor = v_2; + break golab0; + } + cursor$1 = this.cursor = v_2; + if (cursor$1 >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, NorwegianStemmer.g_v, 97, 248)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p1 = this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! (this.I_p1 < this.I_x)) { + break lab4; + } + this.I_p1 = this.I_x; + } + return true; +}; + +NorwegianStemmer.prototype.r_mark_regions = NorwegianStemmer.prototype.r_mark_regions$; + +function NorwegianStemmer$r_mark_regions$LNorwegianStemmer$($this) { + var v_1; + var v_2; + var c; + var lab1; + var lab3; + var lab4; + var cursor$0; + var limit$0; + var cursor$1; + var cursor$2; + var $__jsx_postinc_t; + $this.I_p1 = limit$0 = $this.limit; + v_1 = cursor$0 = $this.cursor; + c = (cursor$0 + 3 | 0); + if (0 > c || c > limit$0) { + return false; + } + cursor$2 = $this.cursor = c; + $this.I_x = cursor$2; + $this.cursor = v_1; +golab0: + while (true) { + v_2 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, NorwegianStemmer.g_v, 97, 248)) { + break lab1; + } + $this.cursor = v_2; + break golab0; + } + cursor$1 = $this.cursor = v_2; + if (cursor$1 >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, NorwegianStemmer.g_v, 97, 248)) { + break lab3; + } + break golab2; + } + if ($this.cursor >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p1 = $this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! ($this.I_p1 < $this.I_x)) { + break lab4; + } + $this.I_p1 = $this.I_x; + } + return true; +}; + +NorwegianStemmer.r_mark_regions$LNorwegianStemmer$ = NorwegianStemmer$r_mark_regions$LNorwegianStemmer$; + +NorwegianStemmer.prototype.r_main_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var lab0; + var lab1; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, NorwegianStemmer.a_0, 29); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_3 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, NorwegianStemmer.g_s_ending, 98, 122)) { + break lab1; + } + break lab0; + } + this.cursor = ((this.limit - v_3) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "k")) { + return false; + } + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, NorwegianStemmer.g_v, 97, 248)) { + return false; + } + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "er")) { + return false; + } + break; + } + return true; +}; + +NorwegianStemmer.prototype.r_main_suffix = NorwegianStemmer.prototype.r_main_suffix$; + +function NorwegianStemmer$r_main_suffix$LNorwegianStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var lab0; + var lab1; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_p1) { + return false; + } + cursor$1 = $this.cursor = $this.I_p1; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, NorwegianStemmer.a_0, 29); + if (among_var === 0) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + $this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_3 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, NorwegianStemmer.g_s_ending, 98, 122)) { + break lab1; + } + break lab0; + } + $this.cursor = (($this.limit - v_3) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "k")) { + return false; + } + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, NorwegianStemmer.g_v, 97, 248)) { + return false; + } + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "er")) { + return false; + } + break; + } + return true; +}; + +NorwegianStemmer.r_main_suffix$LNorwegianStemmer$ = NorwegianStemmer$r_main_suffix$LNorwegianStemmer$; + +NorwegianStemmer.prototype.r_consonant_pair$ = function () { + var v_1; + var v_2; + var v_3; + var limit$0; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + var limit_backward$0; + var $__jsx_postinc_t; + v_1 = (((limit$0 = this.limit) - (cursor$0 = this.cursor)) | 0); + v_2 = ((limit$0 - cursor$0) | 0); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_3 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_2) | 0); + this.ket = cursor$2; + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, NorwegianStemmer.a_1, 2) === 0) { + this.limit_backward = v_3; + return false; + } + this.bra = this.cursor; + limit_backward$0 = this.limit_backward = v_3; + cursor$3 = this.cursor = ((this.limit - v_1) | 0); + if (cursor$3 <= limit_backward$0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + this.bra = this.cursor; + return (! BaseStemmer$slice_from$LBaseStemmer$S(this, "") ? false : true); +}; + +NorwegianStemmer.prototype.r_consonant_pair = NorwegianStemmer.prototype.r_consonant_pair$; + +function NorwegianStemmer$r_consonant_pair$LNorwegianStemmer$($this) { + var v_1; + var v_2; + var v_3; + var limit$0; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + var limit_backward$0; + var $__jsx_postinc_t; + v_1 = (((limit$0 = $this.limit) - (cursor$0 = $this.cursor)) | 0); + v_2 = ((limit$0 - cursor$0) | 0); + if (cursor$0 < $this.I_p1) { + return false; + } + cursor$1 = $this.cursor = $this.I_p1; + v_3 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_2) | 0); + $this.ket = cursor$2; + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, NorwegianStemmer.a_1, 2) === 0) { + $this.limit_backward = v_3; + return false; + } + $this.bra = $this.cursor; + limit_backward$0 = $this.limit_backward = v_3; + cursor$3 = $this.cursor = (($this.limit - v_1) | 0); + if (cursor$3 <= limit_backward$0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + $this.bra = $this.cursor; + return (! BaseStemmer$slice_from$LBaseStemmer$S($this, "") ? false : true); +}; + +NorwegianStemmer.r_consonant_pair$LNorwegianStemmer$ = NorwegianStemmer$r_consonant_pair$LNorwegianStemmer$; + +NorwegianStemmer.prototype.r_other_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, NorwegianStemmer.a_2, 11); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +NorwegianStemmer.prototype.r_other_suffix = NorwegianStemmer.prototype.r_other_suffix$; + +function NorwegianStemmer$r_other_suffix$LNorwegianStemmer$($this) { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_p1) { + return false; + } + cursor$1 = $this.cursor = $this.I_p1; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, NorwegianStemmer.a_2, 11); + if (among_var === 0) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + $this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +NorwegianStemmer.r_other_suffix$LNorwegianStemmer$ = NorwegianStemmer$r_other_suffix$LNorwegianStemmer$; + +NorwegianStemmer.prototype.stem$ = function () { + var v_1; + var v_2; + var v_3; + var lab0; + var lab1; + var lab2; + var lab3; + var cursor$0; + var limit$0; + var cursor$1; + var limit$1; + var cursor$2; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! NorwegianStemmer$r_mark_regions$LNorwegianStemmer$(this)) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = ((limit$0 - cursor$1) | 0); + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! NorwegianStemmer$r_main_suffix$LNorwegianStemmer$(this)) { + break lab1; + } + } + cursor$2 = this.cursor = (((limit$1 = this.limit) - v_2) | 0); + v_3 = ((limit$1 - cursor$2) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! NorwegianStemmer$r_consonant_pair$LNorwegianStemmer$(this)) { + break lab2; + } + } + this.cursor = ((this.limit - v_3) | 0); + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! NorwegianStemmer$r_other_suffix$LNorwegianStemmer$(this)) { + break lab3; + } + } + this.cursor = this.limit_backward; + return true; +}; + +NorwegianStemmer.prototype.stem = NorwegianStemmer.prototype.stem$; + +NorwegianStemmer.prototype.equals$X = function (o) { + return o instanceof NorwegianStemmer; +}; + +NorwegianStemmer.prototype.equals = NorwegianStemmer.prototype.equals$X; + +function NorwegianStemmer$equals$LNorwegianStemmer$X($this, o) { + return o instanceof NorwegianStemmer; +}; + +NorwegianStemmer.equals$LNorwegianStemmer$X = NorwegianStemmer$equals$LNorwegianStemmer$X; + +NorwegianStemmer.prototype.hashCode$ = function () { + var classname; + var hash; + var i; + var char; + classname = "NorwegianStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +NorwegianStemmer.prototype.hashCode = NorwegianStemmer.prototype.hashCode$; + +function NorwegianStemmer$hashCode$LNorwegianStemmer$($this) { + var classname; + var hash; + var i; + var char; + classname = "NorwegianStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +NorwegianStemmer.hashCode$LNorwegianStemmer$ = NorwegianStemmer$hashCode$LNorwegianStemmer$; + +NorwegianStemmer.serialVersionUID = 1; +$__jsx_lazy_init(NorwegianStemmer, "methodObject", function () { + return new NorwegianStemmer(); +}); +$__jsx_lazy_init(NorwegianStemmer, "a_0", function () { + return [ new Among("a", -1, 1), new Among("e", -1, 1), new Among("ede", 1, 1), new Among("ande", 1, 1), new Among("ende", 1, 1), new Among("ane", 1, 1), new Among("ene", 1, 1), new Among("hetene", 6, 1), new Among("erte", 1, 3), new Among("en", -1, 1), new Among("heten", 9, 1), new Among("ar", -1, 1), new Among("er", -1, 1), new Among("heter", 12, 1), new Among("s", -1, 2), new Among("as", 14, 1), new Among("es", 14, 1), new Among("edes", 16, 1), new Among("endes", 16, 1), new Among("enes", 16, 1), new Among("hetenes", 19, 1), new Among("ens", 14, 1), new Among("hetens", 21, 1), new Among("ers", 14, 1), new Among("ets", 14, 1), new Among("et", -1, 1), new Among("het", 25, 1), new Among("ert", -1, 3), new Among("ast", -1, 1) ]; +}); +$__jsx_lazy_init(NorwegianStemmer, "a_1", function () { + return [ new Among("dt", -1, -1), new Among("vt", -1, -1) ]; +}); +$__jsx_lazy_init(NorwegianStemmer, "a_2", function () { + return [ new Among("leg", -1, 1), new Among("eleg", 0, 1), new Among("ig", -1, 1), new Among("eig", 2, 1), new Among("lig", 2, 1), new Among("elig", 4, 1), new Among("els", -1, 1), new Among("lov", -1, 1), new Among("elov", 7, 1), new Among("slov", 7, 1), new Among("hetslov", 9, 1) ]; +}); +NorwegianStemmer.g_v = [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 ]; +NorwegianStemmer.g_s_ending = [ 119, 125, 149, 1 ]; + +var $__jsx_classMap = { + "src/among.jsx": { + Among: Among, + Among$SII: Among, + Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$0 + }, + "src/stemmer.jsx": { + Stemmer: Stemmer, + Stemmer$: Stemmer + }, + "src/base-stemmer.jsx": { + BaseStemmer: BaseStemmer, + BaseStemmer$: BaseStemmer + }, + "src/norwegian-stemmer.jsx": { + NorwegianStemmer: NorwegianStemmer, + NorwegianStemmer$: NorwegianStemmer + } +}; + + +})(JSX); + +var Among = JSX.require("src/among.jsx").Among; +var Among$SII = JSX.require("src/among.jsx").Among$SII; +var Stemmer = JSX.require("src/stemmer.jsx").Stemmer; +var BaseStemmer = JSX.require("src/base-stemmer.jsx").BaseStemmer; +var NorwegianStemmer = JSX.require("src/norwegian-stemmer.jsx").NorwegianStemmer; diff --git a/sphinx/sphinx/search/non-minified-js/porter-stemmer.js b/sphinx/sphinx/search/non-minified-js/porter-stemmer.js new file mode 100644 index 0000000..7a0f455 --- /dev/null +++ b/sphinx/sphinx/search/non-minified-js/porter-stemmer.js @@ -0,0 +1,2518 @@ +// generatedy by JSX compiler 0.9.89 (2014-05-20 06:01:03 +0900; 8e8c6105f36f3dfe440ea026a3c93a3444977102) +var JSX = {}; +(function (JSX) { +/** + * extends the class + */ +function $__jsx_extend(derivations, base) { + var ctor = function () {}; + ctor.prototype = base.prototype; + var proto = new ctor(); + for (var i in derivations) { + derivations[i].prototype = proto; + } +} + +/** + * copies the implementations from source interface to target + */ +function $__jsx_merge_interface(target, source) { + for (var k in source.prototype) + if (source.prototype.hasOwnProperty(k)) + target.prototype[k] = source.prototype[k]; +} + +/** + * defers the initialization of the property + */ +function $__jsx_lazy_init(obj, prop, func) { + function reset(obj, prop, value) { + delete obj[prop]; + obj[prop] = value; + return value; + } + + Object.defineProperty(obj, prop, { + get: function () { + return reset(obj, prop, func()); + }, + set: function (v) { + reset(obj, prop, v); + }, + enumerable: true, + configurable: true + }); +} + +var $__jsx_imul = Math.imul; +if (typeof $__jsx_imul === "undefined") { + $__jsx_imul = function (a, b) { + var ah = (a >>> 16) & 0xffff; + var al = a & 0xffff; + var bh = (b >>> 16) & 0xffff; + var bl = b & 0xffff; + return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0); + }; +} + +/** + * fused int-ops with side-effects + */ +function $__jsx_ipadd(o, p, r) { + return o[p] = (o[p] + r) | 0; +} +function $__jsx_ipsub(o, p, r) { + return o[p] = (o[p] - r) | 0; +} +function $__jsx_ipmul(o, p, r) { + return o[p] = $__jsx_imul(o[p], r); +} +function $__jsx_ipdiv(o, p, r) { + return o[p] = (o[p] / r) | 0; +} +function $__jsx_ipmod(o, p, r) { + return o[p] = (o[p] % r) | 0; +} +function $__jsx_ippostinc(o, p) { + var v = o[p]; + o[p] = (v + 1) | 0; + return v; +} +function $__jsx_ippostdec(o, p) { + var v = o[p]; + o[p] = (v - 1) | 0; + return v; +} + +/** + * non-inlined version of Array#each + */ +function $__jsx_forEach(o, f) { + var l = o.length; + for (var i = 0; i < l; ++i) + f(o[i]); +} + +/* + * global functions, renamed to avoid conflict with local variable names + */ +var $__jsx_parseInt = parseInt; +var $__jsx_parseFloat = parseFloat; +function $__jsx_isNaN(n) { return n !== n; } +var $__jsx_isFinite = isFinite; + +var $__jsx_encodeURIComponent = encodeURIComponent; +var $__jsx_decodeURIComponent = decodeURIComponent; +var $__jsx_encodeURI = encodeURI; +var $__jsx_decodeURI = decodeURI; + +var $__jsx_ObjectToString = Object.prototype.toString; +var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty; + +/* + * profiler object, initialized afterwards + */ +function $__jsx_profiler() { +} + +/* + * public interface to JSX code + */ +JSX.require = function (path) { + var m = $__jsx_classMap[path]; + return m !== undefined ? m : null; +}; + +JSX.profilerIsRunning = function () { + return $__jsx_profiler.getResults != null; +}; + +JSX.getProfileResults = function () { + return ($__jsx_profiler.getResults || function () { return {}; })(); +}; + +JSX.postProfileResults = function (url, cb) { + if ($__jsx_profiler.postResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.postResults(url, cb); +}; + +JSX.resetProfileResults = function () { + if ($__jsx_profiler.resetResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.resetResults(); +}; +JSX.DEBUG = false; +var GeneratorFunction$0 = +(function () { + try { + return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); + } catch (e) { + return function GeneratorFunction () {}; + } +})(); +var __jsx_generator_object$0 = +(function () { + function __jsx_generator_object() { + this.__next = 0; + this.__loop = null; + this.__seed = null; + this.__value = undefined; + this.__status = 0; // SUSPENDED: 0, ACTIVE: 1, DEAD: 2 + } + + __jsx_generator_object.prototype.next = function (seed) { + switch (this.__status) { + case 0: + this.__status = 1; + this.__seed = seed; + + // go next! + this.__loop(this.__next); + + var done = false; + if (this.__next != -1) { + this.__status = 0; + } else { + this.__status = 2; + done = true; + } + return { value: this.__value, done: done }; + case 1: + throw new Error("Generator is already running"); + case 2: + throw new Error("Generator is already finished"); + default: + throw new Error("Unexpected generator internal state"); + } + }; + + return __jsx_generator_object; +}()); +function Among(s, substring_i, result) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = null; + this.instance = null; +}; + +function Among$0(s, substring_i, result, method, instance) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = method; + this.instance = instance; +}; + +$__jsx_extend([Among, Among$0], Object); +function Stemmer() { +}; + +$__jsx_extend([Stemmer], Object); +function BaseStemmer() { + var current$0; + var cursor$0; + var limit$0; + this.cache = ({ }); + current$0 = this.current = ""; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +$__jsx_extend([BaseStemmer], Stemmer); +BaseStemmer.prototype.setCurrent$S = function (value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = this.current = value; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + + +function BaseStemmer$setCurrent$LBaseStemmer$S($this, value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = $this.current = value; + cursor$0 = $this.cursor = 0; + limit$0 = $this.limit = current$0.length; + $this.limit_backward = 0; + $this.bra = cursor$0; + $this.ket = limit$0; +}; + +BaseStemmer.setCurrent$LBaseStemmer$S = BaseStemmer$setCurrent$LBaseStemmer$S; + +BaseStemmer.prototype.getCurrent$ = function () { + return this.current; +}; + + +function BaseStemmer$getCurrent$LBaseStemmer$($this) { + return $this.current; +}; + +BaseStemmer.getCurrent$LBaseStemmer$ = BaseStemmer$getCurrent$LBaseStemmer$; + +BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; +}; + + +function BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$($this, other) { + $this.current = other.current; + $this.cursor = other.cursor; + $this.limit = other.limit; + $this.limit_backward = other.limit_backward; + $this.bra = other.bra; + $this.ket = other.ket; +}; + +BaseStemmer.copy_from$LBaseStemmer$LBaseStemmer$ = BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$; + +BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping$LBaseStemmer$AIII = BaseStemmer$in_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping_b$LBaseStemmer$AIII = BaseStemmer$in_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping$LBaseStemmer$AIII = BaseStemmer$out_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping_b$LBaseStemmer$AIII = BaseStemmer$out_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range$LBaseStemmer$II = BaseStemmer$in_range$LBaseStemmer$II; + +BaseStemmer.prototype.in_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range_b$LBaseStemmer$II = BaseStemmer$in_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.out_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range$LBaseStemmer$II = BaseStemmer$out_range$LBaseStemmer$II; + +BaseStemmer.prototype.out_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range_b$LBaseStemmer$II = BaseStemmer$out_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.eq_s$IS = function (s_size, s) { + var cursor$0; + if (((this.limit - this.cursor) | 0) < s_size) { + return false; + } + if (this.current.slice(cursor$0 = this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + this.cursor = (this.cursor + s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.limit - $this.cursor) | 0) < s_size) { + return false; + } + if ($this.current.slice(cursor$0 = $this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + $this.cursor = ($this.cursor + s_size) | 0; + return true; +}; + +BaseStemmer.eq_s$LBaseStemmer$IS = BaseStemmer$eq_s$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) { + var cursor$0; + if (((this.cursor - this.limit_backward) | 0) < s_size) { + return false; + } + if (this.current.slice((((cursor$0 = this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + this.cursor = (this.cursor - s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.cursor - $this.limit_backward) | 0) < s_size) { + return false; + } + if ($this.current.slice((((cursor$0 = $this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + $this.cursor = ($this.cursor - s_size) | 0; + return true; +}; + +BaseStemmer.eq_s_b$LBaseStemmer$IS = BaseStemmer$eq_s_b$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_v$S = function (s) { + return BaseStemmer$eq_s$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v$LBaseStemmer$S = BaseStemmer$eq_v$LBaseStemmer$S; + +BaseStemmer.prototype.eq_v_b$S = function (s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v_b$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v_b$LBaseStemmer$S = BaseStemmer$eq_v_b$LBaseStemmer$S; + +BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + l = this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + l = $this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + $this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among$LBaseStemmer$ALAmong$I = BaseStemmer$find_among$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + lb = this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(this); + this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + lb = $this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method($this); + $this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among_b$LBaseStemmer$ALAmong$I = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit = (this.limit + adjustment) | 0; + if (this.cursor >= c_ket) { + this.cursor = (this.cursor + adjustment) | 0; + } else if (this.cursor > c_bra) { + this.cursor = c_bra; + } + return (adjustment | 0); +}; + + +function BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + $this.current = $this.current.slice(0, c_bra) + s + $this.current.slice(c_ket); + $this.limit = ($this.limit + adjustment) | 0; + if ($this.cursor >= c_ket) { + $this.cursor = ($this.cursor + adjustment) | 0; + } else if ($this.cursor > c_bra) { + $this.cursor = c_bra; + } + return (adjustment | 0); +}; + +BaseStemmer.replace_s$LBaseStemmer$IIS = BaseStemmer$replace_s$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_check$ = function () { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true); +}; + + +function BaseStemmer$slice_check$LBaseStemmer$($this) { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true); +}; + +BaseStemmer.slice_check$LBaseStemmer$ = BaseStemmer$slice_check$LBaseStemmer$; + +BaseStemmer.prototype.slice_from$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS(this, this.bra, this.ket, s); + result = true; + } + return result; +}; + + +function BaseStemmer$slice_from$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS($this, $this.bra, $this.ket, s); + result = true; + } + return result; +}; + +BaseStemmer.slice_from$LBaseStemmer$S = BaseStemmer$slice_from$LBaseStemmer$S; + +BaseStemmer.prototype.slice_del$ = function () { + return BaseStemmer$slice_from$LBaseStemmer$S(this, ""); +}; + + +function BaseStemmer$slice_del$LBaseStemmer$($this) { + return BaseStemmer$slice_from$LBaseStemmer$S($this, ""); +}; + +BaseStemmer.slice_del$LBaseStemmer$ = BaseStemmer$slice_del$LBaseStemmer$; + +BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS(this, c_bra, c_ket, s); + if (c_bra <= this.bra) { + this.bra = (this.bra + adjustment) | 0; + } + if (c_bra <= this.ket) { + this.ket = (this.ket + adjustment) | 0; + } +}; + + +function BaseStemmer$insert$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s); + if (c_bra <= $this.bra) { + $this.bra = ($this.bra + adjustment) | 0; + } + if (c_bra <= $this.ket) { + $this.ket = ($this.ket + adjustment) | 0; + } +}; + +BaseStemmer.insert$LBaseStemmer$IIS = BaseStemmer$insert$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_to$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + result = this.current.slice(this.bra, this.ket); + } + return result; +}; + + +function BaseStemmer$slice_to$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + result = $this.current.slice($this.bra, $this.ket); + } + return result; +}; + +BaseStemmer.slice_to$LBaseStemmer$S = BaseStemmer$slice_to$LBaseStemmer$S; + +BaseStemmer.prototype.assign_to$S = function (s) { + return this.current.slice(0, this.limit); +}; + + +function BaseStemmer$assign_to$LBaseStemmer$S($this, s) { + return $this.current.slice(0, $this.limit); +}; + +BaseStemmer.assign_to$LBaseStemmer$S = BaseStemmer$assign_to$LBaseStemmer$S; + +BaseStemmer.prototype.stem$ = function () { + return false; +}; + + +BaseStemmer.prototype.stemWord$S = function (word) { + var result; + var current$0; + var cursor$0; + var limit$0; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + return result; +}; + +BaseStemmer.prototype.stemWord = BaseStemmer.prototype.stemWord$S; + +BaseStemmer.prototype.stemWords$AS = function (words) { + var results; + var i; + var word; + var result; + var current$0; + var cursor$0; + var limit$0; + results = [ ]; + for (i = 0; i < words.length; i++) { + word = words[i]; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + results.push(result); + } + return results; +}; + +BaseStemmer.prototype.stemWords = BaseStemmer.prototype.stemWords$AS; + +function PorterStemmer() { + BaseStemmer.call(this); + this.B_Y_found = false; + this.I_p2 = 0; + this.I_p1 = 0; +}; + +$__jsx_extend([PorterStemmer], BaseStemmer); +PorterStemmer.prototype.copy_from$LPorterStemmer$ = function (other) { + this.B_Y_found = other.B_Y_found; + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$(this, other); +}; + +PorterStemmer.prototype.copy_from = PorterStemmer.prototype.copy_from$LPorterStemmer$; + +PorterStemmer.prototype.r_shortv$ = function () { + return (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, PorterStemmer.g_v_WXY, 89, 121) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, PorterStemmer.g_v, 97, 121) ? false : ! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, PorterStemmer.g_v, 97, 121) ? false : true); +}; + +PorterStemmer.prototype.r_shortv = PorterStemmer.prototype.r_shortv$; + +function PorterStemmer$r_shortv$LPorterStemmer$($this) { + return (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, PorterStemmer.g_v_WXY, 89, 121) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, PorterStemmer.g_v, 97, 121) ? false : ! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, PorterStemmer.g_v, 97, 121) ? false : true); +}; + +PorterStemmer.r_shortv$LPorterStemmer$ = PorterStemmer$r_shortv$LPorterStemmer$; + +PorterStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +PorterStemmer.prototype.r_R1 = PorterStemmer.prototype.r_R1$; + +function PorterStemmer$r_R1$LPorterStemmer$($this) { + return (! ($this.I_p1 <= $this.cursor) ? false : true); +}; + +PorterStemmer.r_R1$LPorterStemmer$ = PorterStemmer$r_R1$LPorterStemmer$; + +PorterStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +PorterStemmer.prototype.r_R2 = PorterStemmer.prototype.r_R2$; + +function PorterStemmer$r_R2$LPorterStemmer$($this) { + return (! ($this.I_p2 <= $this.cursor) ? false : true); +}; + +PorterStemmer.r_R2$LPorterStemmer$ = PorterStemmer$r_R2$LPorterStemmer$; + +PorterStemmer.prototype.r_Step_1a$ = function () { + var among_var; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, PorterStemmer.a_0, 4); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ss")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "i")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +PorterStemmer.prototype.r_Step_1a = PorterStemmer.prototype.r_Step_1a$; + +function PorterStemmer$r_Step_1a$LPorterStemmer$($this) { + var among_var; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, PorterStemmer.a_0, 4); + if (among_var === 0) { + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ss")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "i")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +PorterStemmer.r_Step_1a$LPorterStemmer$ = PorterStemmer$r_Step_1a$LPorterStemmer$; + +PorterStemmer.prototype.r_Step_1b$ = function () { + var among_var; + var v_1; + var v_3; + var v_4; + var lab1; + var c; + var c_bra$0; + var adjustment$0; + var c_bra$1; + var adjustment$1; + var cursor$0; + var cursor$1; + var cursor$2; + var $__jsx_postinc_t; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, PorterStemmer.a_2, 3); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ee")) { + return false; + } + break; + case 2: + v_1 = ((this.limit - this.cursor) | 0); + golab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, PorterStemmer.g_v, 97, 121)) { + break lab1; + } + break golab0; + } + if (this.cursor <= this.limit_backward) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + this.cursor = ((this.limit - v_1) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_3 = ((this.limit - this.cursor) | 0); + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, PorterStemmer.a_1, 13); + if (among_var === 0) { + return false; + } + this.cursor = ((this.limit - v_3) | 0); + switch (among_var) { + case 0: + return false; + case 1: + c = cursor$0 = this.cursor; + c_bra$0 = cursor$0; + adjustment$0 = BaseStemmer$replace_s$LBaseStemmer$IIS(this, cursor$0, cursor$0, "e"); + if (cursor$0 <= this.bra) { + this.bra = (this.bra + adjustment$0) | 0; + } + if (c_bra$0 <= this.ket) { + this.ket = (this.ket + adjustment$0) | 0; + } + this.cursor = c; + break; + case 2: + this.ket = cursor$1 = this.cursor; + if (cursor$1 <= this.limit_backward) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 3: + if (this.cursor !== this.I_p1) { + return false; + } + v_4 = ((this.limit - this.cursor) | 0); + if (! PorterStemmer$r_shortv$LPorterStemmer$(this)) { + return false; + } + cursor$2 = this.cursor = ((this.limit - v_4) | 0); + c = cursor$2; + c_bra$1 = cursor$2; + adjustment$1 = BaseStemmer$replace_s$LBaseStemmer$IIS(this, cursor$2, cursor$2, "e"); + if (cursor$2 <= this.bra) { + this.bra = (this.bra + adjustment$1) | 0; + } + if (c_bra$1 <= this.ket) { + this.ket = (this.ket + adjustment$1) | 0; + } + this.cursor = c; + break; + } + break; + } + return true; +}; + +PorterStemmer.prototype.r_Step_1b = PorterStemmer.prototype.r_Step_1b$; + +function PorterStemmer$r_Step_1b$LPorterStemmer$($this) { + var among_var; + var v_1; + var v_3; + var v_4; + var lab1; + var c; + var c_bra$0; + var adjustment$0; + var c_bra$1; + var adjustment$1; + var cursor$0; + var cursor$1; + var cursor$2; + var $__jsx_postinc_t; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, PorterStemmer.a_2, 3); + if (among_var === 0) { + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! ($this.I_p1 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ee")) { + return false; + } + break; + case 2: + v_1 = (($this.limit - $this.cursor) | 0); + golab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, PorterStemmer.g_v, 97, 121)) { + break lab1; + } + break golab0; + } + if ($this.cursor <= $this.limit_backward) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + $this.cursor = (($this.limit - v_1) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_3 = (($this.limit - $this.cursor) | 0); + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, PorterStemmer.a_1, 13); + if (among_var === 0) { + return false; + } + $this.cursor = (($this.limit - v_3) | 0); + switch (among_var) { + case 0: + return false; + case 1: + c = cursor$0 = $this.cursor; + c_bra$0 = cursor$0; + adjustment$0 = BaseStemmer$replace_s$LBaseStemmer$IIS($this, cursor$0, cursor$0, "e"); + if (cursor$0 <= $this.bra) { + $this.bra = ($this.bra + adjustment$0) | 0; + } + if (c_bra$0 <= $this.ket) { + $this.ket = ($this.ket + adjustment$0) | 0; + } + $this.cursor = c; + break; + case 2: + $this.ket = cursor$1 = $this.cursor; + if (cursor$1 <= $this.limit_backward) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 3: + if ($this.cursor !== $this.I_p1) { + return false; + } + v_4 = (($this.limit - $this.cursor) | 0); + if (! PorterStemmer$r_shortv$LPorterStemmer$($this)) { + return false; + } + cursor$2 = $this.cursor = (($this.limit - v_4) | 0); + c = cursor$2; + c_bra$1 = cursor$2; + adjustment$1 = BaseStemmer$replace_s$LBaseStemmer$IIS($this, cursor$2, cursor$2, "e"); + if (cursor$2 <= $this.bra) { + $this.bra = ($this.bra + adjustment$1) | 0; + } + if (c_bra$1 <= $this.ket) { + $this.ket = ($this.ket + adjustment$1) | 0; + } + $this.cursor = c; + break; + } + break; + } + return true; +}; + +PorterStemmer.r_Step_1b$LPorterStemmer$ = PorterStemmer$r_Step_1b$LPorterStemmer$; + +PorterStemmer.prototype.r_Step_1c$ = function () { + var v_1; + var lab0; + var lab1; + var lab3; + var $__jsx_postinc_t; + this.ket = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "y")) { + break lab1; + } + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "Y")) { + return false; + } + } + this.bra = this.cursor; +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, PorterStemmer.g_v, 97, 121)) { + break lab3; + } + break golab2; + } + if (this.cursor <= this.limit_backward) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + return (! BaseStemmer$slice_from$LBaseStemmer$S(this, "i") ? false : true); +}; + +PorterStemmer.prototype.r_Step_1c = PorterStemmer.prototype.r_Step_1c$; + +function PorterStemmer$r_Step_1c$LPorterStemmer$($this) { + var v_1; + var lab0; + var lab1; + var lab3; + var $__jsx_postinc_t; + $this.ket = $this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "y")) { + break lab1; + } + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "Y")) { + return false; + } + } + $this.bra = $this.cursor; +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, PorterStemmer.g_v, 97, 121)) { + break lab3; + } + break golab2; + } + if ($this.cursor <= $this.limit_backward) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + return (! BaseStemmer$slice_from$LBaseStemmer$S($this, "i") ? false : true); +}; + +PorterStemmer.r_Step_1c$LPorterStemmer$ = PorterStemmer$r_Step_1c$LPorterStemmer$; + +PorterStemmer.prototype.r_Step_2$ = function () { + var among_var; + var cursor$0; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, PorterStemmer.a_3, 20); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "tion")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ence")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ance")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "able")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ent")) { + return false; + } + break; + case 6: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + case 7: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ize")) { + return false; + } + break; + case 8: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ate")) { + return false; + } + break; + case 9: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "al")) { + return false; + } + break; + case 10: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "al")) { + return false; + } + break; + case 11: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ful")) { + return false; + } + break; + case 12: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ous")) { + return false; + } + break; + case 13: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ive")) { + return false; + } + break; + case 14: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ble")) { + return false; + } + break; + } + return true; +}; + +PorterStemmer.prototype.r_Step_2 = PorterStemmer.prototype.r_Step_2$; + +function PorterStemmer$r_Step_2$LPorterStemmer$($this) { + var among_var; + var cursor$0; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, PorterStemmer.a_3, 20); + if (among_var === 0) { + return false; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "tion")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ence")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ance")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "able")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ent")) { + return false; + } + break; + case 6: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + case 7: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ize")) { + return false; + } + break; + case 8: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ate")) { + return false; + } + break; + case 9: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "al")) { + return false; + } + break; + case 10: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "al")) { + return false; + } + break; + case 11: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ful")) { + return false; + } + break; + case 12: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ous")) { + return false; + } + break; + case 13: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ive")) { + return false; + } + break; + case 14: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ble")) { + return false; + } + break; + } + return true; +}; + +PorterStemmer.r_Step_2$LPorterStemmer$ = PorterStemmer$r_Step_2$LPorterStemmer$; + +PorterStemmer.prototype.r_Step_3$ = function () { + var among_var; + var cursor$0; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, PorterStemmer.a_4, 7); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "al")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ic")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +PorterStemmer.prototype.r_Step_3 = PorterStemmer.prototype.r_Step_3$; + +function PorterStemmer$r_Step_3$LPorterStemmer$($this) { + var among_var; + var cursor$0; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, PorterStemmer.a_4, 7); + if (among_var === 0) { + return false; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "al")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ic")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +PorterStemmer.r_Step_3$LPorterStemmer$ = PorterStemmer$r_Step_3$LPorterStemmer$; + +PorterStemmer.prototype.r_Step_4$ = function () { + var among_var; + var v_1; + var lab0; + var lab1; + var cursor$0; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, PorterStemmer.a_5, 19); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "s")) { + break lab1; + } + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "t")) { + return false; + } + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +PorterStemmer.prototype.r_Step_4 = PorterStemmer.prototype.r_Step_4$; + +function PorterStemmer$r_Step_4$LPorterStemmer$($this) { + var among_var; + var v_1; + var lab0; + var lab1; + var cursor$0; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, PorterStemmer.a_5, 19); + if (among_var === 0) { + return false; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "s")) { + break lab1; + } + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "t")) { + return false; + } + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +PorterStemmer.r_Step_4$LPorterStemmer$ = PorterStemmer$r_Step_4$LPorterStemmer$; + +PorterStemmer.prototype.r_Step_5a$ = function () { + var v_1; + var v_2; + var lab0; + var lab1; + var lab2; + var cursor$0; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "e")) { + return false; + } + this.bra = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab1; + } + break lab0; + } + cursor$0 = this.cursor = ((this.limit - v_1) | 0); + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + v_2 = ((this.limit - this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! PorterStemmer$r_shortv$LPorterStemmer$(this)) { + break lab2; + } + return false; + } + this.cursor = ((this.limit - v_2) | 0); + } + return (! BaseStemmer$slice_from$LBaseStemmer$S(this, "") ? false : true); +}; + +PorterStemmer.prototype.r_Step_5a = PorterStemmer.prototype.r_Step_5a$; + +function PorterStemmer$r_Step_5a$LPorterStemmer$($this) { + var v_1; + var v_2; + var lab0; + var lab1; + var lab2; + var cursor$0; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "e")) { + return false; + } + $this.bra = $this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + break lab1; + } + break lab0; + } + cursor$0 = $this.cursor = (($this.limit - v_1) | 0); + if (! (! ($this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + v_2 = (($this.limit - $this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! PorterStemmer$r_shortv$LPorterStemmer$($this)) { + break lab2; + } + return false; + } + $this.cursor = (($this.limit - v_2) | 0); + } + return (! BaseStemmer$slice_from$LBaseStemmer$S($this, "") ? false : true); +}; + +PorterStemmer.r_Step_5a$LPorterStemmer$ = PorterStemmer$r_Step_5a$LPorterStemmer$; + +PorterStemmer.prototype.r_Step_5b$ = function () { + var cursor$0; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "l")) { + return false; + } + this.bra = cursor$0 = this.cursor; + return (! (! (this.I_p2 <= cursor$0) ? false : true) ? false : ! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "l") ? false : ! BaseStemmer$slice_from$LBaseStemmer$S(this, "") ? false : true); +}; + +PorterStemmer.prototype.r_Step_5b = PorterStemmer.prototype.r_Step_5b$; + +function PorterStemmer$r_Step_5b$LPorterStemmer$($this) { + var cursor$0; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "l")) { + return false; + } + $this.bra = cursor$0 = $this.cursor; + return (! (! ($this.I_p2 <= cursor$0) ? false : true) ? false : ! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "l") ? false : ! BaseStemmer$slice_from$LBaseStemmer$S($this, "") ? false : true); +}; + +PorterStemmer.r_Step_5b$LPorterStemmer$ = PorterStemmer$r_Step_5b$LPorterStemmer$; + +PorterStemmer.prototype.stem$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_10; + var v_11; + var v_12; + var v_13; + var v_14; + var v_15; + var v_16; + var v_18; + var v_19; + var v_20; + var lab0; + var lab1; + var lab3; + var lab5; + var lab6; + var lab8; + var lab10; + var lab12; + var lab14; + var lab15; + var lab16; + var lab17; + var lab18; + var lab19; + var lab20; + var lab21; + var lab22; + var lab23; + var lab25; + var lab27; + var cursor$0; + var cursor$1; + var limit$0; + var cursor$2; + var cursor$3; + var limit$1; + var cursor$4; + var limit$2; + var cursor$5; + var limit$3; + var cursor$6; + var limit$4; + var cursor$7; + var limit$5; + var cursor$8; + var limit$6; + var cursor$9; + var limit$7; + var cursor$10; + var cursor$11; + var cursor$12; + var $__jsx_postinc_t; + this.B_Y_found = false; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.bra = this.cursor; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "y")) { + break lab0; + } + this.ket = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "Y")) { + return false; + } + this.B_Y_found = true; + } + cursor$1 = this.cursor = v_1; + v_2 = cursor$1; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + replab2: + while (true) { + v_3 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + golab4: + while (true) { + v_4 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, PorterStemmer.g_v, 97, 121)) { + break lab5; + } + this.bra = this.cursor; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "y")) { + break lab5; + } + this.ket = this.cursor; + this.cursor = v_4; + break golab4; + } + cursor$0 = this.cursor = v_4; + if (cursor$0 >= this.limit) { + break lab3; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "Y")) { + return false; + } + this.B_Y_found = true; + continue replab2; + } + this.cursor = v_3; + break replab2; + } + } + cursor$2 = this.cursor = v_2; + this.I_p1 = limit$0 = this.limit; + this.I_p2 = limit$0; + v_5 = cursor$2; + lab6 = true; +lab6: + while (lab6 === true) { + lab6 = false; + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, PorterStemmer.g_v, 97, 121)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab6; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab9: + while (true) { + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, PorterStemmer.g_v, 97, 121)) { + break lab10; + } + break golab9; + } + if (this.cursor >= this.limit) { + break lab6; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p1 = this.cursor; + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, PorterStemmer.g_v, 97, 121)) { + break lab12; + } + break golab11; + } + if (this.cursor >= this.limit) { + break lab6; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab13: + while (true) { + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, PorterStemmer.g_v, 97, 121)) { + break lab14; + } + break golab13; + } + if (this.cursor >= this.limit) { + break lab6; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p2 = this.cursor; + } + cursor$3 = this.cursor = v_5; + this.limit_backward = cursor$3; + cursor$4 = this.cursor = limit$1 = this.limit; + v_10 = ((limit$1 - cursor$4) | 0); + lab15 = true; +lab15: + while (lab15 === true) { + lab15 = false; + if (! PorterStemmer$r_Step_1a$LPorterStemmer$(this)) { + break lab15; + } + } + cursor$5 = this.cursor = (((limit$2 = this.limit) - v_10) | 0); + v_11 = ((limit$2 - cursor$5) | 0); + lab16 = true; +lab16: + while (lab16 === true) { + lab16 = false; + if (! PorterStemmer$r_Step_1b$LPorterStemmer$(this)) { + break lab16; + } + } + cursor$6 = this.cursor = (((limit$3 = this.limit) - v_11) | 0); + v_12 = ((limit$3 - cursor$6) | 0); + lab17 = true; +lab17: + while (lab17 === true) { + lab17 = false; + if (! PorterStemmer$r_Step_1c$LPorterStemmer$(this)) { + break lab17; + } + } + cursor$7 = this.cursor = (((limit$4 = this.limit) - v_12) | 0); + v_13 = ((limit$4 - cursor$7) | 0); + lab18 = true; +lab18: + while (lab18 === true) { + lab18 = false; + if (! PorterStemmer$r_Step_2$LPorterStemmer$(this)) { + break lab18; + } + } + cursor$8 = this.cursor = (((limit$5 = this.limit) - v_13) | 0); + v_14 = ((limit$5 - cursor$8) | 0); + lab19 = true; +lab19: + while (lab19 === true) { + lab19 = false; + if (! PorterStemmer$r_Step_3$LPorterStemmer$(this)) { + break lab19; + } + } + cursor$9 = this.cursor = (((limit$6 = this.limit) - v_14) | 0); + v_15 = ((limit$6 - cursor$9) | 0); + lab20 = true; +lab20: + while (lab20 === true) { + lab20 = false; + if (! PorterStemmer$r_Step_4$LPorterStemmer$(this)) { + break lab20; + } + } + cursor$10 = this.cursor = (((limit$7 = this.limit) - v_15) | 0); + v_16 = ((limit$7 - cursor$10) | 0); + lab21 = true; +lab21: + while (lab21 === true) { + lab21 = false; + if (! PorterStemmer$r_Step_5a$LPorterStemmer$(this)) { + break lab21; + } + } + this.cursor = ((this.limit - v_16) | 0); + lab22 = true; +lab22: + while (lab22 === true) { + lab22 = false; + if (! PorterStemmer$r_Step_5b$LPorterStemmer$(this)) { + break lab22; + } + } + cursor$12 = this.cursor = this.limit_backward; + v_18 = cursor$12; + lab23 = true; +lab23: + while (lab23 === true) { + lab23 = false; + if (! this.B_Y_found) { + break lab23; + } + replab24: + while (true) { + v_19 = this.cursor; + lab25 = true; + lab25: + while (lab25 === true) { + lab25 = false; + golab26: + while (true) { + v_20 = this.cursor; + lab27 = true; + lab27: + while (lab27 === true) { + lab27 = false; + this.bra = this.cursor; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "Y")) { + break lab27; + } + this.ket = this.cursor; + this.cursor = v_20; + break golab26; + } + cursor$11 = this.cursor = v_20; + if (cursor$11 >= this.limit) { + break lab25; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "y")) { + return false; + } + continue replab24; + } + this.cursor = v_19; + break replab24; + } + } + this.cursor = v_18; + return true; +}; + +PorterStemmer.prototype.stem = PorterStemmer.prototype.stem$; + +PorterStemmer.prototype.equals$X = function (o) { + return o instanceof PorterStemmer; +}; + +PorterStemmer.prototype.equals = PorterStemmer.prototype.equals$X; + +function PorterStemmer$equals$LPorterStemmer$X($this, o) { + return o instanceof PorterStemmer; +}; + +PorterStemmer.equals$LPorterStemmer$X = PorterStemmer$equals$LPorterStemmer$X; + +PorterStemmer.prototype.hashCode$ = function () { + var classname; + var hash; + var i; + var char; + classname = "PorterStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +PorterStemmer.prototype.hashCode = PorterStemmer.prototype.hashCode$; + +function PorterStemmer$hashCode$LPorterStemmer$($this) { + var classname; + var hash; + var i; + var char; + classname = "PorterStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +PorterStemmer.hashCode$LPorterStemmer$ = PorterStemmer$hashCode$LPorterStemmer$; + +PorterStemmer.serialVersionUID = 1; +$__jsx_lazy_init(PorterStemmer, "methodObject", function () { + return new PorterStemmer(); +}); +$__jsx_lazy_init(PorterStemmer, "a_0", function () { + return [ new Among("s", -1, 3), new Among("ies", 0, 2), new Among("sses", 0, 1), new Among("ss", 0, -1) ]; +}); +$__jsx_lazy_init(PorterStemmer, "a_1", function () { + return [ new Among("", -1, 3), new Among("bb", 0, 2), new Among("dd", 0, 2), new Among("ff", 0, 2), new Among("gg", 0, 2), new Among("bl", 0, 1), new Among("mm", 0, 2), new Among("nn", 0, 2), new Among("pp", 0, 2), new Among("rr", 0, 2), new Among("at", 0, 1), new Among("tt", 0, 2), new Among("iz", 0, 1) ]; +}); +$__jsx_lazy_init(PorterStemmer, "a_2", function () { + return [ new Among("ed", -1, 2), new Among("eed", 0, 1), new Among("ing", -1, 2) ]; +}); +$__jsx_lazy_init(PorterStemmer, "a_3", function () { + return [ new Among("anci", -1, 3), new Among("enci", -1, 2), new Among("abli", -1, 4), new Among("eli", -1, 6), new Among("alli", -1, 9), new Among("ousli", -1, 12), new Among("entli", -1, 5), new Among("aliti", -1, 10), new Among("biliti", -1, 14), new Among("iviti", -1, 13), new Among("tional", -1, 1), new Among("ational", 10, 8), new Among("alism", -1, 10), new Among("ation", -1, 8), new Among("ization", 13, 7), new Among("izer", -1, 7), new Among("ator", -1, 8), new Among("iveness", -1, 13), new Among("fulness", -1, 11), new Among("ousness", -1, 12) ]; +}); +$__jsx_lazy_init(PorterStemmer, "a_4", function () { + return [ new Among("icate", -1, 2), new Among("ative", -1, 3), new Among("alize", -1, 1), new Among("iciti", -1, 2), new Among("ical", -1, 2), new Among("ful", -1, 3), new Among("ness", -1, 3) ]; +}); +$__jsx_lazy_init(PorterStemmer, "a_5", function () { + return [ new Among("ic", -1, 1), new Among("ance", -1, 1), new Among("ence", -1, 1), new Among("able", -1, 1), new Among("ible", -1, 1), new Among("ate", -1, 1), new Among("ive", -1, 1), new Among("ize", -1, 1), new Among("iti", -1, 1), new Among("al", -1, 1), new Among("ism", -1, 1), new Among("ion", -1, 2), new Among("er", -1, 1), new Among("ous", -1, 1), new Among("ant", -1, 1), new Among("ent", -1, 1), new Among("ment", 15, 1), new Among("ement", 16, 1), new Among("ou", -1, 1) ]; +}); +PorterStemmer.g_v = [ 17, 65, 16, 1 ]; +PorterStemmer.g_v_WXY = [ 1, 17, 65, 208, 1 ]; + +var $__jsx_classMap = { + "src/among.jsx": { + Among: Among, + Among$SII: Among, + Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$0 + }, + "src/stemmer.jsx": { + Stemmer: Stemmer, + Stemmer$: Stemmer + }, + "src/base-stemmer.jsx": { + BaseStemmer: BaseStemmer, + BaseStemmer$: BaseStemmer + }, + "src/porter-stemmer.jsx": { + PorterStemmer: PorterStemmer, + PorterStemmer$: PorterStemmer + } +}; + + +})(JSX); + +var Among = JSX.require("src/among.jsx").Among; +var Among$SII = JSX.require("src/among.jsx").Among$SII; +var Stemmer = JSX.require("src/stemmer.jsx").Stemmer; +var BaseStemmer = JSX.require("src/base-stemmer.jsx").BaseStemmer; +var PorterStemmer = JSX.require("src/porter-stemmer.jsx").PorterStemmer; diff --git a/sphinx/sphinx/search/non-minified-js/portuguese-stemmer.js b/sphinx/sphinx/search/non-minified-js/portuguese-stemmer.js new file mode 100644 index 0000000..35f21aa --- /dev/null +++ b/sphinx/sphinx/search/non-minified-js/portuguese-stemmer.js @@ -0,0 +1,2817 @@ +// generatedy by JSX compiler 0.9.89 (2014-05-20 06:01:03 +0900; 8e8c6105f36f3dfe440ea026a3c93a3444977102) +var JSX = {}; +(function (JSX) { +/** + * extends the class + */ +function $__jsx_extend(derivations, base) { + var ctor = function () {}; + ctor.prototype = base.prototype; + var proto = new ctor(); + for (var i in derivations) { + derivations[i].prototype = proto; + } +} + +/** + * copies the implementations from source interface to target + */ +function $__jsx_merge_interface(target, source) { + for (var k in source.prototype) + if (source.prototype.hasOwnProperty(k)) + target.prototype[k] = source.prototype[k]; +} + +/** + * defers the initialization of the property + */ +function $__jsx_lazy_init(obj, prop, func) { + function reset(obj, prop, value) { + delete obj[prop]; + obj[prop] = value; + return value; + } + + Object.defineProperty(obj, prop, { + get: function () { + return reset(obj, prop, func()); + }, + set: function (v) { + reset(obj, prop, v); + }, + enumerable: true, + configurable: true + }); +} + +var $__jsx_imul = Math.imul; +if (typeof $__jsx_imul === "undefined") { + $__jsx_imul = function (a, b) { + var ah = (a >>> 16) & 0xffff; + var al = a & 0xffff; + var bh = (b >>> 16) & 0xffff; + var bl = b & 0xffff; + return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0); + }; +} + +/** + * fused int-ops with side-effects + */ +function $__jsx_ipadd(o, p, r) { + return o[p] = (o[p] + r) | 0; +} +function $__jsx_ipsub(o, p, r) { + return o[p] = (o[p] - r) | 0; +} +function $__jsx_ipmul(o, p, r) { + return o[p] = $__jsx_imul(o[p], r); +} +function $__jsx_ipdiv(o, p, r) { + return o[p] = (o[p] / r) | 0; +} +function $__jsx_ipmod(o, p, r) { + return o[p] = (o[p] % r) | 0; +} +function $__jsx_ippostinc(o, p) { + var v = o[p]; + o[p] = (v + 1) | 0; + return v; +} +function $__jsx_ippostdec(o, p) { + var v = o[p]; + o[p] = (v - 1) | 0; + return v; +} + +/** + * non-inlined version of Array#each + */ +function $__jsx_forEach(o, f) { + var l = o.length; + for (var i = 0; i < l; ++i) + f(o[i]); +} + +/* + * global functions, renamed to avoid conflict with local variable names + */ +var $__jsx_parseInt = parseInt; +var $__jsx_parseFloat = parseFloat; +function $__jsx_isNaN(n) { return n !== n; } +var $__jsx_isFinite = isFinite; + +var $__jsx_encodeURIComponent = encodeURIComponent; +var $__jsx_decodeURIComponent = decodeURIComponent; +var $__jsx_encodeURI = encodeURI; +var $__jsx_decodeURI = decodeURI; + +var $__jsx_ObjectToString = Object.prototype.toString; +var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty; + +/* + * profiler object, initialized afterwards + */ +function $__jsx_profiler() { +} + +/* + * public interface to JSX code + */ +JSX.require = function (path) { + var m = $__jsx_classMap[path]; + return m !== undefined ? m : null; +}; + +JSX.profilerIsRunning = function () { + return $__jsx_profiler.getResults != null; +}; + +JSX.getProfileResults = function () { + return ($__jsx_profiler.getResults || function () { return {}; })(); +}; + +JSX.postProfileResults = function (url, cb) { + if ($__jsx_profiler.postResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.postResults(url, cb); +}; + +JSX.resetProfileResults = function () { + if ($__jsx_profiler.resetResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.resetResults(); +}; +JSX.DEBUG = false; +var GeneratorFunction$0 = +(function () { + try { + return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); + } catch (e) { + return function GeneratorFunction () {}; + } +})(); +var __jsx_generator_object$0 = +(function () { + function __jsx_generator_object() { + this.__next = 0; + this.__loop = null; + this.__seed = null; + this.__value = undefined; + this.__status = 0; // SUSPENDED: 0, ACTIVE: 1, DEAD: 2 + } + + __jsx_generator_object.prototype.next = function (seed) { + switch (this.__status) { + case 0: + this.__status = 1; + this.__seed = seed; + + // go next! + this.__loop(this.__next); + + var done = false; + if (this.__next != -1) { + this.__status = 0; + } else { + this.__status = 2; + done = true; + } + return { value: this.__value, done: done }; + case 1: + throw new Error("Generator is already running"); + case 2: + throw new Error("Generator is already finished"); + default: + throw new Error("Unexpected generator internal state"); + } + }; + + return __jsx_generator_object; +}()); +function Among(s, substring_i, result) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = null; + this.instance = null; +}; + +function Among$0(s, substring_i, result, method, instance) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = method; + this.instance = instance; +}; + +$__jsx_extend([Among, Among$0], Object); +function Stemmer() { +}; + +$__jsx_extend([Stemmer], Object); +function BaseStemmer() { + var current$0; + var cursor$0; + var limit$0; + this.cache = ({ }); + current$0 = this.current = ""; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +$__jsx_extend([BaseStemmer], Stemmer); +BaseStemmer.prototype.setCurrent$S = function (value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = this.current = value; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + + +function BaseStemmer$setCurrent$LBaseStemmer$S($this, value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = $this.current = value; + cursor$0 = $this.cursor = 0; + limit$0 = $this.limit = current$0.length; + $this.limit_backward = 0; + $this.bra = cursor$0; + $this.ket = limit$0; +}; + +BaseStemmer.setCurrent$LBaseStemmer$S = BaseStemmer$setCurrent$LBaseStemmer$S; + +BaseStemmer.prototype.getCurrent$ = function () { + return this.current; +}; + + +function BaseStemmer$getCurrent$LBaseStemmer$($this) { + return $this.current; +}; + +BaseStemmer.getCurrent$LBaseStemmer$ = BaseStemmer$getCurrent$LBaseStemmer$; + +BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; +}; + + +function BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$($this, other) { + $this.current = other.current; + $this.cursor = other.cursor; + $this.limit = other.limit; + $this.limit_backward = other.limit_backward; + $this.bra = other.bra; + $this.ket = other.ket; +}; + +BaseStemmer.copy_from$LBaseStemmer$LBaseStemmer$ = BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$; + +BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping$LBaseStemmer$AIII = BaseStemmer$in_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping_b$LBaseStemmer$AIII = BaseStemmer$in_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping$LBaseStemmer$AIII = BaseStemmer$out_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping_b$LBaseStemmer$AIII = BaseStemmer$out_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range$LBaseStemmer$II = BaseStemmer$in_range$LBaseStemmer$II; + +BaseStemmer.prototype.in_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range_b$LBaseStemmer$II = BaseStemmer$in_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.out_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range$LBaseStemmer$II = BaseStemmer$out_range$LBaseStemmer$II; + +BaseStemmer.prototype.out_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range_b$LBaseStemmer$II = BaseStemmer$out_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.eq_s$IS = function (s_size, s) { + var cursor$0; + if (((this.limit - this.cursor) | 0) < s_size) { + return false; + } + if (this.current.slice(cursor$0 = this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + this.cursor = (this.cursor + s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.limit - $this.cursor) | 0) < s_size) { + return false; + } + if ($this.current.slice(cursor$0 = $this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + $this.cursor = ($this.cursor + s_size) | 0; + return true; +}; + +BaseStemmer.eq_s$LBaseStemmer$IS = BaseStemmer$eq_s$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) { + var cursor$0; + if (((this.cursor - this.limit_backward) | 0) < s_size) { + return false; + } + if (this.current.slice((((cursor$0 = this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + this.cursor = (this.cursor - s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.cursor - $this.limit_backward) | 0) < s_size) { + return false; + } + if ($this.current.slice((((cursor$0 = $this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + $this.cursor = ($this.cursor - s_size) | 0; + return true; +}; + +BaseStemmer.eq_s_b$LBaseStemmer$IS = BaseStemmer$eq_s_b$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_v$S = function (s) { + return BaseStemmer$eq_s$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v$LBaseStemmer$S = BaseStemmer$eq_v$LBaseStemmer$S; + +BaseStemmer.prototype.eq_v_b$S = function (s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v_b$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v_b$LBaseStemmer$S = BaseStemmer$eq_v_b$LBaseStemmer$S; + +BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + l = this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + l = $this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + $this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among$LBaseStemmer$ALAmong$I = BaseStemmer$find_among$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + lb = this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(this); + this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + lb = $this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method($this); + $this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among_b$LBaseStemmer$ALAmong$I = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit = (this.limit + adjustment) | 0; + if (this.cursor >= c_ket) { + this.cursor = (this.cursor + adjustment) | 0; + } else if (this.cursor > c_bra) { + this.cursor = c_bra; + } + return (adjustment | 0); +}; + + +function BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + $this.current = $this.current.slice(0, c_bra) + s + $this.current.slice(c_ket); + $this.limit = ($this.limit + adjustment) | 0; + if ($this.cursor >= c_ket) { + $this.cursor = ($this.cursor + adjustment) | 0; + } else if ($this.cursor > c_bra) { + $this.cursor = c_bra; + } + return (adjustment | 0); +}; + +BaseStemmer.replace_s$LBaseStemmer$IIS = BaseStemmer$replace_s$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_check$ = function () { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true); +}; + + +function BaseStemmer$slice_check$LBaseStemmer$($this) { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true); +}; + +BaseStemmer.slice_check$LBaseStemmer$ = BaseStemmer$slice_check$LBaseStemmer$; + +BaseStemmer.prototype.slice_from$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS(this, this.bra, this.ket, s); + result = true; + } + return result; +}; + + +function BaseStemmer$slice_from$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS($this, $this.bra, $this.ket, s); + result = true; + } + return result; +}; + +BaseStemmer.slice_from$LBaseStemmer$S = BaseStemmer$slice_from$LBaseStemmer$S; + +BaseStemmer.prototype.slice_del$ = function () { + return BaseStemmer$slice_from$LBaseStemmer$S(this, ""); +}; + + +function BaseStemmer$slice_del$LBaseStemmer$($this) { + return BaseStemmer$slice_from$LBaseStemmer$S($this, ""); +}; + +BaseStemmer.slice_del$LBaseStemmer$ = BaseStemmer$slice_del$LBaseStemmer$; + +BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS(this, c_bra, c_ket, s); + if (c_bra <= this.bra) { + this.bra = (this.bra + adjustment) | 0; + } + if (c_bra <= this.ket) { + this.ket = (this.ket + adjustment) | 0; + } +}; + + +function BaseStemmer$insert$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s); + if (c_bra <= $this.bra) { + $this.bra = ($this.bra + adjustment) | 0; + } + if (c_bra <= $this.ket) { + $this.ket = ($this.ket + adjustment) | 0; + } +}; + +BaseStemmer.insert$LBaseStemmer$IIS = BaseStemmer$insert$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_to$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + result = this.current.slice(this.bra, this.ket); + } + return result; +}; + + +function BaseStemmer$slice_to$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + result = $this.current.slice($this.bra, $this.ket); + } + return result; +}; + +BaseStemmer.slice_to$LBaseStemmer$S = BaseStemmer$slice_to$LBaseStemmer$S; + +BaseStemmer.prototype.assign_to$S = function (s) { + return this.current.slice(0, this.limit); +}; + + +function BaseStemmer$assign_to$LBaseStemmer$S($this, s) { + return $this.current.slice(0, $this.limit); +}; + +BaseStemmer.assign_to$LBaseStemmer$S = BaseStemmer$assign_to$LBaseStemmer$S; + +BaseStemmer.prototype.stem$ = function () { + return false; +}; + + +BaseStemmer.prototype.stemWord$S = function (word) { + var result; + var current$0; + var cursor$0; + var limit$0; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + return result; +}; + +BaseStemmer.prototype.stemWord = BaseStemmer.prototype.stemWord$S; + +BaseStemmer.prototype.stemWords$AS = function (words) { + var results; + var i; + var word; + var result; + var current$0; + var cursor$0; + var limit$0; + results = [ ]; + for (i = 0; i < words.length; i++) { + word = words[i]; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + results.push(result); + } + return results; +}; + +BaseStemmer.prototype.stemWords = BaseStemmer.prototype.stemWords$AS; + +function PortugueseStemmer() { + BaseStemmer.call(this); + this.I_p2 = 0; + this.I_p1 = 0; + this.I_pV = 0; +}; + +$__jsx_extend([PortugueseStemmer], BaseStemmer); +PortugueseStemmer.prototype.copy_from$LPortugueseStemmer$ = function (other) { + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + this.I_pV = other.I_pV; + BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$(this, other); +}; + +PortugueseStemmer.prototype.copy_from = PortugueseStemmer.prototype.copy_from$LPortugueseStemmer$; + +PortugueseStemmer.prototype.r_prelude$ = function () { + var among_var; + var v_1; + var lab1; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I(this, PortugueseStemmer.a_0, 3); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a~")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "o~")) { + return false; + } + break; + case 3: + if (this.cursor >= this.limit) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +PortugueseStemmer.prototype.r_prelude = PortugueseStemmer.prototype.r_prelude$; + +function PortugueseStemmer$r_prelude$LPortugueseStemmer$($this) { + var among_var; + var v_1; + var lab1; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + $this.bra = $this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, PortugueseStemmer.a_0, 3); + if (among_var === 0) { + break lab1; + } + $this.ket = $this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a~")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "o~")) { + return false; + } + break; + case 3: + if ($this.cursor >= $this.limit) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + $this.cursor = v_1; + break replab0; + } + return true; +}; + +PortugueseStemmer.r_prelude$LPortugueseStemmer$ = PortugueseStemmer$r_prelude$LPortugueseStemmer$; + +PortugueseStemmer.prototype.r_mark_regions$ = function () { + var v_1; + var v_2; + var v_3; + var v_6; + var v_8; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab6; + var lab8; + var lab9; + var lab10; + var lab12; + var lab13; + var lab15; + var lab17; + var lab19; + var lab21; + var limit$0; + var cursor$0; + var $__jsx_postinc_t; + this.I_pV = limit$0 = this.limit; + this.I_p1 = limit$0; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, PortugueseStemmer.g_v, 97, 250)) { + break lab2; + } + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, PortugueseStemmer.g_v, 97, 250)) { + break lab4; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, PortugueseStemmer.g_v, 97, 250)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + break lab4; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + break lab3; + } + this.cursor = v_3; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, PortugueseStemmer.g_v, 97, 250)) { + break lab2; + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, PortugueseStemmer.g_v, 97, 250)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab2; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + break lab1; + } + this.cursor = v_2; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, PortugueseStemmer.g_v, 97, 250)) { + break lab0; + } + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_6 = this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, PortugueseStemmer.g_v, 97, 250)) { + break lab10; + } + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, PortugueseStemmer.g_v, 97, 250)) { + break lab12; + } + break golab11; + } + if (this.cursor >= this.limit) { + break lab10; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + break lab9; + } + this.cursor = v_6; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, PortugueseStemmer.g_v, 97, 250)) { + break lab0; + } + if (this.cursor >= this.limit) { + break lab0; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + this.I_pV = this.cursor; + } + cursor$0 = this.cursor = v_1; + v_8 = cursor$0; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + golab14: + while (true) { + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, PortugueseStemmer.g_v, 97, 250)) { + break lab15; + } + break golab14; + } + if (this.cursor >= this.limit) { + break lab13; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab16: + while (true) { + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, PortugueseStemmer.g_v, 97, 250)) { + break lab17; + } + break golab16; + } + if (this.cursor >= this.limit) { + break lab13; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p1 = this.cursor; + golab18: + while (true) { + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, PortugueseStemmer.g_v, 97, 250)) { + break lab19; + } + break golab18; + } + if (this.cursor >= this.limit) { + break lab13; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab20: + while (true) { + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, PortugueseStemmer.g_v, 97, 250)) { + break lab21; + } + break golab20; + } + if (this.cursor >= this.limit) { + break lab13; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p2 = this.cursor; + } + this.cursor = v_8; + return true; +}; + +PortugueseStemmer.prototype.r_mark_regions = PortugueseStemmer.prototype.r_mark_regions$; + +function PortugueseStemmer$r_mark_regions$LPortugueseStemmer$($this) { + var v_1; + var v_2; + var v_3; + var v_6; + var v_8; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab6; + var lab8; + var lab9; + var lab10; + var lab12; + var lab13; + var lab15; + var lab17; + var lab19; + var lab21; + var limit$0; + var cursor$0; + var $__jsx_postinc_t; + $this.I_pV = limit$0 = $this.limit; + $this.I_p1 = limit$0; + $this.I_p2 = limit$0; + v_1 = $this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = $this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, PortugueseStemmer.g_v, 97, 250)) { + break lab2; + } + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = $this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, PortugueseStemmer.g_v, 97, 250)) { + break lab4; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, PortugueseStemmer.g_v, 97, 250)) { + break lab6; + } + break golab5; + } + if ($this.cursor >= $this.limit) { + break lab4; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + break lab3; + } + $this.cursor = v_3; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, PortugueseStemmer.g_v, 97, 250)) { + break lab2; + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, PortugueseStemmer.g_v, 97, 250)) { + break lab8; + } + break golab7; + } + if ($this.cursor >= $this.limit) { + break lab2; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + break lab1; + } + $this.cursor = v_2; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, PortugueseStemmer.g_v, 97, 250)) { + break lab0; + } + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_6 = $this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, PortugueseStemmer.g_v, 97, 250)) { + break lab10; + } + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, PortugueseStemmer.g_v, 97, 250)) { + break lab12; + } + break golab11; + } + if ($this.cursor >= $this.limit) { + break lab10; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + break lab9; + } + $this.cursor = v_6; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, PortugueseStemmer.g_v, 97, 250)) { + break lab0; + } + if ($this.cursor >= $this.limit) { + break lab0; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + $this.I_pV = $this.cursor; + } + cursor$0 = $this.cursor = v_1; + v_8 = cursor$0; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + golab14: + while (true) { + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, PortugueseStemmer.g_v, 97, 250)) { + break lab15; + } + break golab14; + } + if ($this.cursor >= $this.limit) { + break lab13; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab16: + while (true) { + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, PortugueseStemmer.g_v, 97, 250)) { + break lab17; + } + break golab16; + } + if ($this.cursor >= $this.limit) { + break lab13; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p1 = $this.cursor; + golab18: + while (true) { + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, PortugueseStemmer.g_v, 97, 250)) { + break lab19; + } + break golab18; + } + if ($this.cursor >= $this.limit) { + break lab13; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab20: + while (true) { + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, PortugueseStemmer.g_v, 97, 250)) { + break lab21; + } + break golab20; + } + if ($this.cursor >= $this.limit) { + break lab13; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p2 = $this.cursor; + } + $this.cursor = v_8; + return true; +}; + +PortugueseStemmer.r_mark_regions$LPortugueseStemmer$ = PortugueseStemmer$r_mark_regions$LPortugueseStemmer$; + +PortugueseStemmer.prototype.r_postlude$ = function () { + var among_var; + var v_1; + var lab1; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I(this, PortugueseStemmer.a_1, 3); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "\u00E3")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "\u00F5")) { + return false; + } + break; + case 3: + if (this.cursor >= this.limit) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +PortugueseStemmer.prototype.r_postlude = PortugueseStemmer.prototype.r_postlude$; + +function PortugueseStemmer$r_postlude$LPortugueseStemmer$($this) { + var among_var; + var v_1; + var lab1; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + $this.bra = $this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, PortugueseStemmer.a_1, 3); + if (among_var === 0) { + break lab1; + } + $this.ket = $this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "\u00E3")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "\u00F5")) { + return false; + } + break; + case 3: + if ($this.cursor >= $this.limit) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + $this.cursor = v_1; + break replab0; + } + return true; +}; + +PortugueseStemmer.r_postlude$LPortugueseStemmer$ = PortugueseStemmer$r_postlude$LPortugueseStemmer$; + +PortugueseStemmer.prototype.r_RV$ = function () { + return (! (this.I_pV <= this.cursor) ? false : true); +}; + +PortugueseStemmer.prototype.r_RV = PortugueseStemmer.prototype.r_RV$; + +function PortugueseStemmer$r_RV$LPortugueseStemmer$($this) { + return (! ($this.I_pV <= $this.cursor) ? false : true); +}; + +PortugueseStemmer.r_RV$LPortugueseStemmer$ = PortugueseStemmer$r_RV$LPortugueseStemmer$; + +PortugueseStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +PortugueseStemmer.prototype.r_R1 = PortugueseStemmer.prototype.r_R1$; + +function PortugueseStemmer$r_R1$LPortugueseStemmer$($this) { + return (! ($this.I_p1 <= $this.cursor) ? false : true); +}; + +PortugueseStemmer.r_R1$LPortugueseStemmer$ = PortugueseStemmer$r_R1$LPortugueseStemmer$; + +PortugueseStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +PortugueseStemmer.prototype.r_R2 = PortugueseStemmer.prototype.r_R2$; + +function PortugueseStemmer$r_R2$LPortugueseStemmer$($this) { + return (! ($this.I_p2 <= $this.cursor) ? false : true); +}; + +PortugueseStemmer.r_R2$LPortugueseStemmer$ = PortugueseStemmer$r_R2$LPortugueseStemmer$; + +PortugueseStemmer.prototype.r_standard_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var lab0; + var lab1; + var lab2; + var lab3; + var cursor$0; + var cursor$1; + var cursor$2; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, PortugueseStemmer.a_5, 45); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "log")) { + return false; + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "u")) { + return false; + } + break; + case 4: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ente")) { + return false; + } + break; + case 5: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_1 = ((this.limit - this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, PortugueseStemmer.a_2, 4); + if (among_var === 0) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + switch (among_var) { + case 0: + this.cursor = ((this.limit - v_1) | 0); + break lab0; + case 1: + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "at")) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_p2 <= cursor$1) ? false : true)) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + } + break; + case 6: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_2 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, PortugueseStemmer.a_3, 3); + if (among_var === 0) { + this.cursor = ((this.limit - v_2) | 0); + break lab1; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = ((this.limit - v_2) | 0); + break lab1; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = ((this.limit - v_2) | 0); + break lab1; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + } + break; + case 7: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_3 = ((this.limit - this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, PortugueseStemmer.a_4, 3); + if (among_var === 0) { + this.cursor = ((this.limit - v_3) | 0); + break lab2; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = ((this.limit - v_3) | 0); + break lab2; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = ((this.limit - v_3) | 0); + break lab2; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + } + break; + case 8: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_4 = ((this.limit - this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "at")) { + this.cursor = ((this.limit - v_4) | 0); + break lab3; + } + this.bra = cursor$2 = this.cursor; + if (! (! (this.I_p2 <= cursor$2) ? false : true)) { + this.cursor = ((this.limit - v_4) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + break; + case 9: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "e")) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ir")) { + return false; + } + break; + } + return true; +}; + +PortugueseStemmer.prototype.r_standard_suffix = PortugueseStemmer.prototype.r_standard_suffix$; + +function PortugueseStemmer$r_standard_suffix$LPortugueseStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var lab0; + var lab1; + var lab2; + var lab3; + var cursor$0; + var cursor$1; + var cursor$2; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, PortugueseStemmer.a_5, 45); + if (among_var === 0) { + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "log")) { + return false; + } + break; + case 3: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "u")) { + return false; + } + break; + case 4: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ente")) { + return false; + } + break; + case 5: + if (! (! ($this.I_p1 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_1 = (($this.limit - $this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, PortugueseStemmer.a_2, 4); + if (among_var === 0) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$0) ? false : true)) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + switch (among_var) { + case 0: + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + case 1: + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "at")) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + $this.bra = cursor$1 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$1) ? false : true)) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + } + break; + case 6: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_2 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, PortugueseStemmer.a_3, 3); + if (among_var === 0) { + $this.cursor = (($this.limit - v_2) | 0); + break lab1; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.cursor = (($this.limit - v_2) | 0); + break lab1; + case 1: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + $this.cursor = (($this.limit - v_2) | 0); + break lab1; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + } + break; + case 7: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_3 = (($this.limit - $this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, PortugueseStemmer.a_4, 3); + if (among_var === 0) { + $this.cursor = (($this.limit - v_3) | 0); + break lab2; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.cursor = (($this.limit - v_3) | 0); + break lab2; + case 1: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + $this.cursor = (($this.limit - v_3) | 0); + break lab2; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + } + break; + case 8: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_4 = (($this.limit - $this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "at")) { + $this.cursor = (($this.limit - v_4) | 0); + break lab3; + } + $this.bra = cursor$2 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$2) ? false : true)) { + $this.cursor = (($this.limit - v_4) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + break; + case 9: + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "e")) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ir")) { + return false; + } + break; + } + return true; +}; + +PortugueseStemmer.r_standard_suffix$LPortugueseStemmer$ = PortugueseStemmer$r_standard_suffix$LPortugueseStemmer$; + +PortugueseStemmer.prototype.r_verb_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, PortugueseStemmer.a_6, 120); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + this.limit_backward = v_2; + return true; +}; + +PortugueseStemmer.prototype.r_verb_suffix = PortugueseStemmer.prototype.r_verb_suffix$; + +function PortugueseStemmer$r_verb_suffix$LPortugueseStemmer$($this) { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_pV) { + return false; + } + cursor$1 = $this.cursor = $this.I_pV; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, PortugueseStemmer.a_6, 120); + if (among_var === 0) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.limit_backward = v_2; + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + $this.limit_backward = v_2; + return true; +}; + +PortugueseStemmer.r_verb_suffix$LPortugueseStemmer$ = PortugueseStemmer$r_verb_suffix$LPortugueseStemmer$; + +PortugueseStemmer.prototype.r_residual_suffix$ = function () { + var among_var; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, PortugueseStemmer.a_7, 7); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +PortugueseStemmer.prototype.r_residual_suffix = PortugueseStemmer.prototype.r_residual_suffix$; + +function PortugueseStemmer$r_residual_suffix$LPortugueseStemmer$($this) { + var among_var; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, PortugueseStemmer.a_7, 7); + if (among_var === 0) { + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +PortugueseStemmer.r_residual_suffix$LPortugueseStemmer$ = PortugueseStemmer$r_residual_suffix$LPortugueseStemmer$; + +PortugueseStemmer.prototype.r_residual_form$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var lab0; + var lab1; + var cursor$0; + var cursor$1; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, PortugueseStemmer.a_8, 4); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + this.ket = this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "u")) { + break lab1; + } + this.bra = cursor$0 = this.cursor; + v_2 = ((this.limit - cursor$0) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "g")) { + break lab1; + } + this.cursor = ((this.limit - v_2) | 0); + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "i")) { + return false; + } + this.bra = cursor$1 = this.cursor; + v_3 = ((this.limit - cursor$1) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "c")) { + return false; + } + this.cursor = ((this.limit - v_3) | 0); + } + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "c")) { + return false; + } + break; + } + return true; +}; + +PortugueseStemmer.prototype.r_residual_form = PortugueseStemmer.prototype.r_residual_form$; + +function PortugueseStemmer$r_residual_form$LPortugueseStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var lab0; + var lab1; + var cursor$0; + var cursor$1; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, PortugueseStemmer.a_8, 4); + if (among_var === 0) { + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + $this.ket = $this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "u")) { + break lab1; + } + $this.bra = cursor$0 = $this.cursor; + v_2 = (($this.limit - cursor$0) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "g")) { + break lab1; + } + $this.cursor = (($this.limit - v_2) | 0); + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "i")) { + return false; + } + $this.bra = cursor$1 = $this.cursor; + v_3 = (($this.limit - cursor$1) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "c")) { + return false; + } + $this.cursor = (($this.limit - v_3) | 0); + } + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "c")) { + return false; + } + break; + } + return true; +}; + +PortugueseStemmer.r_residual_form$LPortugueseStemmer$ = PortugueseStemmer$r_residual_form$LPortugueseStemmer$; + +PortugueseStemmer.prototype.stem$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_10; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var cursor$0; + var cursor$1; + var cursor$2; + var limit$0; + var cursor$3; + var cursor$4; + var limit$1; + var cursor$5; + var cursor$6; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! PortugueseStemmer$r_prelude$LPortugueseStemmer$(this)) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! PortugueseStemmer$r_mark_regions$LPortugueseStemmer$(this)) { + break lab1; + } + } + cursor$4 = this.cursor = v_2; + this.limit_backward = cursor$4; + cursor$5 = this.cursor = limit$1 = this.limit; + v_3 = ((limit$1 - cursor$5) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_4 = ((this.limit - this.cursor) | 0); + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_5 = ((this.limit - this.cursor) | 0); + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_6 = ((this.limit - this.cursor) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! PortugueseStemmer$r_standard_suffix$LPortugueseStemmer$(this)) { + break lab6; + } + break lab5; + } + this.cursor = ((this.limit - v_6) | 0); + if (! PortugueseStemmer$r_verb_suffix$LPortugueseStemmer$(this)) { + break lab4; + } + } + cursor$3 = this.cursor = (((limit$0 = this.limit) - v_5) | 0); + v_7 = ((limit$0 - cursor$3) | 0); + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "i")) { + break lab7; + } + this.bra = cursor$1 = this.cursor; + v_8 = ((this.limit - cursor$1) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "c")) { + break lab7; + } + cursor$2 = this.cursor = ((this.limit - v_8) | 0); + if (! (! (this.I_pV <= cursor$2) ? false : true)) { + break lab7; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + this.cursor = ((this.limit - v_7) | 0); + break lab3; + } + this.cursor = ((this.limit - v_4) | 0); + if (! PortugueseStemmer$r_residual_suffix$LPortugueseStemmer$(this)) { + break lab2; + } + } + } + this.cursor = ((this.limit - v_3) | 0); + lab8 = true; +lab8: + while (lab8 === true) { + lab8 = false; + if (! PortugueseStemmer$r_residual_form$LPortugueseStemmer$(this)) { + break lab8; + } + } + cursor$6 = this.cursor = this.limit_backward; + v_10 = cursor$6; + lab9 = true; +lab9: + while (lab9 === true) { + lab9 = false; + if (! PortugueseStemmer$r_postlude$LPortugueseStemmer$(this)) { + break lab9; + } + } + this.cursor = v_10; + return true; +}; + +PortugueseStemmer.prototype.stem = PortugueseStemmer.prototype.stem$; + +PortugueseStemmer.prototype.equals$X = function (o) { + return o instanceof PortugueseStemmer; +}; + +PortugueseStemmer.prototype.equals = PortugueseStemmer.prototype.equals$X; + +function PortugueseStemmer$equals$LPortugueseStemmer$X($this, o) { + return o instanceof PortugueseStemmer; +}; + +PortugueseStemmer.equals$LPortugueseStemmer$X = PortugueseStemmer$equals$LPortugueseStemmer$X; + +PortugueseStemmer.prototype.hashCode$ = function () { + var classname; + var hash; + var i; + var char; + classname = "PortugueseStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +PortugueseStemmer.prototype.hashCode = PortugueseStemmer.prototype.hashCode$; + +function PortugueseStemmer$hashCode$LPortugueseStemmer$($this) { + var classname; + var hash; + var i; + var char; + classname = "PortugueseStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +PortugueseStemmer.hashCode$LPortugueseStemmer$ = PortugueseStemmer$hashCode$LPortugueseStemmer$; + +PortugueseStemmer.serialVersionUID = 1; +$__jsx_lazy_init(PortugueseStemmer, "methodObject", function () { + return new PortugueseStemmer(); +}); +$__jsx_lazy_init(PortugueseStemmer, "a_0", function () { + return [ new Among("", -1, 3), new Among("\u00E3", 0, 1), new Among("\u00F5", 0, 2) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_1", function () { + return [ new Among("", -1, 3), new Among("a~", 0, 1), new Among("o~", 0, 2) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_2", function () { + return [ new Among("ic", -1, -1), new Among("ad", -1, -1), new Among("os", -1, -1), new Among("iv", -1, 1) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_3", function () { + return [ new Among("ante", -1, 1), new Among("avel", -1, 1), new Among("\u00EDvel", -1, 1) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_4", function () { + return [ new Among("ic", -1, 1), new Among("abil", -1, 1), new Among("iv", -1, 1) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_5", function () { + return [ new Among("ica", -1, 1), new Among("\u00E2ncia", -1, 1), new Among("\u00EAncia", -1, 4), new Among("ira", -1, 9), new Among("adora", -1, 1), new Among("osa", -1, 1), new Among("ista", -1, 1), new Among("iva", -1, 8), new Among("eza", -1, 1), new Among("log\u00EDa", -1, 2), new Among("idade", -1, 7), new Among("ante", -1, 1), new Among("mente", -1, 6), new Among("amente", 12, 5), new Among("\u00E1vel", -1, 1), new Among("\u00EDvel", -1, 1), new Among("uci\u00F3n", -1, 3), new Among("ico", -1, 1), new Among("ismo", -1, 1), new Among("oso", -1, 1), new Among("amento", -1, 1), new Among("imento", -1, 1), new Among("ivo", -1, 8), new Among("a\u00E7a~o", -1, 1), new Among("ador", -1, 1), new Among("icas", -1, 1), new Among("\u00EAncias", -1, 4), new Among("iras", -1, 9), new Among("adoras", -1, 1), new Among("osas", -1, 1), new Among("istas", -1, 1), new Among("ivas", -1, 8), new Among("ezas", -1, 1), new Among("log\u00EDas", -1, 2), new Among("idades", -1, 7), new Among("uciones", -1, 3), new Among("adores", -1, 1), new Among("antes", -1, 1), new Among("a\u00E7o~es", -1, 1), new Among("icos", -1, 1), new Among("ismos", -1, 1), new Among("osos", -1, 1), new Among("amentos", -1, 1), new Among("imentos", -1, 1), new Among("ivos", -1, 8) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_6", function () { + return [ new Among("ada", -1, 1), new Among("ida", -1, 1), new Among("ia", -1, 1), new Among("aria", 2, 1), new Among("eria", 2, 1), new Among("iria", 2, 1), new Among("ara", -1, 1), new Among("era", -1, 1), new Among("ira", -1, 1), new Among("ava", -1, 1), new Among("asse", -1, 1), new Among("esse", -1, 1), new Among("isse", -1, 1), new Among("aste", -1, 1), new Among("este", -1, 1), new Among("iste", -1, 1), new Among("ei", -1, 1), new Among("arei", 16, 1), new Among("erei", 16, 1), new Among("irei", 16, 1), new Among("am", -1, 1), new Among("iam", 20, 1), new Among("ariam", 21, 1), new Among("eriam", 21, 1), new Among("iriam", 21, 1), new Among("aram", 20, 1), new Among("eram", 20, 1), new Among("iram", 20, 1), new Among("avam", 20, 1), new Among("em", -1, 1), new Among("arem", 29, 1), new Among("erem", 29, 1), new Among("irem", 29, 1), new Among("assem", 29, 1), new Among("essem", 29, 1), new Among("issem", 29, 1), new Among("ado", -1, 1), new Among("ido", -1, 1), new Among("ando", -1, 1), new Among("endo", -1, 1), new Among("indo", -1, 1), new Among("ara~o", -1, 1), new Among("era~o", -1, 1), new Among("ira~o", -1, 1), new Among("ar", -1, 1), new Among("er", -1, 1), new Among("ir", -1, 1), new Among("as", -1, 1), new Among("adas", 47, 1), new Among("idas", 47, 1), new Among("ias", 47, 1), new Among("arias", 50, 1), new Among("erias", 50, 1), new Among("irias", 50, 1), new Among("aras", 47, 1), new Among("eras", 47, 1), new Among("iras", 47, 1), new Among("avas", 47, 1), new Among("es", -1, 1), new Among("ardes", 58, 1), new Among("erdes", 58, 1), new Among("irdes", 58, 1), new Among("ares", 58, 1), new Among("eres", 58, 1), new Among("ires", 58, 1), new Among("asses", 58, 1), new Among("esses", 58, 1), new Among("isses", 58, 1), new Among("astes", 58, 1), new Among("estes", 58, 1), new Among("istes", 58, 1), new Among("is", -1, 1), new Among("ais", 71, 1), new Among("eis", 71, 1), new Among("areis", 73, 1), new Among("ereis", 73, 1), new Among("ireis", 73, 1), new Among("\u00E1reis", 73, 1), new Among("\u00E9reis", 73, 1), new Among("\u00EDreis", 73, 1), new Among("\u00E1sseis", 73, 1), new Among("\u00E9sseis", 73, 1), new Among("\u00EDsseis", 73, 1), new Among("\u00E1veis", 73, 1), new Among("\u00EDeis", 73, 1), new Among("ar\u00EDeis", 84, 1), new Among("er\u00EDeis", 84, 1), new Among("ir\u00EDeis", 84, 1), new Among("ados", -1, 1), new Among("idos", -1, 1), new Among("amos", -1, 1), new Among("\u00E1ramos", 90, 1), new Among("\u00E9ramos", 90, 1), new Among("\u00EDramos", 90, 1), new Among("\u00E1vamos", 90, 1), new Among("\u00EDamos", 90, 1), new Among("ar\u00EDamos", 95, 1), new Among("er\u00EDamos", 95, 1), new Among("ir\u00EDamos", 95, 1), new Among("emos", -1, 1), new Among("aremos", 99, 1), new Among("eremos", 99, 1), new Among("iremos", 99, 1), new Among("\u00E1ssemos", 99, 1), new Among("\u00EAssemos", 99, 1), new Among("\u00EDssemos", 99, 1), new Among("imos", -1, 1), new Among("armos", -1, 1), new Among("ermos", -1, 1), new Among("irmos", -1, 1), new Among("\u00E1mos", -1, 1), new Among("ar\u00E1s", -1, 1), new Among("er\u00E1s", -1, 1), new Among("ir\u00E1s", -1, 1), new Among("eu", -1, 1), new Among("iu", -1, 1), new Among("ou", -1, 1), new Among("ar\u00E1", -1, 1), new Among("er\u00E1", -1, 1), new Among("ir\u00E1", -1, 1) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_7", function () { + return [ new Among("a", -1, 1), new Among("i", -1, 1), new Among("o", -1, 1), new Among("os", -1, 1), new Among("\u00E1", -1, 1), new Among("\u00ED", -1, 1), new Among("\u00F3", -1, 1) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_8", function () { + return [ new Among("e", -1, 1), new Among("\u00E7", -1, 2), new Among("\u00E9", -1, 1), new Among("\u00EA", -1, 1) ]; +}); +PortugueseStemmer.g_v = [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 19, 12, 2 ]; + +var $__jsx_classMap = { + "src/among.jsx": { + Among: Among, + Among$SII: Among, + Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$0 + }, + "src/stemmer.jsx": { + Stemmer: Stemmer, + Stemmer$: Stemmer + }, + "src/base-stemmer.jsx": { + BaseStemmer: BaseStemmer, + BaseStemmer$: BaseStemmer + }, + "src/portuguese-stemmer.jsx": { + PortugueseStemmer: PortugueseStemmer, + PortugueseStemmer$: PortugueseStemmer + } +}; + + +})(JSX); + +var Among = JSX.require("src/among.jsx").Among; +var Among$SII = JSX.require("src/among.jsx").Among$SII; +var Stemmer = JSX.require("src/stemmer.jsx").Stemmer; +var BaseStemmer = JSX.require("src/base-stemmer.jsx").BaseStemmer; +var PortugueseStemmer = JSX.require("src/portuguese-stemmer.jsx").PortugueseStemmer; diff --git a/sphinx/sphinx/search/non-minified-js/romanian-stemmer.js b/sphinx/sphinx/search/non-minified-js/romanian-stemmer.js new file mode 100644 index 0000000..f71f44a --- /dev/null +++ b/sphinx/sphinx/search/non-minified-js/romanian-stemmer.js @@ -0,0 +1,2694 @@ +// generatedy by JSX compiler 0.9.89 (2014-05-20 06:01:03 +0900; 8e8c6105f36f3dfe440ea026a3c93a3444977102) +var JSX = {}; +(function (JSX) { +/** + * extends the class + */ +function $__jsx_extend(derivations, base) { + var ctor = function () {}; + ctor.prototype = base.prototype; + var proto = new ctor(); + for (var i in derivations) { + derivations[i].prototype = proto; + } +} + +/** + * copies the implementations from source interface to target + */ +function $__jsx_merge_interface(target, source) { + for (var k in source.prototype) + if (source.prototype.hasOwnProperty(k)) + target.prototype[k] = source.prototype[k]; +} + +/** + * defers the initialization of the property + */ +function $__jsx_lazy_init(obj, prop, func) { + function reset(obj, prop, value) { + delete obj[prop]; + obj[prop] = value; + return value; + } + + Object.defineProperty(obj, prop, { + get: function () { + return reset(obj, prop, func()); + }, + set: function (v) { + reset(obj, prop, v); + }, + enumerable: true, + configurable: true + }); +} + +var $__jsx_imul = Math.imul; +if (typeof $__jsx_imul === "undefined") { + $__jsx_imul = function (a, b) { + var ah = (a >>> 16) & 0xffff; + var al = a & 0xffff; + var bh = (b >>> 16) & 0xffff; + var bl = b & 0xffff; + return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0); + }; +} + +/** + * fused int-ops with side-effects + */ +function $__jsx_ipadd(o, p, r) { + return o[p] = (o[p] + r) | 0; +} +function $__jsx_ipsub(o, p, r) { + return o[p] = (o[p] - r) | 0; +} +function $__jsx_ipmul(o, p, r) { + return o[p] = $__jsx_imul(o[p], r); +} +function $__jsx_ipdiv(o, p, r) { + return o[p] = (o[p] / r) | 0; +} +function $__jsx_ipmod(o, p, r) { + return o[p] = (o[p] % r) | 0; +} +function $__jsx_ippostinc(o, p) { + var v = o[p]; + o[p] = (v + 1) | 0; + return v; +} +function $__jsx_ippostdec(o, p) { + var v = o[p]; + o[p] = (v - 1) | 0; + return v; +} + +/** + * non-inlined version of Array#each + */ +function $__jsx_forEach(o, f) { + var l = o.length; + for (var i = 0; i < l; ++i) + f(o[i]); +} + +/* + * global functions, renamed to avoid conflict with local variable names + */ +var $__jsx_parseInt = parseInt; +var $__jsx_parseFloat = parseFloat; +function $__jsx_isNaN(n) { return n !== n; } +var $__jsx_isFinite = isFinite; + +var $__jsx_encodeURIComponent = encodeURIComponent; +var $__jsx_decodeURIComponent = decodeURIComponent; +var $__jsx_encodeURI = encodeURI; +var $__jsx_decodeURI = decodeURI; + +var $__jsx_ObjectToString = Object.prototype.toString; +var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty; + +/* + * profiler object, initialized afterwards + */ +function $__jsx_profiler() { +} + +/* + * public interface to JSX code + */ +JSX.require = function (path) { + var m = $__jsx_classMap[path]; + return m !== undefined ? m : null; +}; + +JSX.profilerIsRunning = function () { + return $__jsx_profiler.getResults != null; +}; + +JSX.getProfileResults = function () { + return ($__jsx_profiler.getResults || function () { return {}; })(); +}; + +JSX.postProfileResults = function (url, cb) { + if ($__jsx_profiler.postResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.postResults(url, cb); +}; + +JSX.resetProfileResults = function () { + if ($__jsx_profiler.resetResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.resetResults(); +}; +JSX.DEBUG = false; +var GeneratorFunction$0 = +(function () { + try { + return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); + } catch (e) { + return function GeneratorFunction () {}; + } +})(); +var __jsx_generator_object$0 = +(function () { + function __jsx_generator_object() { + this.__next = 0; + this.__loop = null; + this.__seed = null; + this.__value = undefined; + this.__status = 0; // SUSPENDED: 0, ACTIVE: 1, DEAD: 2 + } + + __jsx_generator_object.prototype.next = function (seed) { + switch (this.__status) { + case 0: + this.__status = 1; + this.__seed = seed; + + // go next! + this.__loop(this.__next); + + var done = false; + if (this.__next != -1) { + this.__status = 0; + } else { + this.__status = 2; + done = true; + } + return { value: this.__value, done: done }; + case 1: + throw new Error("Generator is already running"); + case 2: + throw new Error("Generator is already finished"); + default: + throw new Error("Unexpected generator internal state"); + } + }; + + return __jsx_generator_object; +}()); +function Among(s, substring_i, result) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = null; + this.instance = null; +}; + +function Among$0(s, substring_i, result, method, instance) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = method; + this.instance = instance; +}; + +$__jsx_extend([Among, Among$0], Object); +function Stemmer() { +}; + +$__jsx_extend([Stemmer], Object); +function BaseStemmer() { + var current$0; + var cursor$0; + var limit$0; + this.cache = ({ }); + current$0 = this.current = ""; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +$__jsx_extend([BaseStemmer], Stemmer); +BaseStemmer.prototype.setCurrent$S = function (value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = this.current = value; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + + +function BaseStemmer$setCurrent$LBaseStemmer$S($this, value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = $this.current = value; + cursor$0 = $this.cursor = 0; + limit$0 = $this.limit = current$0.length; + $this.limit_backward = 0; + $this.bra = cursor$0; + $this.ket = limit$0; +}; + +BaseStemmer.setCurrent$LBaseStemmer$S = BaseStemmer$setCurrent$LBaseStemmer$S; + +BaseStemmer.prototype.getCurrent$ = function () { + return this.current; +}; + + +function BaseStemmer$getCurrent$LBaseStemmer$($this) { + return $this.current; +}; + +BaseStemmer.getCurrent$LBaseStemmer$ = BaseStemmer$getCurrent$LBaseStemmer$; + +BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; +}; + + +function BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$($this, other) { + $this.current = other.current; + $this.cursor = other.cursor; + $this.limit = other.limit; + $this.limit_backward = other.limit_backward; + $this.bra = other.bra; + $this.ket = other.ket; +}; + +BaseStemmer.copy_from$LBaseStemmer$LBaseStemmer$ = BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$; + +BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping$LBaseStemmer$AIII = BaseStemmer$in_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping_b$LBaseStemmer$AIII = BaseStemmer$in_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping$LBaseStemmer$AIII = BaseStemmer$out_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping_b$LBaseStemmer$AIII = BaseStemmer$out_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range$LBaseStemmer$II = BaseStemmer$in_range$LBaseStemmer$II; + +BaseStemmer.prototype.in_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range_b$LBaseStemmer$II = BaseStemmer$in_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.out_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range$LBaseStemmer$II = BaseStemmer$out_range$LBaseStemmer$II; + +BaseStemmer.prototype.out_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range_b$LBaseStemmer$II = BaseStemmer$out_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.eq_s$IS = function (s_size, s) { + var cursor$0; + if (((this.limit - this.cursor) | 0) < s_size) { + return false; + } + if (this.current.slice(cursor$0 = this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + this.cursor = (this.cursor + s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.limit - $this.cursor) | 0) < s_size) { + return false; + } + if ($this.current.slice(cursor$0 = $this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + $this.cursor = ($this.cursor + s_size) | 0; + return true; +}; + +BaseStemmer.eq_s$LBaseStemmer$IS = BaseStemmer$eq_s$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) { + var cursor$0; + if (((this.cursor - this.limit_backward) | 0) < s_size) { + return false; + } + if (this.current.slice((((cursor$0 = this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + this.cursor = (this.cursor - s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.cursor - $this.limit_backward) | 0) < s_size) { + return false; + } + if ($this.current.slice((((cursor$0 = $this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + $this.cursor = ($this.cursor - s_size) | 0; + return true; +}; + +BaseStemmer.eq_s_b$LBaseStemmer$IS = BaseStemmer$eq_s_b$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_v$S = function (s) { + return BaseStemmer$eq_s$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v$LBaseStemmer$S = BaseStemmer$eq_v$LBaseStemmer$S; + +BaseStemmer.prototype.eq_v_b$S = function (s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v_b$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v_b$LBaseStemmer$S = BaseStemmer$eq_v_b$LBaseStemmer$S; + +BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + l = this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + l = $this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + $this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among$LBaseStemmer$ALAmong$I = BaseStemmer$find_among$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + lb = this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(this); + this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + lb = $this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method($this); + $this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among_b$LBaseStemmer$ALAmong$I = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit = (this.limit + adjustment) | 0; + if (this.cursor >= c_ket) { + this.cursor = (this.cursor + adjustment) | 0; + } else if (this.cursor > c_bra) { + this.cursor = c_bra; + } + return (adjustment | 0); +}; + + +function BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + $this.current = $this.current.slice(0, c_bra) + s + $this.current.slice(c_ket); + $this.limit = ($this.limit + adjustment) | 0; + if ($this.cursor >= c_ket) { + $this.cursor = ($this.cursor + adjustment) | 0; + } else if ($this.cursor > c_bra) { + $this.cursor = c_bra; + } + return (adjustment | 0); +}; + +BaseStemmer.replace_s$LBaseStemmer$IIS = BaseStemmer$replace_s$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_check$ = function () { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true); +}; + + +function BaseStemmer$slice_check$LBaseStemmer$($this) { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true); +}; + +BaseStemmer.slice_check$LBaseStemmer$ = BaseStemmer$slice_check$LBaseStemmer$; + +BaseStemmer.prototype.slice_from$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS(this, this.bra, this.ket, s); + result = true; + } + return result; +}; + + +function BaseStemmer$slice_from$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS($this, $this.bra, $this.ket, s); + result = true; + } + return result; +}; + +BaseStemmer.slice_from$LBaseStemmer$S = BaseStemmer$slice_from$LBaseStemmer$S; + +BaseStemmer.prototype.slice_del$ = function () { + return BaseStemmer$slice_from$LBaseStemmer$S(this, ""); +}; + + +function BaseStemmer$slice_del$LBaseStemmer$($this) { + return BaseStemmer$slice_from$LBaseStemmer$S($this, ""); +}; + +BaseStemmer.slice_del$LBaseStemmer$ = BaseStemmer$slice_del$LBaseStemmer$; + +BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS(this, c_bra, c_ket, s); + if (c_bra <= this.bra) { + this.bra = (this.bra + adjustment) | 0; + } + if (c_bra <= this.ket) { + this.ket = (this.ket + adjustment) | 0; + } +}; + + +function BaseStemmer$insert$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s); + if (c_bra <= $this.bra) { + $this.bra = ($this.bra + adjustment) | 0; + } + if (c_bra <= $this.ket) { + $this.ket = ($this.ket + adjustment) | 0; + } +}; + +BaseStemmer.insert$LBaseStemmer$IIS = BaseStemmer$insert$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_to$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + result = this.current.slice(this.bra, this.ket); + } + return result; +}; + + +function BaseStemmer$slice_to$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + result = $this.current.slice($this.bra, $this.ket); + } + return result; +}; + +BaseStemmer.slice_to$LBaseStemmer$S = BaseStemmer$slice_to$LBaseStemmer$S; + +BaseStemmer.prototype.assign_to$S = function (s) { + return this.current.slice(0, this.limit); +}; + + +function BaseStemmer$assign_to$LBaseStemmer$S($this, s) { + return $this.current.slice(0, $this.limit); +}; + +BaseStemmer.assign_to$LBaseStemmer$S = BaseStemmer$assign_to$LBaseStemmer$S; + +BaseStemmer.prototype.stem$ = function () { + return false; +}; + + +BaseStemmer.prototype.stemWord$S = function (word) { + var result; + var current$0; + var cursor$0; + var limit$0; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + return result; +}; + +BaseStemmer.prototype.stemWord = BaseStemmer.prototype.stemWord$S; + +BaseStemmer.prototype.stemWords$AS = function (words) { + var results; + var i; + var word; + var result; + var current$0; + var cursor$0; + var limit$0; + results = [ ]; + for (i = 0; i < words.length; i++) { + word = words[i]; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + results.push(result); + } + return results; +}; + +BaseStemmer.prototype.stemWords = BaseStemmer.prototype.stemWords$AS; + +function RomanianStemmer() { + BaseStemmer.call(this); + this.B_standard_suffix_removed = false; + this.I_p2 = 0; + this.I_p1 = 0; + this.I_pV = 0; +}; + +$__jsx_extend([RomanianStemmer], BaseStemmer); +RomanianStemmer.prototype.copy_from$LRomanianStemmer$ = function (other) { + this.B_standard_suffix_removed = other.B_standard_suffix_removed; + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + this.I_pV = other.I_pV; + BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$(this, other); +}; + +RomanianStemmer.prototype.copy_from = RomanianStemmer.prototype.copy_from$LRomanianStemmer$; + +RomanianStemmer.prototype.r_prelude$ = function () { + var v_1; + var v_2; + var v_3; + var lab1; + var lab3; + var lab4; + var lab5; + var cursor$0; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + golab2: + while (true) { + v_2 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, RomanianStemmer.g_v, 97, 259)) { + break lab3; + } + this.bra = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_3 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "u")) { + break lab5; + } + this.ket = this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, RomanianStemmer.g_v, 97, 259)) { + break lab5; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "U")) { + return false; + } + break lab4; + } + this.cursor = v_3; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "i")) { + break lab3; + } + this.ket = this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, RomanianStemmer.g_v, 97, 259)) { + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "I")) { + return false; + } + } + this.cursor = v_2; + break golab2; + } + cursor$0 = this.cursor = v_2; + if (cursor$0 >= this.limit) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +RomanianStemmer.prototype.r_prelude = RomanianStemmer.prototype.r_prelude$; + +function RomanianStemmer$r_prelude$LRomanianStemmer$($this) { + var v_1; + var v_2; + var v_3; + var lab1; + var lab3; + var lab4; + var lab5; + var cursor$0; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + golab2: + while (true) { + v_2 = $this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, RomanianStemmer.g_v, 97, 259)) { + break lab3; + } + $this.bra = $this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_3 = $this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "u")) { + break lab5; + } + $this.ket = $this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, RomanianStemmer.g_v, 97, 259)) { + break lab5; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "U")) { + return false; + } + break lab4; + } + $this.cursor = v_3; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "i")) { + break lab3; + } + $this.ket = $this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, RomanianStemmer.g_v, 97, 259)) { + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "I")) { + return false; + } + } + $this.cursor = v_2; + break golab2; + } + cursor$0 = $this.cursor = v_2; + if (cursor$0 >= $this.limit) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + continue replab0; + } + $this.cursor = v_1; + break replab0; + } + return true; +}; + +RomanianStemmer.r_prelude$LRomanianStemmer$ = RomanianStemmer$r_prelude$LRomanianStemmer$; + +RomanianStemmer.prototype.r_mark_regions$ = function () { + var v_1; + var v_2; + var v_3; + var v_6; + var v_8; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab6; + var lab8; + var lab9; + var lab10; + var lab12; + var lab13; + var lab15; + var lab17; + var lab19; + var lab21; + var limit$0; + var cursor$0; + var $__jsx_postinc_t; + this.I_pV = limit$0 = this.limit; + this.I_p1 = limit$0; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, RomanianStemmer.g_v, 97, 259)) { + break lab2; + } + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, RomanianStemmer.g_v, 97, 259)) { + break lab4; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, RomanianStemmer.g_v, 97, 259)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + break lab4; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + break lab3; + } + this.cursor = v_3; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, RomanianStemmer.g_v, 97, 259)) { + break lab2; + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, RomanianStemmer.g_v, 97, 259)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab2; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + break lab1; + } + this.cursor = v_2; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, RomanianStemmer.g_v, 97, 259)) { + break lab0; + } + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_6 = this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, RomanianStemmer.g_v, 97, 259)) { + break lab10; + } + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, RomanianStemmer.g_v, 97, 259)) { + break lab12; + } + break golab11; + } + if (this.cursor >= this.limit) { + break lab10; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + break lab9; + } + this.cursor = v_6; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, RomanianStemmer.g_v, 97, 259)) { + break lab0; + } + if (this.cursor >= this.limit) { + break lab0; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + this.I_pV = this.cursor; + } + cursor$0 = this.cursor = v_1; + v_8 = cursor$0; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + golab14: + while (true) { + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, RomanianStemmer.g_v, 97, 259)) { + break lab15; + } + break golab14; + } + if (this.cursor >= this.limit) { + break lab13; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab16: + while (true) { + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, RomanianStemmer.g_v, 97, 259)) { + break lab17; + } + break golab16; + } + if (this.cursor >= this.limit) { + break lab13; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p1 = this.cursor; + golab18: + while (true) { + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, RomanianStemmer.g_v, 97, 259)) { + break lab19; + } + break golab18; + } + if (this.cursor >= this.limit) { + break lab13; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab20: + while (true) { + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, RomanianStemmer.g_v, 97, 259)) { + break lab21; + } + break golab20; + } + if (this.cursor >= this.limit) { + break lab13; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p2 = this.cursor; + } + this.cursor = v_8; + return true; +}; + +RomanianStemmer.prototype.r_mark_regions = RomanianStemmer.prototype.r_mark_regions$; + +function RomanianStemmer$r_mark_regions$LRomanianStemmer$($this) { + var v_1; + var v_2; + var v_3; + var v_6; + var v_8; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab6; + var lab8; + var lab9; + var lab10; + var lab12; + var lab13; + var lab15; + var lab17; + var lab19; + var lab21; + var limit$0; + var cursor$0; + var $__jsx_postinc_t; + $this.I_pV = limit$0 = $this.limit; + $this.I_p1 = limit$0; + $this.I_p2 = limit$0; + v_1 = $this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = $this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, RomanianStemmer.g_v, 97, 259)) { + break lab2; + } + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = $this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, RomanianStemmer.g_v, 97, 259)) { + break lab4; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, RomanianStemmer.g_v, 97, 259)) { + break lab6; + } + break golab5; + } + if ($this.cursor >= $this.limit) { + break lab4; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + break lab3; + } + $this.cursor = v_3; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, RomanianStemmer.g_v, 97, 259)) { + break lab2; + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, RomanianStemmer.g_v, 97, 259)) { + break lab8; + } + break golab7; + } + if ($this.cursor >= $this.limit) { + break lab2; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + break lab1; + } + $this.cursor = v_2; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, RomanianStemmer.g_v, 97, 259)) { + break lab0; + } + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_6 = $this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, RomanianStemmer.g_v, 97, 259)) { + break lab10; + } + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, RomanianStemmer.g_v, 97, 259)) { + break lab12; + } + break golab11; + } + if ($this.cursor >= $this.limit) { + break lab10; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + break lab9; + } + $this.cursor = v_6; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, RomanianStemmer.g_v, 97, 259)) { + break lab0; + } + if ($this.cursor >= $this.limit) { + break lab0; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + $this.I_pV = $this.cursor; + } + cursor$0 = $this.cursor = v_1; + v_8 = cursor$0; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + golab14: + while (true) { + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, RomanianStemmer.g_v, 97, 259)) { + break lab15; + } + break golab14; + } + if ($this.cursor >= $this.limit) { + break lab13; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab16: + while (true) { + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, RomanianStemmer.g_v, 97, 259)) { + break lab17; + } + break golab16; + } + if ($this.cursor >= $this.limit) { + break lab13; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p1 = $this.cursor; + golab18: + while (true) { + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, RomanianStemmer.g_v, 97, 259)) { + break lab19; + } + break golab18; + } + if ($this.cursor >= $this.limit) { + break lab13; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab20: + while (true) { + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, RomanianStemmer.g_v, 97, 259)) { + break lab21; + } + break golab20; + } + if ($this.cursor >= $this.limit) { + break lab13; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p2 = $this.cursor; + } + $this.cursor = v_8; + return true; +}; + +RomanianStemmer.r_mark_regions$LRomanianStemmer$ = RomanianStemmer$r_mark_regions$LRomanianStemmer$; + +RomanianStemmer.prototype.r_postlude$ = function () { + var among_var; + var v_1; + var lab1; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I(this, RomanianStemmer.a_0, 3); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "i")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "u")) { + return false; + } + break; + case 3: + if (this.cursor >= this.limit) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +RomanianStemmer.prototype.r_postlude = RomanianStemmer.prototype.r_postlude$; + +function RomanianStemmer$r_postlude$LRomanianStemmer$($this) { + var among_var; + var v_1; + var lab1; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + $this.bra = $this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, RomanianStemmer.a_0, 3); + if (among_var === 0) { + break lab1; + } + $this.ket = $this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "i")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "u")) { + return false; + } + break; + case 3: + if ($this.cursor >= $this.limit) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + $this.cursor = v_1; + break replab0; + } + return true; +}; + +RomanianStemmer.r_postlude$LRomanianStemmer$ = RomanianStemmer$r_postlude$LRomanianStemmer$; + +RomanianStemmer.prototype.r_RV$ = function () { + return (! (this.I_pV <= this.cursor) ? false : true); +}; + +RomanianStemmer.prototype.r_RV = RomanianStemmer.prototype.r_RV$; + +function RomanianStemmer$r_RV$LRomanianStemmer$($this) { + return (! ($this.I_pV <= $this.cursor) ? false : true); +}; + +RomanianStemmer.r_RV$LRomanianStemmer$ = RomanianStemmer$r_RV$LRomanianStemmer$; + +RomanianStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +RomanianStemmer.prototype.r_R1 = RomanianStemmer.prototype.r_R1$; + +function RomanianStemmer$r_R1$LRomanianStemmer$($this) { + return (! ($this.I_p1 <= $this.cursor) ? false : true); +}; + +RomanianStemmer.r_R1$LRomanianStemmer$ = RomanianStemmer$r_R1$LRomanianStemmer$; + +RomanianStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +RomanianStemmer.prototype.r_R2 = RomanianStemmer.prototype.r_R2$; + +function RomanianStemmer$r_R2$LRomanianStemmer$($this) { + return (! ($this.I_p2 <= $this.cursor) ? false : true); +}; + +RomanianStemmer.r_R2$LRomanianStemmer$ = RomanianStemmer$r_R2$LRomanianStemmer$; + +RomanianStemmer.prototype.r_step_0$ = function () { + var among_var; + var v_1; + var lab0; + var cursor$0; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, RomanianStemmer.a_1, 16); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "i")) { + return false; + } + break; + case 5: + v_1 = ((this.limit - this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "ab")) { + break lab0; + } + return false; + } + this.cursor = ((this.limit - v_1) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "i")) { + return false; + } + break; + case 6: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "at")) { + return false; + } + break; + case 7: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a\u0163i")) { + return false; + } + break; + } + return true; +}; + +RomanianStemmer.prototype.r_step_0 = RomanianStemmer.prototype.r_step_0$; + +function RomanianStemmer$r_step_0$LRomanianStemmer$($this) { + var among_var; + var v_1; + var lab0; + var cursor$0; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, RomanianStemmer.a_1, 16); + if (among_var === 0) { + return false; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "i")) { + return false; + } + break; + case 5: + v_1 = (($this.limit - $this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "ab")) { + break lab0; + } + return false; + } + $this.cursor = (($this.limit - v_1) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "i")) { + return false; + } + break; + case 6: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "at")) { + return false; + } + break; + case 7: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a\u0163i")) { + return false; + } + break; + } + return true; +}; + +RomanianStemmer.r_step_0$LRomanianStemmer$ = RomanianStemmer$r_step_0$LRomanianStemmer$; + +RomanianStemmer.prototype.r_combo_suffix$ = function () { + var among_var; + var v_1; + var cursor$0; + var cursor$1; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + this.ket = cursor$0; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, RomanianStemmer.a_2, 46); + if (among_var === 0) { + return false; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_p1 <= cursor$1) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "abil")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ibil")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "iv")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ic")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "at")) { + return false; + } + break; + case 6: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "it")) { + return false; + } + break; + } + this.B_standard_suffix_removed = true; + this.cursor = ((this.limit - v_1) | 0); + return true; +}; + +RomanianStemmer.prototype.r_combo_suffix = RomanianStemmer.prototype.r_combo_suffix$; + +function RomanianStemmer$r_combo_suffix$LRomanianStemmer$($this) { + var among_var; + var v_1; + var cursor$0; + var cursor$1; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + $this.ket = cursor$0; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, RomanianStemmer.a_2, 46); + if (among_var === 0) { + return false; + } + $this.bra = cursor$1 = $this.cursor; + if (! (! ($this.I_p1 <= cursor$1) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "abil")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ibil")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "iv")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ic")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "at")) { + return false; + } + break; + case 6: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "it")) { + return false; + } + break; + } + $this.B_standard_suffix_removed = true; + $this.cursor = (($this.limit - v_1) | 0); + return true; +}; + +RomanianStemmer.r_combo_suffix$LRomanianStemmer$ = RomanianStemmer$r_combo_suffix$LRomanianStemmer$; + +RomanianStemmer.prototype.r_standard_suffix$ = function () { + var among_var; + var v_1; + var lab1; + var cursor$0; + this.B_standard_suffix_removed = false; +replab0: + while (true) { + v_1 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! RomanianStemmer$r_combo_suffix$LRomanianStemmer$(this)) { + break lab1; + } + continue replab0; + } + this.cursor = ((this.limit - v_1) | 0); + break replab0; + } + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, RomanianStemmer.a_3, 62); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u0163")) { + return false; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "t")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ist")) { + return false; + } + break; + } + this.B_standard_suffix_removed = true; + return true; +}; + +RomanianStemmer.prototype.r_standard_suffix = RomanianStemmer.prototype.r_standard_suffix$; + +function RomanianStemmer$r_standard_suffix$LRomanianStemmer$($this) { + var among_var; + var v_1; + var lab1; + var cursor$0; + $this.B_standard_suffix_removed = false; +replab0: + while (true) { + v_1 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! RomanianStemmer$r_combo_suffix$LRomanianStemmer$($this)) { + break lab1; + } + continue replab0; + } + $this.cursor = (($this.limit - v_1) | 0); + break replab0; + } + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, RomanianStemmer.a_3, 62); + if (among_var === 0) { + return false; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u0163")) { + return false; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "t")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ist")) { + return false; + } + break; + } + $this.B_standard_suffix_removed = true; + return true; +}; + +RomanianStemmer.r_standard_suffix$LRomanianStemmer$ = RomanianStemmer$r_standard_suffix$LRomanianStemmer$; + +RomanianStemmer.prototype.r_verb_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var lab0; + var lab1; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, RomanianStemmer.a_4, 94); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_3 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, RomanianStemmer.g_v, 97, 259)) { + break lab1; + } + break lab0; + } + this.cursor = ((this.limit - v_3) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "u")) { + this.limit_backward = v_2; + return false; + } + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + this.limit_backward = v_2; + return true; +}; + +RomanianStemmer.prototype.r_verb_suffix = RomanianStemmer.prototype.r_verb_suffix$; + +function RomanianStemmer$r_verb_suffix$LRomanianStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var lab0; + var lab1; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_pV) { + return false; + } + cursor$1 = $this.cursor = $this.I_pV; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, RomanianStemmer.a_4, 94); + if (among_var === 0) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.limit_backward = v_2; + return false; + case 1: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_3 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, RomanianStemmer.g_v, 97, 259)) { + break lab1; + } + break lab0; + } + $this.cursor = (($this.limit - v_3) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "u")) { + $this.limit_backward = v_2; + return false; + } + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + $this.limit_backward = v_2; + return true; +}; + +RomanianStemmer.r_verb_suffix$LRomanianStemmer$ = RomanianStemmer$r_verb_suffix$LRomanianStemmer$; + +RomanianStemmer.prototype.r_vowel_suffix$ = function () { + var among_var; + var cursor$0; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, RomanianStemmer.a_5, 5); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_pV <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +RomanianStemmer.prototype.r_vowel_suffix = RomanianStemmer.prototype.r_vowel_suffix$; + +function RomanianStemmer$r_vowel_suffix$LRomanianStemmer$($this) { + var among_var; + var cursor$0; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, RomanianStemmer.a_5, 5); + if (among_var === 0) { + return false; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_pV <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +RomanianStemmer.r_vowel_suffix$LRomanianStemmer$ = RomanianStemmer$r_vowel_suffix$LRomanianStemmer$; + +RomanianStemmer.prototype.stem$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_8; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var cursor$0; + var cursor$1; + var limit$0; + var cursor$2; + var limit$1; + var cursor$3; + var limit$2; + var cursor$4; + var cursor$5; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! RomanianStemmer$r_prelude$LRomanianStemmer$(this)) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! RomanianStemmer$r_mark_regions$LRomanianStemmer$(this)) { + break lab1; + } + } + cursor$1 = this.cursor = v_2; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = limit$0 = this.limit; + v_3 = ((limit$0 - cursor$2) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! RomanianStemmer$r_step_0$LRomanianStemmer$(this)) { + break lab2; + } + } + cursor$3 = this.cursor = (((limit$1 = this.limit) - v_3) | 0); + v_4 = ((limit$1 - cursor$3) | 0); + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! RomanianStemmer$r_standard_suffix$LRomanianStemmer$(this)) { + break lab3; + } + } + cursor$4 = this.cursor = (((limit$2 = this.limit) - v_4) | 0); + v_5 = ((limit$2 - cursor$4) | 0); + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_6 = ((this.limit - this.cursor) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.B_standard_suffix_removed) { + break lab6; + } + break lab5; + } + this.cursor = ((this.limit - v_6) | 0); + if (! RomanianStemmer$r_verb_suffix$LRomanianStemmer$(this)) { + break lab4; + } + } + } + this.cursor = ((this.limit - v_5) | 0); + lab7 = true; +lab7: + while (lab7 === true) { + lab7 = false; + if (! RomanianStemmer$r_vowel_suffix$LRomanianStemmer$(this)) { + break lab7; + } + } + cursor$5 = this.cursor = this.limit_backward; + v_8 = cursor$5; + lab8 = true; +lab8: + while (lab8 === true) { + lab8 = false; + if (! RomanianStemmer$r_postlude$LRomanianStemmer$(this)) { + break lab8; + } + } + this.cursor = v_8; + return true; +}; + +RomanianStemmer.prototype.stem = RomanianStemmer.prototype.stem$; + +RomanianStemmer.prototype.equals$X = function (o) { + return o instanceof RomanianStemmer; +}; + +RomanianStemmer.prototype.equals = RomanianStemmer.prototype.equals$X; + +function RomanianStemmer$equals$LRomanianStemmer$X($this, o) { + return o instanceof RomanianStemmer; +}; + +RomanianStemmer.equals$LRomanianStemmer$X = RomanianStemmer$equals$LRomanianStemmer$X; + +RomanianStemmer.prototype.hashCode$ = function () { + var classname; + var hash; + var i; + var char; + classname = "RomanianStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +RomanianStemmer.prototype.hashCode = RomanianStemmer.prototype.hashCode$; + +function RomanianStemmer$hashCode$LRomanianStemmer$($this) { + var classname; + var hash; + var i; + var char; + classname = "RomanianStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +RomanianStemmer.hashCode$LRomanianStemmer$ = RomanianStemmer$hashCode$LRomanianStemmer$; + +RomanianStemmer.serialVersionUID = 1; +$__jsx_lazy_init(RomanianStemmer, "methodObject", function () { + return new RomanianStemmer(); +}); +$__jsx_lazy_init(RomanianStemmer, "a_0", function () { + return [ new Among("", -1, 3), new Among("I", 0, 1), new Among("U", 0, 2) ]; +}); +$__jsx_lazy_init(RomanianStemmer, "a_1", function () { + return [ new Among("ea", -1, 3), new Among("a\u0163ia", -1, 7), new Among("aua", -1, 2), new Among("iua", -1, 4), new Among("a\u0163ie", -1, 7), new Among("ele", -1, 3), new Among("ile", -1, 5), new Among("iile", 6, 4), new Among("iei", -1, 4), new Among("atei", -1, 6), new Among("ii", -1, 4), new Among("ului", -1, 1), new Among("ul", -1, 1), new Among("elor", -1, 3), new Among("ilor", -1, 4), new Among("iilor", 14, 4) ]; +}); +$__jsx_lazy_init(RomanianStemmer, "a_2", function () { + return [ new Among("icala", -1, 4), new Among("iciva", -1, 4), new Among("ativa", -1, 5), new Among("itiva", -1, 6), new Among("icale", -1, 4), new Among("a\u0163iune", -1, 5), new Among("i\u0163iune", -1, 6), new Among("atoare", -1, 5), new Among("itoare", -1, 6), new Among("\u0103toare", -1, 5), new Among("icitate", -1, 4), new Among("abilitate", -1, 1), new Among("ibilitate", -1, 2), new Among("ivitate", -1, 3), new Among("icive", -1, 4), new Among("ative", -1, 5), new Among("itive", -1, 6), new Among("icali", -1, 4), new Among("atori", -1, 5), new Among("icatori", 18, 4), new Among("itori", -1, 6), new Among("\u0103tori", -1, 5), new Among("icitati", -1, 4), new Among("abilitati", -1, 1), new Among("ivitati", -1, 3), new Among("icivi", -1, 4), new Among("ativi", -1, 5), new Among("itivi", -1, 6), new Among("icit\u0103i", -1, 4), new Among("abilit\u0103i", -1, 1), new Among("ivit\u0103i", -1, 3), new Among("icit\u0103\u0163i", -1, 4), new Among("abilit\u0103\u0163i", -1, 1), new Among("ivit\u0103\u0163i", -1, 3), new Among("ical", -1, 4), new Among("ator", -1, 5), new Among("icator", 35, 4), new Among("itor", -1, 6), new Among("\u0103tor", -1, 5), new Among("iciv", -1, 4), new Among("ativ", -1, 5), new Among("itiv", -1, 6), new Among("ical\u0103", -1, 4), new Among("iciv\u0103", -1, 4), new Among("ativ\u0103", -1, 5), new Among("itiv\u0103", -1, 6) ]; +}); +$__jsx_lazy_init(RomanianStemmer, "a_3", function () { + return [ new Among("ica", -1, 1), new Among("abila", -1, 1), new Among("ibila", -1, 1), new Among("oasa", -1, 1), new Among("ata", -1, 1), new Among("ita", -1, 1), new Among("anta", -1, 1), new Among("ista", -1, 3), new Among("uta", -1, 1), new Among("iva", -1, 1), new Among("ic", -1, 1), new Among("ice", -1, 1), new Among("abile", -1, 1), new Among("ibile", -1, 1), new Among("isme", -1, 3), new Among("iune", -1, 2), new Among("oase", -1, 1), new Among("ate", -1, 1), new Among("itate", 17, 1), new Among("ite", -1, 1), new Among("ante", -1, 1), new Among("iste", -1, 3), new Among("ute", -1, 1), new Among("ive", -1, 1), new Among("ici", -1, 1), new Among("abili", -1, 1), new Among("ibili", -1, 1), new Among("iuni", -1, 2), new Among("atori", -1, 1), new Among("osi", -1, 1), new Among("ati", -1, 1), new Among("itati", 30, 1), new Among("iti", -1, 1), new Among("anti", -1, 1), new Among("isti", -1, 3), new Among("uti", -1, 1), new Among("i\u015Fti", -1, 3), new Among("ivi", -1, 1), new Among("it\u0103i", -1, 1), new Among("o\u015Fi", -1, 1), new Among("it\u0103\u0163i", -1, 1), new Among("abil", -1, 1), new Among("ibil", -1, 1), new Among("ism", -1, 3), new Among("ator", -1, 1), new Among("os", -1, 1), new Among("at", -1, 1), new Among("it", -1, 1), new Among("ant", -1, 1), new Among("ist", -1, 3), new Among("ut", -1, 1), new Among("iv", -1, 1), new Among("ic\u0103", -1, 1), new Among("abil\u0103", -1, 1), new Among("ibil\u0103", -1, 1), new Among("oas\u0103", -1, 1), new Among("at\u0103", -1, 1), new Among("it\u0103", -1, 1), new Among("ant\u0103", -1, 1), new Among("ist\u0103", -1, 3), new Among("ut\u0103", -1, 1), new Among("iv\u0103", -1, 1) ]; +}); +$__jsx_lazy_init(RomanianStemmer, "a_4", function () { + return [ new Among("ea", -1, 1), new Among("ia", -1, 1), new Among("esc", -1, 1), new Among("\u0103sc", -1, 1), new Among("ind", -1, 1), new Among("\u00E2nd", -1, 1), new Among("are", -1, 1), new Among("ere", -1, 1), new Among("ire", -1, 1), new Among("\u00E2re", -1, 1), new Among("se", -1, 2), new Among("ase", 10, 1), new Among("sese", 10, 2), new Among("ise", 10, 1), new Among("use", 10, 1), new Among("\u00E2se", 10, 1), new Among("e\u015Fte", -1, 1), new Among("\u0103\u015Fte", -1, 1), new Among("eze", -1, 1), new Among("ai", -1, 1), new Among("eai", 19, 1), new Among("iai", 19, 1), new Among("sei", -1, 2), new Among("e\u015Fti", -1, 1), new Among("\u0103\u015Fti", -1, 1), new Among("ui", -1, 1), new Among("ezi", -1, 1), new Among("\u00E2i", -1, 1), new Among("a\u015Fi", -1, 1), new Among("se\u015Fi", -1, 2), new Among("ase\u015Fi", 29, 1), new Among("sese\u015Fi", 29, 2), new Among("ise\u015Fi", 29, 1), new Among("use\u015Fi", 29, 1), new Among("\u00E2se\u015Fi", 29, 1), new Among("i\u015Fi", -1, 1), new Among("u\u015Fi", -1, 1), new Among("\u00E2\u015Fi", -1, 1), new Among("a\u0163i", -1, 2), new Among("ea\u0163i", 38, 1), new Among("ia\u0163i", 38, 1), new Among("e\u0163i", -1, 2), new Among("i\u0163i", -1, 2), new Among("\u00E2\u0163i", -1, 2), new Among("ar\u0103\u0163i", -1, 1), new Among("ser\u0103\u0163i", -1, 2), new Among("aser\u0103\u0163i", 45, 1), new Among("seser\u0103\u0163i", 45, 2), new Among("iser\u0103\u0163i", 45, 1), new Among("user\u0103\u0163i", 45, 1), new Among("\u00E2ser\u0103\u0163i", 45, 1), new Among("ir\u0103\u0163i", -1, 1), new Among("ur\u0103\u0163i", -1, 1), new Among("\u00E2r\u0103\u0163i", -1, 1), new Among("am", -1, 1), new Among("eam", 54, 1), new Among("iam", 54, 1), new Among("em", -1, 2), new Among("asem", 57, 1), new Among("sesem", 57, 2), new Among("isem", 57, 1), new Among("usem", 57, 1), new Among("\u00E2sem", 57, 1), new Among("im", -1, 2), new Among("\u00E2m", -1, 2), new Among("\u0103m", -1, 2), new Among("ar\u0103m", 65, 1), new Among("ser\u0103m", 65, 2), new Among("aser\u0103m", 67, 1), new Among("seser\u0103m", 67, 2), new Among("iser\u0103m", 67, 1), new Among("user\u0103m", 67, 1), new Among("\u00E2ser\u0103m", 67, 1), new Among("ir\u0103m", 65, 1), new Among("ur\u0103m", 65, 1), new Among("\u00E2r\u0103m", 65, 1), new Among("au", -1, 1), new Among("eau", 76, 1), new Among("iau", 76, 1), new Among("indu", -1, 1), new Among("\u00E2ndu", -1, 1), new Among("ez", -1, 1), new Among("easc\u0103", -1, 1), new Among("ar\u0103", -1, 1), new Among("ser\u0103", -1, 2), new Among("aser\u0103", 84, 1), new Among("seser\u0103", 84, 2), new Among("iser\u0103", 84, 1), new Among("user\u0103", 84, 1), new Among("\u00E2ser\u0103", 84, 1), new Among("ir\u0103", -1, 1), new Among("ur\u0103", -1, 1), new Among("\u00E2r\u0103", -1, 1), new Among("eaz\u0103", -1, 1) ]; +}); +$__jsx_lazy_init(RomanianStemmer, "a_5", function () { + return [ new Among("a", -1, 1), new Among("e", -1, 1), new Among("ie", 1, 1), new Among("i", -1, 1), new Among("\u0103", -1, 1) ]; +}); +RomanianStemmer.g_v = [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 32, 0, 0, 4 ]; + +var $__jsx_classMap = { + "src/among.jsx": { + Among: Among, + Among$SII: Among, + Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$0 + }, + "src/stemmer.jsx": { + Stemmer: Stemmer, + Stemmer$: Stemmer + }, + "src/base-stemmer.jsx": { + BaseStemmer: BaseStemmer, + BaseStemmer$: BaseStemmer + }, + "src/romanian-stemmer.jsx": { + RomanianStemmer: RomanianStemmer, + RomanianStemmer$: RomanianStemmer + } +}; + + +})(JSX); + +var Among = JSX.require("src/among.jsx").Among; +var Among$SII = JSX.require("src/among.jsx").Among$SII; +var Stemmer = JSX.require("src/stemmer.jsx").Stemmer; +var BaseStemmer = JSX.require("src/base-stemmer.jsx").BaseStemmer; +var RomanianStemmer = JSX.require("src/romanian-stemmer.jsx").RomanianStemmer; diff --git a/sphinx/sphinx/search/non-minified-js/russian-stemmer.js b/sphinx/sphinx/search/non-minified-js/russian-stemmer.js new file mode 100644 index 0000000..74d6309 --- /dev/null +++ b/sphinx/sphinx/search/non-minified-js/russian-stemmer.js @@ -0,0 +1,2232 @@ +// generatedy by JSX compiler 0.9.89 (2014-05-20 06:01:03 +0900; 8e8c6105f36f3dfe440ea026a3c93a3444977102) +var JSX = {}; +(function (JSX) { +/** + * extends the class + */ +function $__jsx_extend(derivations, base) { + var ctor = function () {}; + ctor.prototype = base.prototype; + var proto = new ctor(); + for (var i in derivations) { + derivations[i].prototype = proto; + } +} + +/** + * copies the implementations from source interface to target + */ +function $__jsx_merge_interface(target, source) { + for (var k in source.prototype) + if (source.prototype.hasOwnProperty(k)) + target.prototype[k] = source.prototype[k]; +} + +/** + * defers the initialization of the property + */ +function $__jsx_lazy_init(obj, prop, func) { + function reset(obj, prop, value) { + delete obj[prop]; + obj[prop] = value; + return value; + } + + Object.defineProperty(obj, prop, { + get: function () { + return reset(obj, prop, func()); + }, + set: function (v) { + reset(obj, prop, v); + }, + enumerable: true, + configurable: true + }); +} + +var $__jsx_imul = Math.imul; +if (typeof $__jsx_imul === "undefined") { + $__jsx_imul = function (a, b) { + var ah = (a >>> 16) & 0xffff; + var al = a & 0xffff; + var bh = (b >>> 16) & 0xffff; + var bl = b & 0xffff; + return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0); + }; +} + +/** + * fused int-ops with side-effects + */ +function $__jsx_ipadd(o, p, r) { + return o[p] = (o[p] + r) | 0; +} +function $__jsx_ipsub(o, p, r) { + return o[p] = (o[p] - r) | 0; +} +function $__jsx_ipmul(o, p, r) { + return o[p] = $__jsx_imul(o[p], r); +} +function $__jsx_ipdiv(o, p, r) { + return o[p] = (o[p] / r) | 0; +} +function $__jsx_ipmod(o, p, r) { + return o[p] = (o[p] % r) | 0; +} +function $__jsx_ippostinc(o, p) { + var v = o[p]; + o[p] = (v + 1) | 0; + return v; +} +function $__jsx_ippostdec(o, p) { + var v = o[p]; + o[p] = (v - 1) | 0; + return v; +} + +/** + * non-inlined version of Array#each + */ +function $__jsx_forEach(o, f) { + var l = o.length; + for (var i = 0; i < l; ++i) + f(o[i]); +} + +/* + * global functions, renamed to avoid conflict with local variable names + */ +var $__jsx_parseInt = parseInt; +var $__jsx_parseFloat = parseFloat; +function $__jsx_isNaN(n) { return n !== n; } +var $__jsx_isFinite = isFinite; + +var $__jsx_encodeURIComponent = encodeURIComponent; +var $__jsx_decodeURIComponent = decodeURIComponent; +var $__jsx_encodeURI = encodeURI; +var $__jsx_decodeURI = decodeURI; + +var $__jsx_ObjectToString = Object.prototype.toString; +var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty; + +/* + * profiler object, initialized afterwards + */ +function $__jsx_profiler() { +} + +/* + * public interface to JSX code + */ +JSX.require = function (path) { + var m = $__jsx_classMap[path]; + return m !== undefined ? m : null; +}; + +JSX.profilerIsRunning = function () { + return $__jsx_profiler.getResults != null; +}; + +JSX.getProfileResults = function () { + return ($__jsx_profiler.getResults || function () { return {}; })(); +}; + +JSX.postProfileResults = function (url, cb) { + if ($__jsx_profiler.postResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.postResults(url, cb); +}; + +JSX.resetProfileResults = function () { + if ($__jsx_profiler.resetResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.resetResults(); +}; +JSX.DEBUG = false; +var GeneratorFunction$0 = +(function () { + try { + return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); + } catch (e) { + return function GeneratorFunction () {}; + } +})(); +var __jsx_generator_object$0 = +(function () { + function __jsx_generator_object() { + this.__next = 0; + this.__loop = null; + this.__seed = null; + this.__value = undefined; + this.__status = 0; // SUSPENDED: 0, ACTIVE: 1, DEAD: 2 + } + + __jsx_generator_object.prototype.next = function (seed) { + switch (this.__status) { + case 0: + this.__status = 1; + this.__seed = seed; + + // go next! + this.__loop(this.__next); + + var done = false; + if (this.__next != -1) { + this.__status = 0; + } else { + this.__status = 2; + done = true; + } + return { value: this.__value, done: done }; + case 1: + throw new Error("Generator is already running"); + case 2: + throw new Error("Generator is already finished"); + default: + throw new Error("Unexpected generator internal state"); + } + }; + + return __jsx_generator_object; +}()); +function Among(s, substring_i, result) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = null; + this.instance = null; +}; + +function Among$0(s, substring_i, result, method, instance) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = method; + this.instance = instance; +}; + +$__jsx_extend([Among, Among$0], Object); +function Stemmer() { +}; + +$__jsx_extend([Stemmer], Object); +function BaseStemmer() { + var current$0; + var cursor$0; + var limit$0; + this.cache = ({ }); + current$0 = this.current = ""; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +$__jsx_extend([BaseStemmer], Stemmer); +BaseStemmer.prototype.setCurrent$S = function (value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = this.current = value; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + + +function BaseStemmer$setCurrent$LBaseStemmer$S($this, value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = $this.current = value; + cursor$0 = $this.cursor = 0; + limit$0 = $this.limit = current$0.length; + $this.limit_backward = 0; + $this.bra = cursor$0; + $this.ket = limit$0; +}; + +BaseStemmer.setCurrent$LBaseStemmer$S = BaseStemmer$setCurrent$LBaseStemmer$S; + +BaseStemmer.prototype.getCurrent$ = function () { + return this.current; +}; + + +function BaseStemmer$getCurrent$LBaseStemmer$($this) { + return $this.current; +}; + +BaseStemmer.getCurrent$LBaseStemmer$ = BaseStemmer$getCurrent$LBaseStemmer$; + +BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; +}; + + +function BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$($this, other) { + $this.current = other.current; + $this.cursor = other.cursor; + $this.limit = other.limit; + $this.limit_backward = other.limit_backward; + $this.bra = other.bra; + $this.ket = other.ket; +}; + +BaseStemmer.copy_from$LBaseStemmer$LBaseStemmer$ = BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$; + +BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping$LBaseStemmer$AIII = BaseStemmer$in_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping_b$LBaseStemmer$AIII = BaseStemmer$in_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping$LBaseStemmer$AIII = BaseStemmer$out_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping_b$LBaseStemmer$AIII = BaseStemmer$out_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range$LBaseStemmer$II = BaseStemmer$in_range$LBaseStemmer$II; + +BaseStemmer.prototype.in_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range_b$LBaseStemmer$II = BaseStemmer$in_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.out_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range$LBaseStemmer$II = BaseStemmer$out_range$LBaseStemmer$II; + +BaseStemmer.prototype.out_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range_b$LBaseStemmer$II = BaseStemmer$out_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.eq_s$IS = function (s_size, s) { + var cursor$0; + if (((this.limit - this.cursor) | 0) < s_size) { + return false; + } + if (this.current.slice(cursor$0 = this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + this.cursor = (this.cursor + s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.limit - $this.cursor) | 0) < s_size) { + return false; + } + if ($this.current.slice(cursor$0 = $this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + $this.cursor = ($this.cursor + s_size) | 0; + return true; +}; + +BaseStemmer.eq_s$LBaseStemmer$IS = BaseStemmer$eq_s$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) { + var cursor$0; + if (((this.cursor - this.limit_backward) | 0) < s_size) { + return false; + } + if (this.current.slice((((cursor$0 = this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + this.cursor = (this.cursor - s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.cursor - $this.limit_backward) | 0) < s_size) { + return false; + } + if ($this.current.slice((((cursor$0 = $this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + $this.cursor = ($this.cursor - s_size) | 0; + return true; +}; + +BaseStemmer.eq_s_b$LBaseStemmer$IS = BaseStemmer$eq_s_b$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_v$S = function (s) { + return BaseStemmer$eq_s$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v$LBaseStemmer$S = BaseStemmer$eq_v$LBaseStemmer$S; + +BaseStemmer.prototype.eq_v_b$S = function (s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v_b$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v_b$LBaseStemmer$S = BaseStemmer$eq_v_b$LBaseStemmer$S; + +BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + l = this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + l = $this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + $this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among$LBaseStemmer$ALAmong$I = BaseStemmer$find_among$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + lb = this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(this); + this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + lb = $this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method($this); + $this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among_b$LBaseStemmer$ALAmong$I = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit = (this.limit + adjustment) | 0; + if (this.cursor >= c_ket) { + this.cursor = (this.cursor + adjustment) | 0; + } else if (this.cursor > c_bra) { + this.cursor = c_bra; + } + return (adjustment | 0); +}; + + +function BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + $this.current = $this.current.slice(0, c_bra) + s + $this.current.slice(c_ket); + $this.limit = ($this.limit + adjustment) | 0; + if ($this.cursor >= c_ket) { + $this.cursor = ($this.cursor + adjustment) | 0; + } else if ($this.cursor > c_bra) { + $this.cursor = c_bra; + } + return (adjustment | 0); +}; + +BaseStemmer.replace_s$LBaseStemmer$IIS = BaseStemmer$replace_s$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_check$ = function () { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true); +}; + + +function BaseStemmer$slice_check$LBaseStemmer$($this) { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true); +}; + +BaseStemmer.slice_check$LBaseStemmer$ = BaseStemmer$slice_check$LBaseStemmer$; + +BaseStemmer.prototype.slice_from$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS(this, this.bra, this.ket, s); + result = true; + } + return result; +}; + + +function BaseStemmer$slice_from$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS($this, $this.bra, $this.ket, s); + result = true; + } + return result; +}; + +BaseStemmer.slice_from$LBaseStemmer$S = BaseStemmer$slice_from$LBaseStemmer$S; + +BaseStemmer.prototype.slice_del$ = function () { + return BaseStemmer$slice_from$LBaseStemmer$S(this, ""); +}; + + +function BaseStemmer$slice_del$LBaseStemmer$($this) { + return BaseStemmer$slice_from$LBaseStemmer$S($this, ""); +}; + +BaseStemmer.slice_del$LBaseStemmer$ = BaseStemmer$slice_del$LBaseStemmer$; + +BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS(this, c_bra, c_ket, s); + if (c_bra <= this.bra) { + this.bra = (this.bra + adjustment) | 0; + } + if (c_bra <= this.ket) { + this.ket = (this.ket + adjustment) | 0; + } +}; + + +function BaseStemmer$insert$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s); + if (c_bra <= $this.bra) { + $this.bra = ($this.bra + adjustment) | 0; + } + if (c_bra <= $this.ket) { + $this.ket = ($this.ket + adjustment) | 0; + } +}; + +BaseStemmer.insert$LBaseStemmer$IIS = BaseStemmer$insert$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_to$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + result = this.current.slice(this.bra, this.ket); + } + return result; +}; + + +function BaseStemmer$slice_to$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + result = $this.current.slice($this.bra, $this.ket); + } + return result; +}; + +BaseStemmer.slice_to$LBaseStemmer$S = BaseStemmer$slice_to$LBaseStemmer$S; + +BaseStemmer.prototype.assign_to$S = function (s) { + return this.current.slice(0, this.limit); +}; + + +function BaseStemmer$assign_to$LBaseStemmer$S($this, s) { + return $this.current.slice(0, $this.limit); +}; + +BaseStemmer.assign_to$LBaseStemmer$S = BaseStemmer$assign_to$LBaseStemmer$S; + +BaseStemmer.prototype.stem$ = function () { + return false; +}; + + +BaseStemmer.prototype.stemWord$S = function (word) { + var result; + var current$0; + var cursor$0; + var limit$0; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + return result; +}; + +BaseStemmer.prototype.stemWord = BaseStemmer.prototype.stemWord$S; + +BaseStemmer.prototype.stemWords$AS = function (words) { + var results; + var i; + var word; + var result; + var current$0; + var cursor$0; + var limit$0; + results = [ ]; + for (i = 0; i < words.length; i++) { + word = words[i]; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + results.push(result); + } + return results; +}; + +BaseStemmer.prototype.stemWords = BaseStemmer.prototype.stemWords$AS; + +function RussianStemmer() { + BaseStemmer.call(this); + this.I_p2 = 0; + this.I_pV = 0; +}; + +$__jsx_extend([RussianStemmer], BaseStemmer); +RussianStemmer.prototype.copy_from$LRussianStemmer$ = function (other) { + this.I_p2 = other.I_p2; + this.I_pV = other.I_pV; + BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$(this, other); +}; + +RussianStemmer.prototype.copy_from = RussianStemmer.prototype.copy_from$LRussianStemmer$; + +RussianStemmer.prototype.r_mark_regions$ = function () { + var v_1; + var lab0; + var lab2; + var lab4; + var lab6; + var lab8; + var limit$0; + var $__jsx_postinc_t; + this.I_pV = limit$0 = this.limit; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + golab1: + while (true) { + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, RussianStemmer.g_v, 1072, 1103)) { + break lab2; + } + break golab1; + } + if (this.cursor >= this.limit) { + break lab0; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_pV = this.cursor; + golab3: + while (true) { + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, RussianStemmer.g_v, 1072, 1103)) { + break lab4; + } + break golab3; + } + if (this.cursor >= this.limit) { + break lab0; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, RussianStemmer.g_v, 1072, 1103)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + break lab0; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, RussianStemmer.g_v, 1072, 1103)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab0; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p2 = this.cursor; + } + this.cursor = v_1; + return true; +}; + +RussianStemmer.prototype.r_mark_regions = RussianStemmer.prototype.r_mark_regions$; + +function RussianStemmer$r_mark_regions$LRussianStemmer$($this) { + var v_1; + var lab0; + var lab2; + var lab4; + var lab6; + var lab8; + var limit$0; + var $__jsx_postinc_t; + $this.I_pV = limit$0 = $this.limit; + $this.I_p2 = limit$0; + v_1 = $this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + golab1: + while (true) { + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, RussianStemmer.g_v, 1072, 1103)) { + break lab2; + } + break golab1; + } + if ($this.cursor >= $this.limit) { + break lab0; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_pV = $this.cursor; + golab3: + while (true) { + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, RussianStemmer.g_v, 1072, 1103)) { + break lab4; + } + break golab3; + } + if ($this.cursor >= $this.limit) { + break lab0; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, RussianStemmer.g_v, 1072, 1103)) { + break lab6; + } + break golab5; + } + if ($this.cursor >= $this.limit) { + break lab0; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, RussianStemmer.g_v, 1072, 1103)) { + break lab8; + } + break golab7; + } + if ($this.cursor >= $this.limit) { + break lab0; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p2 = $this.cursor; + } + $this.cursor = v_1; + return true; +}; + +RussianStemmer.r_mark_regions$LRussianStemmer$ = RussianStemmer$r_mark_regions$LRussianStemmer$; + +RussianStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +RussianStemmer.prototype.r_R2 = RussianStemmer.prototype.r_R2$; + +function RussianStemmer$r_R2$LRussianStemmer$($this) { + return (! ($this.I_p2 <= $this.cursor) ? false : true); +}; + +RussianStemmer.r_R2$LRussianStemmer$ = RussianStemmer$r_R2$LRussianStemmer$; + +RussianStemmer.prototype.r_perfective_gerund$ = function () { + var among_var; + var v_1; + var lab0; + var lab1; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, RussianStemmer.a_0, 9); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u0430")) { + break lab1; + } + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u044F")) { + return false; + } + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +RussianStemmer.prototype.r_perfective_gerund = RussianStemmer.prototype.r_perfective_gerund$; + +function RussianStemmer$r_perfective_gerund$LRussianStemmer$($this) { + var among_var; + var v_1; + var lab0; + var lab1; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, RussianStemmer.a_0, 9); + if (among_var === 0) { + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u0430")) { + break lab1; + } + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u044F")) { + return false; + } + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +RussianStemmer.r_perfective_gerund$LRussianStemmer$ = RussianStemmer$r_perfective_gerund$LRussianStemmer$; + +RussianStemmer.prototype.r_adjective$ = function () { + var among_var; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, RussianStemmer.a_1, 26); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +RussianStemmer.prototype.r_adjective = RussianStemmer.prototype.r_adjective$; + +function RussianStemmer$r_adjective$LRussianStemmer$($this) { + var among_var; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, RussianStemmer.a_1, 26); + if (among_var === 0) { + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +RussianStemmer.r_adjective$LRussianStemmer$ = RussianStemmer$r_adjective$LRussianStemmer$; + +RussianStemmer.prototype.r_adjectival$ = function () { + var among_var; + var v_1; + var v_2; + var lab0; + var lab1; + var lab2; + if (! RussianStemmer$r_adjective$LRussianStemmer$(this)) { + return false; + } + v_1 = ((this.limit - this.cursor) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, RussianStemmer.a_2, 8); + if (among_var === 0) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = ((this.limit - v_1) | 0); + break lab0; + case 1: + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = ((this.limit - this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u0430")) { + break lab2; + } + break lab1; + } + this.cursor = ((this.limit - v_2) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u044F")) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + } + return true; +}; + +RussianStemmer.prototype.r_adjectival = RussianStemmer.prototype.r_adjectival$; + +function RussianStemmer$r_adjectival$LRussianStemmer$($this) { + var among_var; + var v_1; + var v_2; + var lab0; + var lab1; + var lab2; + if (! RussianStemmer$r_adjective$LRussianStemmer$($this)) { + return false; + } + v_1 = (($this.limit - $this.cursor) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, RussianStemmer.a_2, 8); + if (among_var === 0) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + case 1: + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = (($this.limit - $this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u0430")) { + break lab2; + } + break lab1; + } + $this.cursor = (($this.limit - v_2) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u044F")) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + } + return true; +}; + +RussianStemmer.r_adjectival$LRussianStemmer$ = RussianStemmer$r_adjectival$LRussianStemmer$; + +RussianStemmer.prototype.r_reflexive$ = function () { + var among_var; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, RussianStemmer.a_3, 2); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +RussianStemmer.prototype.r_reflexive = RussianStemmer.prototype.r_reflexive$; + +function RussianStemmer$r_reflexive$LRussianStemmer$($this) { + var among_var; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, RussianStemmer.a_3, 2); + if (among_var === 0) { + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +RussianStemmer.r_reflexive$LRussianStemmer$ = RussianStemmer$r_reflexive$LRussianStemmer$; + +RussianStemmer.prototype.r_verb$ = function () { + var among_var; + var v_1; + var lab0; + var lab1; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, RussianStemmer.a_4, 46); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u0430")) { + break lab1; + } + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u044F")) { + return false; + } + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +RussianStemmer.prototype.r_verb = RussianStemmer.prototype.r_verb$; + +function RussianStemmer$r_verb$LRussianStemmer$($this) { + var among_var; + var v_1; + var lab0; + var lab1; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, RussianStemmer.a_4, 46); + if (among_var === 0) { + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u0430")) { + break lab1; + } + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u044F")) { + return false; + } + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +RussianStemmer.r_verb$LRussianStemmer$ = RussianStemmer$r_verb$LRussianStemmer$; + +RussianStemmer.prototype.r_noun$ = function () { + var among_var; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, RussianStemmer.a_5, 36); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +RussianStemmer.prototype.r_noun = RussianStemmer.prototype.r_noun$; + +function RussianStemmer$r_noun$LRussianStemmer$($this) { + var among_var; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, RussianStemmer.a_5, 36); + if (among_var === 0) { + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +RussianStemmer.r_noun$LRussianStemmer$ = RussianStemmer$r_noun$LRussianStemmer$; + +RussianStemmer.prototype.r_derivational$ = function () { + var among_var; + var cursor$0; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, RussianStemmer.a_6, 2); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +RussianStemmer.prototype.r_derivational = RussianStemmer.prototype.r_derivational$; + +function RussianStemmer$r_derivational$LRussianStemmer$($this) { + var among_var; + var cursor$0; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, RussianStemmer.a_6, 2); + if (among_var === 0) { + return false; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +RussianStemmer.r_derivational$LRussianStemmer$ = RussianStemmer$r_derivational$LRussianStemmer$; + +RussianStemmer.prototype.r_tidy_up$ = function () { + var among_var; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, RussianStemmer.a_7, 4); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u043D")) { + return false; + } + this.bra = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u043D")) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u043D")) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +RussianStemmer.prototype.r_tidy_up = RussianStemmer.prototype.r_tidy_up$; + +function RussianStemmer$r_tidy_up$LRussianStemmer$($this) { + var among_var; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, RussianStemmer.a_7, 4); + if (among_var === 0) { + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u043D")) { + return false; + } + $this.bra = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u043D")) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u043D")) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +RussianStemmer.r_tidy_up$LRussianStemmer$ = RussianStemmer$r_tidy_up$LRussianStemmer$; + +RussianStemmer.prototype.stem$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var lab10; + var cursor$0; + var limit$0; + var cursor$1; + var limit$1; + var cursor$2; + var cursor$3; + var limit$2; + var cursor$4; + var limit$3; + var cursor$5; + var limit_backward$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! RussianStemmer$r_mark_regions$LRussianStemmer$(this)) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = ((limit$0 - cursor$1) | 0); + if (cursor$1 < this.I_pV) { + return false; + } + cursor$3 = this.cursor = this.I_pV; + v_3 = this.limit_backward; + this.limit_backward = cursor$3; + cursor$4 = this.cursor = (((limit$2 = this.limit) - v_2) | 0); + v_4 = ((limit$2 - cursor$4) | 0); + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_5 = ((this.limit - this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! RussianStemmer$r_perfective_gerund$LRussianStemmer$(this)) { + break lab3; + } + break lab2; + } + cursor$2 = this.cursor = (((limit$1 = this.limit) - v_5) | 0); + v_6 = ((limit$1 - cursor$2) | 0); + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! RussianStemmer$r_reflexive$LRussianStemmer$(this)) { + this.cursor = ((this.limit - v_6) | 0); + break lab4; + } + } + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_7 = ((this.limit - this.cursor) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! RussianStemmer$r_adjectival$LRussianStemmer$(this)) { + break lab6; + } + break lab5; + } + this.cursor = ((this.limit - v_7) | 0); + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! RussianStemmer$r_verb$LRussianStemmer$(this)) { + break lab7; + } + break lab5; + } + this.cursor = ((this.limit - v_7) | 0); + if (! RussianStemmer$r_noun$LRussianStemmer$(this)) { + break lab1; + } + } + } + } + cursor$5 = this.cursor = (((limit$3 = this.limit) - v_4) | 0); + v_8 = ((limit$3 - cursor$5) | 0); + lab8 = true; +lab8: + while (lab8 === true) { + lab8 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u0438")) { + this.cursor = ((this.limit - v_8) | 0); + break lab8; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + v_9 = ((this.limit - this.cursor) | 0); + lab9 = true; +lab9: + while (lab9 === true) { + lab9 = false; + if (! RussianStemmer$r_derivational$LRussianStemmer$(this)) { + break lab9; + } + } + this.cursor = ((this.limit - v_9) | 0); + lab10 = true; +lab10: + while (lab10 === true) { + lab10 = false; + if (! RussianStemmer$r_tidy_up$LRussianStemmer$(this)) { + break lab10; + } + } + limit_backward$0 = this.limit_backward = v_3; + this.cursor = limit_backward$0; + return true; +}; + +RussianStemmer.prototype.stem = RussianStemmer.prototype.stem$; + +RussianStemmer.prototype.equals$X = function (o) { + return o instanceof RussianStemmer; +}; + +RussianStemmer.prototype.equals = RussianStemmer.prototype.equals$X; + +function RussianStemmer$equals$LRussianStemmer$X($this, o) { + return o instanceof RussianStemmer; +}; + +RussianStemmer.equals$LRussianStemmer$X = RussianStemmer$equals$LRussianStemmer$X; + +RussianStemmer.prototype.hashCode$ = function () { + var classname; + var hash; + var i; + var char; + classname = "RussianStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +RussianStemmer.prototype.hashCode = RussianStemmer.prototype.hashCode$; + +function RussianStemmer$hashCode$LRussianStemmer$($this) { + var classname; + var hash; + var i; + var char; + classname = "RussianStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +RussianStemmer.hashCode$LRussianStemmer$ = RussianStemmer$hashCode$LRussianStemmer$; + +RussianStemmer.serialVersionUID = 1; +$__jsx_lazy_init(RussianStemmer, "methodObject", function () { + return new RussianStemmer(); +}); +$__jsx_lazy_init(RussianStemmer, "a_0", function () { + return [ new Among("\u0432", -1, 1), new Among("\u0438\u0432", 0, 2), new Among("\u044B\u0432", 0, 2), new Among("\u0432\u0448\u0438", -1, 1), new Among("\u0438\u0432\u0448\u0438", 3, 2), new Among("\u044B\u0432\u0448\u0438", 3, 2), new Among("\u0432\u0448\u0438\u0441\u044C", -1, 1), new Among("\u0438\u0432\u0448\u0438\u0441\u044C", 6, 2), new Among("\u044B\u0432\u0448\u0438\u0441\u044C", 6, 2) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_1", function () { + return [ new Among("\u0435\u0435", -1, 1), new Among("\u0438\u0435", -1, 1), new Among("\u043E\u0435", -1, 1), new Among("\u044B\u0435", -1, 1), new Among("\u0438\u043C\u0438", -1, 1), new Among("\u044B\u043C\u0438", -1, 1), new Among("\u0435\u0439", -1, 1), new Among("\u0438\u0439", -1, 1), new Among("\u043E\u0439", -1, 1), new Among("\u044B\u0439", -1, 1), new Among("\u0435\u043C", -1, 1), new Among("\u0438\u043C", -1, 1), new Among("\u043E\u043C", -1, 1), new Among("\u044B\u043C", -1, 1), new Among("\u0435\u0433\u043E", -1, 1), new Among("\u043E\u0433\u043E", -1, 1), new Among("\u0435\u043C\u0443", -1, 1), new Among("\u043E\u043C\u0443", -1, 1), new Among("\u0438\u0445", -1, 1), new Among("\u044B\u0445", -1, 1), new Among("\u0435\u044E", -1, 1), new Among("\u043E\u044E", -1, 1), new Among("\u0443\u044E", -1, 1), new Among("\u044E\u044E", -1, 1), new Among("\u0430\u044F", -1, 1), new Among("\u044F\u044F", -1, 1) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_2", function () { + return [ new Among("\u0435\u043C", -1, 1), new Among("\u043D\u043D", -1, 1), new Among("\u0432\u0448", -1, 1), new Among("\u0438\u0432\u0448", 2, 2), new Among("\u044B\u0432\u0448", 2, 2), new Among("\u0449", -1, 1), new Among("\u044E\u0449", 5, 1), new Among("\u0443\u044E\u0449", 6, 2) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_3", function () { + return [ new Among("\u0441\u044C", -1, 1), new Among("\u0441\u044F", -1, 1) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_4", function () { + return [ new Among("\u043B\u0430", -1, 1), new Among("\u0438\u043B\u0430", 0, 2), new Among("\u044B\u043B\u0430", 0, 2), new Among("\u043D\u0430", -1, 1), new Among("\u0435\u043D\u0430", 3, 2), new Among("\u0435\u0442\u0435", -1, 1), new Among("\u0438\u0442\u0435", -1, 2), new Among("\u0439\u0442\u0435", -1, 1), new Among("\u0435\u0439\u0442\u0435", 7, 2), new Among("\u0443\u0439\u0442\u0435", 7, 2), new Among("\u043B\u0438", -1, 1), new Among("\u0438\u043B\u0438", 10, 2), new Among("\u044B\u043B\u0438", 10, 2), new Among("\u0439", -1, 1), new Among("\u0435\u0439", 13, 2), new Among("\u0443\u0439", 13, 2), new Among("\u043B", -1, 1), new Among("\u0438\u043B", 16, 2), new Among("\u044B\u043B", 16, 2), new Among("\u0435\u043C", -1, 1), new Among("\u0438\u043C", -1, 2), new Among("\u044B\u043C", -1, 2), new Among("\u043D", -1, 1), new Among("\u0435\u043D", 22, 2), new Among("\u043B\u043E", -1, 1), new Among("\u0438\u043B\u043E", 24, 2), new Among("\u044B\u043B\u043E", 24, 2), new Among("\u043D\u043E", -1, 1), new Among("\u0435\u043D\u043E", 27, 2), new Among("\u043D\u043D\u043E", 27, 1), new Among("\u0435\u0442", -1, 1), new Among("\u0443\u0435\u0442", 30, 2), new Among("\u0438\u0442", -1, 2), new Among("\u044B\u0442", -1, 2), new Among("\u044E\u0442", -1, 1), new Among("\u0443\u044E\u0442", 34, 2), new Among("\u044F\u0442", -1, 2), new Among("\u043D\u044B", -1, 1), new Among("\u0435\u043D\u044B", 37, 2), new Among("\u0442\u044C", -1, 1), new Among("\u0438\u0442\u044C", 39, 2), new Among("\u044B\u0442\u044C", 39, 2), new Among("\u0435\u0448\u044C", -1, 1), new Among("\u0438\u0448\u044C", -1, 2), new Among("\u044E", -1, 2), new Among("\u0443\u044E", 44, 2) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_5", function () { + return [ new Among("\u0430", -1, 1), new Among("\u0435\u0432", -1, 1), new Among("\u043E\u0432", -1, 1), new Among("\u0435", -1, 1), new Among("\u0438\u0435", 3, 1), new Among("\u044C\u0435", 3, 1), new Among("\u0438", -1, 1), new Among("\u0435\u0438", 6, 1), new Among("\u0438\u0438", 6, 1), new Among("\u0430\u043C\u0438", 6, 1), new Among("\u044F\u043C\u0438", 6, 1), new Among("\u0438\u044F\u043C\u0438", 10, 1), new Among("\u0439", -1, 1), new Among("\u0435\u0439", 12, 1), new Among("\u0438\u0435\u0439", 13, 1), new Among("\u0438\u0439", 12, 1), new Among("\u043E\u0439", 12, 1), new Among("\u0430\u043C", -1, 1), new Among("\u0435\u043C", -1, 1), new Among("\u0438\u0435\u043C", 18, 1), new Among("\u043E\u043C", -1, 1), new Among("\u044F\u043C", -1, 1), new Among("\u0438\u044F\u043C", 21, 1), new Among("\u043E", -1, 1), new Among("\u0443", -1, 1), new Among("\u0430\u0445", -1, 1), new Among("\u044F\u0445", -1, 1), new Among("\u0438\u044F\u0445", 26, 1), new Among("\u044B", -1, 1), new Among("\u044C", -1, 1), new Among("\u044E", -1, 1), new Among("\u0438\u044E", 30, 1), new Among("\u044C\u044E", 30, 1), new Among("\u044F", -1, 1), new Among("\u0438\u044F", 33, 1), new Among("\u044C\u044F", 33, 1) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_6", function () { + return [ new Among("\u043E\u0441\u0442", -1, 1), new Among("\u043E\u0441\u0442\u044C", -1, 1) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_7", function () { + return [ new Among("\u0435\u0439\u0448\u0435", -1, 1), new Among("\u043D", -1, 2), new Among("\u0435\u0439\u0448", -1, 1), new Among("\u044C", -1, 3) ]; +}); +RussianStemmer.g_v = [ 33, 65, 8, 232 ]; + +var $__jsx_classMap = { + "src/among.jsx": { + Among: Among, + Among$SII: Among, + Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$0 + }, + "src/stemmer.jsx": { + Stemmer: Stemmer, + Stemmer$: Stemmer + }, + "src/base-stemmer.jsx": { + BaseStemmer: BaseStemmer, + BaseStemmer$: BaseStemmer + }, + "src/russian-stemmer.jsx": { + RussianStemmer: RussianStemmer, + RussianStemmer$: RussianStemmer + } +}; + + +})(JSX); + +var Among = JSX.require("src/among.jsx").Among; +var Among$SII = JSX.require("src/among.jsx").Among$SII; +var Stemmer = JSX.require("src/stemmer.jsx").Stemmer; +var BaseStemmer = JSX.require("src/base-stemmer.jsx").BaseStemmer; +var RussianStemmer = JSX.require("src/russian-stemmer.jsx").RussianStemmer; diff --git a/sphinx/sphinx/search/non-minified-js/spanish-stemmer.js b/sphinx/sphinx/search/non-minified-js/spanish-stemmer.js new file mode 100644 index 0000000..21b648f --- /dev/null +++ b/sphinx/sphinx/search/non-minified-js/spanish-stemmer.js @@ -0,0 +1,2938 @@ +// generatedy by JSX compiler 0.9.89 (2014-05-20 06:01:03 +0900; 8e8c6105f36f3dfe440ea026a3c93a3444977102) +var JSX = {}; +(function (JSX) { +/** + * extends the class + */ +function $__jsx_extend(derivations, base) { + var ctor = function () {}; + ctor.prototype = base.prototype; + var proto = new ctor(); + for (var i in derivations) { + derivations[i].prototype = proto; + } +} + +/** + * copies the implementations from source interface to target + */ +function $__jsx_merge_interface(target, source) { + for (var k in source.prototype) + if (source.prototype.hasOwnProperty(k)) + target.prototype[k] = source.prototype[k]; +} + +/** + * defers the initialization of the property + */ +function $__jsx_lazy_init(obj, prop, func) { + function reset(obj, prop, value) { + delete obj[prop]; + obj[prop] = value; + return value; + } + + Object.defineProperty(obj, prop, { + get: function () { + return reset(obj, prop, func()); + }, + set: function (v) { + reset(obj, prop, v); + }, + enumerable: true, + configurable: true + }); +} + +var $__jsx_imul = Math.imul; +if (typeof $__jsx_imul === "undefined") { + $__jsx_imul = function (a, b) { + var ah = (a >>> 16) & 0xffff; + var al = a & 0xffff; + var bh = (b >>> 16) & 0xffff; + var bl = b & 0xffff; + return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0); + }; +} + +/** + * fused int-ops with side-effects + */ +function $__jsx_ipadd(o, p, r) { + return o[p] = (o[p] + r) | 0; +} +function $__jsx_ipsub(o, p, r) { + return o[p] = (o[p] - r) | 0; +} +function $__jsx_ipmul(o, p, r) { + return o[p] = $__jsx_imul(o[p], r); +} +function $__jsx_ipdiv(o, p, r) { + return o[p] = (o[p] / r) | 0; +} +function $__jsx_ipmod(o, p, r) { + return o[p] = (o[p] % r) | 0; +} +function $__jsx_ippostinc(o, p) { + var v = o[p]; + o[p] = (v + 1) | 0; + return v; +} +function $__jsx_ippostdec(o, p) { + var v = o[p]; + o[p] = (v - 1) | 0; + return v; +} + +/** + * non-inlined version of Array#each + */ +function $__jsx_forEach(o, f) { + var l = o.length; + for (var i = 0; i < l; ++i) + f(o[i]); +} + +/* + * global functions, renamed to avoid conflict with local variable names + */ +var $__jsx_parseInt = parseInt; +var $__jsx_parseFloat = parseFloat; +function $__jsx_isNaN(n) { return n !== n; } +var $__jsx_isFinite = isFinite; + +var $__jsx_encodeURIComponent = encodeURIComponent; +var $__jsx_decodeURIComponent = decodeURIComponent; +var $__jsx_encodeURI = encodeURI; +var $__jsx_decodeURI = decodeURI; + +var $__jsx_ObjectToString = Object.prototype.toString; +var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty; + +/* + * profiler object, initialized afterwards + */ +function $__jsx_profiler() { +} + +/* + * public interface to JSX code + */ +JSX.require = function (path) { + var m = $__jsx_classMap[path]; + return m !== undefined ? m : null; +}; + +JSX.profilerIsRunning = function () { + return $__jsx_profiler.getResults != null; +}; + +JSX.getProfileResults = function () { + return ($__jsx_profiler.getResults || function () { return {}; })(); +}; + +JSX.postProfileResults = function (url, cb) { + if ($__jsx_profiler.postResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.postResults(url, cb); +}; + +JSX.resetProfileResults = function () { + if ($__jsx_profiler.resetResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.resetResults(); +}; +JSX.DEBUG = false; +var GeneratorFunction$0 = +(function () { + try { + return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); + } catch (e) { + return function GeneratorFunction () {}; + } +})(); +var __jsx_generator_object$0 = +(function () { + function __jsx_generator_object() { + this.__next = 0; + this.__loop = null; + this.__seed = null; + this.__value = undefined; + this.__status = 0; // SUSPENDED: 0, ACTIVE: 1, DEAD: 2 + } + + __jsx_generator_object.prototype.next = function (seed) { + switch (this.__status) { + case 0: + this.__status = 1; + this.__seed = seed; + + // go next! + this.__loop(this.__next); + + var done = false; + if (this.__next != -1) { + this.__status = 0; + } else { + this.__status = 2; + done = true; + } + return { value: this.__value, done: done }; + case 1: + throw new Error("Generator is already running"); + case 2: + throw new Error("Generator is already finished"); + default: + throw new Error("Unexpected generator internal state"); + } + }; + + return __jsx_generator_object; +}()); +function Among(s, substring_i, result) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = null; + this.instance = null; +}; + +function Among$0(s, substring_i, result, method, instance) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = method; + this.instance = instance; +}; + +$__jsx_extend([Among, Among$0], Object); +function Stemmer() { +}; + +$__jsx_extend([Stemmer], Object); +function BaseStemmer() { + var current$0; + var cursor$0; + var limit$0; + this.cache = ({ }); + current$0 = this.current = ""; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +$__jsx_extend([BaseStemmer], Stemmer); +BaseStemmer.prototype.setCurrent$S = function (value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = this.current = value; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + + +function BaseStemmer$setCurrent$LBaseStemmer$S($this, value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = $this.current = value; + cursor$0 = $this.cursor = 0; + limit$0 = $this.limit = current$0.length; + $this.limit_backward = 0; + $this.bra = cursor$0; + $this.ket = limit$0; +}; + +BaseStemmer.setCurrent$LBaseStemmer$S = BaseStemmer$setCurrent$LBaseStemmer$S; + +BaseStemmer.prototype.getCurrent$ = function () { + return this.current; +}; + + +function BaseStemmer$getCurrent$LBaseStemmer$($this) { + return $this.current; +}; + +BaseStemmer.getCurrent$LBaseStemmer$ = BaseStemmer$getCurrent$LBaseStemmer$; + +BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; +}; + + +function BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$($this, other) { + $this.current = other.current; + $this.cursor = other.cursor; + $this.limit = other.limit; + $this.limit_backward = other.limit_backward; + $this.bra = other.bra; + $this.ket = other.ket; +}; + +BaseStemmer.copy_from$LBaseStemmer$LBaseStemmer$ = BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$; + +BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping$LBaseStemmer$AIII = BaseStemmer$in_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping_b$LBaseStemmer$AIII = BaseStemmer$in_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping$LBaseStemmer$AIII = BaseStemmer$out_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping_b$LBaseStemmer$AIII = BaseStemmer$out_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range$LBaseStemmer$II = BaseStemmer$in_range$LBaseStemmer$II; + +BaseStemmer.prototype.in_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range_b$LBaseStemmer$II = BaseStemmer$in_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.out_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range$LBaseStemmer$II = BaseStemmer$out_range$LBaseStemmer$II; + +BaseStemmer.prototype.out_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range_b$LBaseStemmer$II = BaseStemmer$out_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.eq_s$IS = function (s_size, s) { + var cursor$0; + if (((this.limit - this.cursor) | 0) < s_size) { + return false; + } + if (this.current.slice(cursor$0 = this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + this.cursor = (this.cursor + s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.limit - $this.cursor) | 0) < s_size) { + return false; + } + if ($this.current.slice(cursor$0 = $this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + $this.cursor = ($this.cursor + s_size) | 0; + return true; +}; + +BaseStemmer.eq_s$LBaseStemmer$IS = BaseStemmer$eq_s$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) { + var cursor$0; + if (((this.cursor - this.limit_backward) | 0) < s_size) { + return false; + } + if (this.current.slice((((cursor$0 = this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + this.cursor = (this.cursor - s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.cursor - $this.limit_backward) | 0) < s_size) { + return false; + } + if ($this.current.slice((((cursor$0 = $this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + $this.cursor = ($this.cursor - s_size) | 0; + return true; +}; + +BaseStemmer.eq_s_b$LBaseStemmer$IS = BaseStemmer$eq_s_b$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_v$S = function (s) { + return BaseStemmer$eq_s$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v$LBaseStemmer$S = BaseStemmer$eq_v$LBaseStemmer$S; + +BaseStemmer.prototype.eq_v_b$S = function (s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v_b$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v_b$LBaseStemmer$S = BaseStemmer$eq_v_b$LBaseStemmer$S; + +BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + l = this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + l = $this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + $this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among$LBaseStemmer$ALAmong$I = BaseStemmer$find_among$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + lb = this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(this); + this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + lb = $this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method($this); + $this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among_b$LBaseStemmer$ALAmong$I = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit = (this.limit + adjustment) | 0; + if (this.cursor >= c_ket) { + this.cursor = (this.cursor + adjustment) | 0; + } else if (this.cursor > c_bra) { + this.cursor = c_bra; + } + return (adjustment | 0); +}; + + +function BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + $this.current = $this.current.slice(0, c_bra) + s + $this.current.slice(c_ket); + $this.limit = ($this.limit + adjustment) | 0; + if ($this.cursor >= c_ket) { + $this.cursor = ($this.cursor + adjustment) | 0; + } else if ($this.cursor > c_bra) { + $this.cursor = c_bra; + } + return (adjustment | 0); +}; + +BaseStemmer.replace_s$LBaseStemmer$IIS = BaseStemmer$replace_s$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_check$ = function () { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true); +}; + + +function BaseStemmer$slice_check$LBaseStemmer$($this) { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true); +}; + +BaseStemmer.slice_check$LBaseStemmer$ = BaseStemmer$slice_check$LBaseStemmer$; + +BaseStemmer.prototype.slice_from$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS(this, this.bra, this.ket, s); + result = true; + } + return result; +}; + + +function BaseStemmer$slice_from$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS($this, $this.bra, $this.ket, s); + result = true; + } + return result; +}; + +BaseStemmer.slice_from$LBaseStemmer$S = BaseStemmer$slice_from$LBaseStemmer$S; + +BaseStemmer.prototype.slice_del$ = function () { + return BaseStemmer$slice_from$LBaseStemmer$S(this, ""); +}; + + +function BaseStemmer$slice_del$LBaseStemmer$($this) { + return BaseStemmer$slice_from$LBaseStemmer$S($this, ""); +}; + +BaseStemmer.slice_del$LBaseStemmer$ = BaseStemmer$slice_del$LBaseStemmer$; + +BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS(this, c_bra, c_ket, s); + if (c_bra <= this.bra) { + this.bra = (this.bra + adjustment) | 0; + } + if (c_bra <= this.ket) { + this.ket = (this.ket + adjustment) | 0; + } +}; + + +function BaseStemmer$insert$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s); + if (c_bra <= $this.bra) { + $this.bra = ($this.bra + adjustment) | 0; + } + if (c_bra <= $this.ket) { + $this.ket = ($this.ket + adjustment) | 0; + } +}; + +BaseStemmer.insert$LBaseStemmer$IIS = BaseStemmer$insert$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_to$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + result = this.current.slice(this.bra, this.ket); + } + return result; +}; + + +function BaseStemmer$slice_to$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + result = $this.current.slice($this.bra, $this.ket); + } + return result; +}; + +BaseStemmer.slice_to$LBaseStemmer$S = BaseStemmer$slice_to$LBaseStemmer$S; + +BaseStemmer.prototype.assign_to$S = function (s) { + return this.current.slice(0, this.limit); +}; + + +function BaseStemmer$assign_to$LBaseStemmer$S($this, s) { + return $this.current.slice(0, $this.limit); +}; + +BaseStemmer.assign_to$LBaseStemmer$S = BaseStemmer$assign_to$LBaseStemmer$S; + +BaseStemmer.prototype.stem$ = function () { + return false; +}; + + +BaseStemmer.prototype.stemWord$S = function (word) { + var result; + var current$0; + var cursor$0; + var limit$0; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + return result; +}; + +BaseStemmer.prototype.stemWord = BaseStemmer.prototype.stemWord$S; + +BaseStemmer.prototype.stemWords$AS = function (words) { + var results; + var i; + var word; + var result; + var current$0; + var cursor$0; + var limit$0; + results = [ ]; + for (i = 0; i < words.length; i++) { + word = words[i]; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + results.push(result); + } + return results; +}; + +BaseStemmer.prototype.stemWords = BaseStemmer.prototype.stemWords$AS; + +function SpanishStemmer() { + BaseStemmer.call(this); + this.I_p2 = 0; + this.I_p1 = 0; + this.I_pV = 0; +}; + +$__jsx_extend([SpanishStemmer], BaseStemmer); +SpanishStemmer.prototype.copy_from$LSpanishStemmer$ = function (other) { + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + this.I_pV = other.I_pV; + BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$(this, other); +}; + +SpanishStemmer.prototype.copy_from = SpanishStemmer.prototype.copy_from$LSpanishStemmer$; + +SpanishStemmer.prototype.r_mark_regions$ = function () { + var v_1; + var v_2; + var v_3; + var v_6; + var v_8; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab6; + var lab8; + var lab9; + var lab10; + var lab12; + var lab13; + var lab15; + var lab17; + var lab19; + var lab21; + var limit$0; + var cursor$0; + var $__jsx_postinc_t; + this.I_pV = limit$0 = this.limit; + this.I_p1 = limit$0; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, SpanishStemmer.g_v, 97, 252)) { + break lab2; + } + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, SpanishStemmer.g_v, 97, 252)) { + break lab4; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, SpanishStemmer.g_v, 97, 252)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + break lab4; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + break lab3; + } + this.cursor = v_3; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, SpanishStemmer.g_v, 97, 252)) { + break lab2; + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, SpanishStemmer.g_v, 97, 252)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab2; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + break lab1; + } + this.cursor = v_2; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, SpanishStemmer.g_v, 97, 252)) { + break lab0; + } + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_6 = this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, SpanishStemmer.g_v, 97, 252)) { + break lab10; + } + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, SpanishStemmer.g_v, 97, 252)) { + break lab12; + } + break golab11; + } + if (this.cursor >= this.limit) { + break lab10; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + break lab9; + } + this.cursor = v_6; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, SpanishStemmer.g_v, 97, 252)) { + break lab0; + } + if (this.cursor >= this.limit) { + break lab0; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + this.I_pV = this.cursor; + } + cursor$0 = this.cursor = v_1; + v_8 = cursor$0; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + golab14: + while (true) { + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, SpanishStemmer.g_v, 97, 252)) { + break lab15; + } + break golab14; + } + if (this.cursor >= this.limit) { + break lab13; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab16: + while (true) { + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, SpanishStemmer.g_v, 97, 252)) { + break lab17; + } + break golab16; + } + if (this.cursor >= this.limit) { + break lab13; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p1 = this.cursor; + golab18: + while (true) { + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, SpanishStemmer.g_v, 97, 252)) { + break lab19; + } + break golab18; + } + if (this.cursor >= this.limit) { + break lab13; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab20: + while (true) { + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, SpanishStemmer.g_v, 97, 252)) { + break lab21; + } + break golab20; + } + if (this.cursor >= this.limit) { + break lab13; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p2 = this.cursor; + } + this.cursor = v_8; + return true; +}; + +SpanishStemmer.prototype.r_mark_regions = SpanishStemmer.prototype.r_mark_regions$; + +function SpanishStemmer$r_mark_regions$LSpanishStemmer$($this) { + var v_1; + var v_2; + var v_3; + var v_6; + var v_8; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab6; + var lab8; + var lab9; + var lab10; + var lab12; + var lab13; + var lab15; + var lab17; + var lab19; + var lab21; + var limit$0; + var cursor$0; + var $__jsx_postinc_t; + $this.I_pV = limit$0 = $this.limit; + $this.I_p1 = limit$0; + $this.I_p2 = limit$0; + v_1 = $this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = $this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, SpanishStemmer.g_v, 97, 252)) { + break lab2; + } + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = $this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, SpanishStemmer.g_v, 97, 252)) { + break lab4; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, SpanishStemmer.g_v, 97, 252)) { + break lab6; + } + break golab5; + } + if ($this.cursor >= $this.limit) { + break lab4; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + break lab3; + } + $this.cursor = v_3; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, SpanishStemmer.g_v, 97, 252)) { + break lab2; + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, SpanishStemmer.g_v, 97, 252)) { + break lab8; + } + break golab7; + } + if ($this.cursor >= $this.limit) { + break lab2; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + break lab1; + } + $this.cursor = v_2; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, SpanishStemmer.g_v, 97, 252)) { + break lab0; + } + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_6 = $this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, SpanishStemmer.g_v, 97, 252)) { + break lab10; + } + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, SpanishStemmer.g_v, 97, 252)) { + break lab12; + } + break golab11; + } + if ($this.cursor >= $this.limit) { + break lab10; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + break lab9; + } + $this.cursor = v_6; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, SpanishStemmer.g_v, 97, 252)) { + break lab0; + } + if ($this.cursor >= $this.limit) { + break lab0; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + $this.I_pV = $this.cursor; + } + cursor$0 = $this.cursor = v_1; + v_8 = cursor$0; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + golab14: + while (true) { + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, SpanishStemmer.g_v, 97, 252)) { + break lab15; + } + break golab14; + } + if ($this.cursor >= $this.limit) { + break lab13; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab16: + while (true) { + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, SpanishStemmer.g_v, 97, 252)) { + break lab17; + } + break golab16; + } + if ($this.cursor >= $this.limit) { + break lab13; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p1 = $this.cursor; + golab18: + while (true) { + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, SpanishStemmer.g_v, 97, 252)) { + break lab19; + } + break golab18; + } + if ($this.cursor >= $this.limit) { + break lab13; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab20: + while (true) { + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, SpanishStemmer.g_v, 97, 252)) { + break lab21; + } + break golab20; + } + if ($this.cursor >= $this.limit) { + break lab13; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p2 = $this.cursor; + } + $this.cursor = v_8; + return true; +}; + +SpanishStemmer.r_mark_regions$LSpanishStemmer$ = SpanishStemmer$r_mark_regions$LSpanishStemmer$; + +SpanishStemmer.prototype.r_postlude$ = function () { + var among_var; + var v_1; + var lab1; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I(this, SpanishStemmer.a_0, 6); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "a")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "i")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "o")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "u")) { + return false; + } + break; + case 6: + if (this.cursor >= this.limit) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +SpanishStemmer.prototype.r_postlude = SpanishStemmer.prototype.r_postlude$; + +function SpanishStemmer$r_postlude$LSpanishStemmer$($this) { + var among_var; + var v_1; + var lab1; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + $this.bra = $this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, SpanishStemmer.a_0, 6); + if (among_var === 0) { + break lab1; + } + $this.ket = $this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "a")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "i")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "o")) { + return false; + } + break; + case 5: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "u")) { + return false; + } + break; + case 6: + if ($this.cursor >= $this.limit) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + $this.cursor = v_1; + break replab0; + } + return true; +}; + +SpanishStemmer.r_postlude$LSpanishStemmer$ = SpanishStemmer$r_postlude$LSpanishStemmer$; + +SpanishStemmer.prototype.r_RV$ = function () { + return (! (this.I_pV <= this.cursor) ? false : true); +}; + +SpanishStemmer.prototype.r_RV = SpanishStemmer.prototype.r_RV$; + +function SpanishStemmer$r_RV$LSpanishStemmer$($this) { + return (! ($this.I_pV <= $this.cursor) ? false : true); +}; + +SpanishStemmer.r_RV$LSpanishStemmer$ = SpanishStemmer$r_RV$LSpanishStemmer$; + +SpanishStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +SpanishStemmer.prototype.r_R1 = SpanishStemmer.prototype.r_R1$; + +function SpanishStemmer$r_R1$LSpanishStemmer$($this) { + return (! ($this.I_p1 <= $this.cursor) ? false : true); +}; + +SpanishStemmer.r_R1$LSpanishStemmer$ = SpanishStemmer$r_R1$LSpanishStemmer$; + +SpanishStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +SpanishStemmer.prototype.r_R2 = SpanishStemmer.prototype.r_R2$; + +function SpanishStemmer$r_R2$LSpanishStemmer$($this) { + return (! ($this.I_p2 <= $this.cursor) ? false : true); +}; + +SpanishStemmer.r_R2$LSpanishStemmer$ = SpanishStemmer$r_R2$LSpanishStemmer$; + +SpanishStemmer.prototype.r_attached_pronoun$ = function () { + var among_var; + this.ket = this.cursor; + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, SpanishStemmer.a_1, 13) === 0) { + return false; + } + this.bra = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, SpanishStemmer.a_2, 11); + if (among_var === 0) { + return false; + } + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "iendo")) { + return false; + } + break; + case 2: + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ando")) { + return false; + } + break; + case 3: + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ar")) { + return false; + } + break; + case 4: + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "er")) { + return false; + } + break; + case 5: + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ir")) { + return false; + } + break; + case 6: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 7: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "u")) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +SpanishStemmer.prototype.r_attached_pronoun = SpanishStemmer.prototype.r_attached_pronoun$; + +function SpanishStemmer$r_attached_pronoun$LSpanishStemmer$($this) { + var among_var; + $this.ket = $this.cursor; + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, SpanishStemmer.a_1, 13) === 0) { + return false; + } + $this.bra = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, SpanishStemmer.a_2, 11); + if (among_var === 0) { + return false; + } + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "iendo")) { + return false; + } + break; + case 2: + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ando")) { + return false; + } + break; + case 3: + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ar")) { + return false; + } + break; + case 4: + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "er")) { + return false; + } + break; + case 5: + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ir")) { + return false; + } + break; + case 6: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 7: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "u")) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +SpanishStemmer.r_attached_pronoun$LSpanishStemmer$ = SpanishStemmer$r_attached_pronoun$LSpanishStemmer$; + +SpanishStemmer.prototype.r_standard_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, SpanishStemmer.a_6, 46); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_1 = ((this.limit - this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "ic")) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "log")) { + return false; + } + break; + case 4: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "u")) { + return false; + } + break; + case 5: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ente")) { + return false; + } + break; + case 6: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_2 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, SpanishStemmer.a_3, 4); + if (among_var === 0) { + this.cursor = ((this.limit - v_2) | 0); + break lab1; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_p2 <= cursor$1) ? false : true)) { + this.cursor = ((this.limit - v_2) | 0); + break lab1; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + switch (among_var) { + case 0: + this.cursor = ((this.limit - v_2) | 0); + break lab1; + case 1: + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "at")) { + this.cursor = ((this.limit - v_2) | 0); + break lab1; + } + this.bra = cursor$2 = this.cursor; + if (! (! (this.I_p2 <= cursor$2) ? false : true)) { + this.cursor = ((this.limit - v_2) | 0); + break lab1; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + } + break; + case 7: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_3 = ((this.limit - this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, SpanishStemmer.a_4, 3); + if (among_var === 0) { + this.cursor = ((this.limit - v_3) | 0); + break lab2; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = ((this.limit - v_3) | 0); + break lab2; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = ((this.limit - v_3) | 0); + break lab2; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + } + break; + case 8: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_4 = ((this.limit - this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, SpanishStemmer.a_5, 3); + if (among_var === 0) { + this.cursor = ((this.limit - v_4) | 0); + break lab3; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = ((this.limit - v_4) | 0); + break lab3; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = ((this.limit - v_4) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + } + break; + case 9: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_5 = ((this.limit - this.cursor) | 0); + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "at")) { + this.cursor = ((this.limit - v_5) | 0); + break lab4; + } + this.bra = cursor$3 = this.cursor; + if (! (! (this.I_p2 <= cursor$3) ? false : true)) { + this.cursor = ((this.limit - v_5) | 0); + break lab4; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + break; + } + return true; +}; + +SpanishStemmer.prototype.r_standard_suffix = SpanishStemmer.prototype.r_standard_suffix$; + +function SpanishStemmer$r_standard_suffix$LSpanishStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, SpanishStemmer.a_6, 46); + if (among_var === 0) { + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_1 = (($this.limit - $this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "ic")) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$0) ? false : true)) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + break; + case 3: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "log")) { + return false; + } + break; + case 4: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "u")) { + return false; + } + break; + case 5: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ente")) { + return false; + } + break; + case 6: + if (! (! ($this.I_p1 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_2 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, SpanishStemmer.a_3, 4); + if (among_var === 0) { + $this.cursor = (($this.limit - v_2) | 0); + break lab1; + } + $this.bra = cursor$1 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$1) ? false : true)) { + $this.cursor = (($this.limit - v_2) | 0); + break lab1; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + switch (among_var) { + case 0: + $this.cursor = (($this.limit - v_2) | 0); + break lab1; + case 1: + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "at")) { + $this.cursor = (($this.limit - v_2) | 0); + break lab1; + } + $this.bra = cursor$2 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$2) ? false : true)) { + $this.cursor = (($this.limit - v_2) | 0); + break lab1; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + } + break; + case 7: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_3 = (($this.limit - $this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, SpanishStemmer.a_4, 3); + if (among_var === 0) { + $this.cursor = (($this.limit - v_3) | 0); + break lab2; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.cursor = (($this.limit - v_3) | 0); + break lab2; + case 1: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + $this.cursor = (($this.limit - v_3) | 0); + break lab2; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + } + break; + case 8: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_4 = (($this.limit - $this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, SpanishStemmer.a_5, 3); + if (among_var === 0) { + $this.cursor = (($this.limit - v_4) | 0); + break lab3; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.cursor = (($this.limit - v_4) | 0); + break lab3; + case 1: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + $this.cursor = (($this.limit - v_4) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + } + break; + case 9: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_5 = (($this.limit - $this.cursor) | 0); + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "at")) { + $this.cursor = (($this.limit - v_5) | 0); + break lab4; + } + $this.bra = cursor$3 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$3) ? false : true)) { + $this.cursor = (($this.limit - v_5) | 0); + break lab4; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + break; + } + return true; +}; + +SpanishStemmer.r_standard_suffix$LSpanishStemmer$ = SpanishStemmer$r_standard_suffix$LSpanishStemmer$; + +SpanishStemmer.prototype.r_y_verb_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, SpanishStemmer.a_7, 12); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "u")) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +SpanishStemmer.prototype.r_y_verb_suffix = SpanishStemmer.prototype.r_y_verb_suffix$; + +function SpanishStemmer$r_y_verb_suffix$LSpanishStemmer$($this) { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_pV) { + return false; + } + cursor$1 = $this.cursor = $this.I_pV; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, SpanishStemmer.a_7, 12); + if (among_var === 0) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + $this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "u")) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +SpanishStemmer.r_y_verb_suffix$LSpanishStemmer$ = SpanishStemmer$r_y_verb_suffix$LSpanishStemmer$; + +SpanishStemmer.prototype.r_verb_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var lab0; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, SpanishStemmer.a_8, 96); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + v_3 = ((this.limit - this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "u")) { + this.cursor = ((this.limit - v_3) | 0); + break lab0; + } + v_4 = ((this.limit - this.cursor) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "g")) { + this.cursor = ((this.limit - v_3) | 0); + break lab0; + } + this.cursor = ((this.limit - v_4) | 0); + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +SpanishStemmer.prototype.r_verb_suffix = SpanishStemmer.prototype.r_verb_suffix$; + +function SpanishStemmer$r_verb_suffix$LSpanishStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var lab0; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_pV) { + return false; + } + cursor$1 = $this.cursor = $this.I_pV; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, SpanishStemmer.a_8, 96); + if (among_var === 0) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + $this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + v_3 = (($this.limit - $this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "u")) { + $this.cursor = (($this.limit - v_3) | 0); + break lab0; + } + v_4 = (($this.limit - $this.cursor) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "g")) { + $this.cursor = (($this.limit - v_3) | 0); + break lab0; + } + $this.cursor = (($this.limit - v_4) | 0); + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +SpanishStemmer.r_verb_suffix$LSpanishStemmer$ = SpanishStemmer$r_verb_suffix$LSpanishStemmer$; + +SpanishStemmer.prototype.r_residual_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var lab0; + var cursor$0; + var cursor$1; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, SpanishStemmer.a_9, 8); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_1 = ((this.limit - this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "u")) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + this.bra = cursor$0 = this.cursor; + v_2 = ((this.limit - cursor$0) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "g")) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + cursor$1 = this.cursor = ((this.limit - v_2) | 0); + if (! (! (this.I_pV <= cursor$1) ? false : true)) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + break; + } + return true; +}; + +SpanishStemmer.prototype.r_residual_suffix = SpanishStemmer.prototype.r_residual_suffix$; + +function SpanishStemmer$r_residual_suffix$LSpanishStemmer$($this) { + var among_var; + var v_1; + var v_2; + var lab0; + var cursor$0; + var cursor$1; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, SpanishStemmer.a_9, 8); + if (among_var === 0) { + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_1 = (($this.limit - $this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "u")) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + $this.bra = cursor$0 = $this.cursor; + v_2 = (($this.limit - cursor$0) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "g")) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + cursor$1 = $this.cursor = (($this.limit - v_2) | 0); + if (! (! ($this.I_pV <= cursor$1) ? false : true)) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + break; + } + return true; +}; + +SpanishStemmer.r_residual_suffix$LSpanishStemmer$ = SpanishStemmer$r_residual_suffix$LSpanishStemmer$; + +SpanishStemmer.prototype.stem$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_6; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var cursor$0; + var limit$0; + var cursor$1; + var limit$1; + var cursor$2; + var cursor$3; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! SpanishStemmer$r_mark_regions$LSpanishStemmer$(this)) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = ((limit$0 - cursor$1) | 0); + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! SpanishStemmer$r_attached_pronoun$LSpanishStemmer$(this)) { + break lab1; + } + } + cursor$2 = this.cursor = (((limit$1 = this.limit) - v_2) | 0); + v_3 = ((limit$1 - cursor$2) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_4 = ((this.limit - this.cursor) | 0); + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! SpanishStemmer$r_standard_suffix$LSpanishStemmer$(this)) { + break lab4; + } + break lab3; + } + this.cursor = ((this.limit - v_4) | 0); + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! SpanishStemmer$r_y_verb_suffix$LSpanishStemmer$(this)) { + break lab5; + } + break lab3; + } + this.cursor = ((this.limit - v_4) | 0); + if (! SpanishStemmer$r_verb_suffix$LSpanishStemmer$(this)) { + break lab2; + } + } + } + this.cursor = ((this.limit - v_3) | 0); + lab6 = true; +lab6: + while (lab6 === true) { + lab6 = false; + if (! SpanishStemmer$r_residual_suffix$LSpanishStemmer$(this)) { + break lab6; + } + } + cursor$3 = this.cursor = this.limit_backward; + v_6 = cursor$3; + lab7 = true; +lab7: + while (lab7 === true) { + lab7 = false; + if (! SpanishStemmer$r_postlude$LSpanishStemmer$(this)) { + break lab7; + } + } + this.cursor = v_6; + return true; +}; + +SpanishStemmer.prototype.stem = SpanishStemmer.prototype.stem$; + +SpanishStemmer.prototype.equals$X = function (o) { + return o instanceof SpanishStemmer; +}; + +SpanishStemmer.prototype.equals = SpanishStemmer.prototype.equals$X; + +function SpanishStemmer$equals$LSpanishStemmer$X($this, o) { + return o instanceof SpanishStemmer; +}; + +SpanishStemmer.equals$LSpanishStemmer$X = SpanishStemmer$equals$LSpanishStemmer$X; + +SpanishStemmer.prototype.hashCode$ = function () { + var classname; + var hash; + var i; + var char; + classname = "SpanishStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +SpanishStemmer.prototype.hashCode = SpanishStemmer.prototype.hashCode$; + +function SpanishStemmer$hashCode$LSpanishStemmer$($this) { + var classname; + var hash; + var i; + var char; + classname = "SpanishStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +SpanishStemmer.hashCode$LSpanishStemmer$ = SpanishStemmer$hashCode$LSpanishStemmer$; + +SpanishStemmer.serialVersionUID = 1; +$__jsx_lazy_init(SpanishStemmer, "methodObject", function () { + return new SpanishStemmer(); +}); +$__jsx_lazy_init(SpanishStemmer, "a_0", function () { + return [ new Among("", -1, 6), new Among("\u00E1", 0, 1), new Among("\u00E9", 0, 2), new Among("\u00ED", 0, 3), new Among("\u00F3", 0, 4), new Among("\u00FA", 0, 5) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_1", function () { + return [ new Among("la", -1, -1), new Among("sela", 0, -1), new Among("le", -1, -1), new Among("me", -1, -1), new Among("se", -1, -1), new Among("lo", -1, -1), new Among("selo", 5, -1), new Among("las", -1, -1), new Among("selas", 7, -1), new Among("les", -1, -1), new Among("los", -1, -1), new Among("selos", 10, -1), new Among("nos", -1, -1) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_2", function () { + return [ new Among("ando", -1, 6), new Among("iendo", -1, 6), new Among("yendo", -1, 7), new Among("\u00E1ndo", -1, 2), new Among("i\u00E9ndo", -1, 1), new Among("ar", -1, 6), new Among("er", -1, 6), new Among("ir", -1, 6), new Among("\u00E1r", -1, 3), new Among("\u00E9r", -1, 4), new Among("\u00EDr", -1, 5) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_3", function () { + return [ new Among("ic", -1, -1), new Among("ad", -1, -1), new Among("os", -1, -1), new Among("iv", -1, 1) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_4", function () { + return [ new Among("able", -1, 1), new Among("ible", -1, 1), new Among("ante", -1, 1) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_5", function () { + return [ new Among("ic", -1, 1), new Among("abil", -1, 1), new Among("iv", -1, 1) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_6", function () { + return [ new Among("ica", -1, 1), new Among("ancia", -1, 2), new Among("encia", -1, 5), new Among("adora", -1, 2), new Among("osa", -1, 1), new Among("ista", -1, 1), new Among("iva", -1, 9), new Among("anza", -1, 1), new Among("log\u00EDa", -1, 3), new Among("idad", -1, 8), new Among("able", -1, 1), new Among("ible", -1, 1), new Among("ante", -1, 2), new Among("mente", -1, 7), new Among("amente", 13, 6), new Among("aci\u00F3n", -1, 2), new Among("uci\u00F3n", -1, 4), new Among("ico", -1, 1), new Among("ismo", -1, 1), new Among("oso", -1, 1), new Among("amiento", -1, 1), new Among("imiento", -1, 1), new Among("ivo", -1, 9), new Among("ador", -1, 2), new Among("icas", -1, 1), new Among("ancias", -1, 2), new Among("encias", -1, 5), new Among("adoras", -1, 2), new Among("osas", -1, 1), new Among("istas", -1, 1), new Among("ivas", -1, 9), new Among("anzas", -1, 1), new Among("log\u00EDas", -1, 3), new Among("idades", -1, 8), new Among("ables", -1, 1), new Among("ibles", -1, 1), new Among("aciones", -1, 2), new Among("uciones", -1, 4), new Among("adores", -1, 2), new Among("antes", -1, 2), new Among("icos", -1, 1), new Among("ismos", -1, 1), new Among("osos", -1, 1), new Among("amientos", -1, 1), new Among("imientos", -1, 1), new Among("ivos", -1, 9) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_7", function () { + return [ new Among("ya", -1, 1), new Among("ye", -1, 1), new Among("yan", -1, 1), new Among("yen", -1, 1), new Among("yeron", -1, 1), new Among("yendo", -1, 1), new Among("yo", -1, 1), new Among("yas", -1, 1), new Among("yes", -1, 1), new Among("yais", -1, 1), new Among("yamos", -1, 1), new Among("y\u00F3", -1, 1) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_8", function () { + return [ new Among("aba", -1, 2), new Among("ada", -1, 2), new Among("ida", -1, 2), new Among("ara", -1, 2), new Among("iera", -1, 2), new Among("\u00EDa", -1, 2), new Among("ar\u00EDa", 5, 2), new Among("er\u00EDa", 5, 2), new Among("ir\u00EDa", 5, 2), new Among("ad", -1, 2), new Among("ed", -1, 2), new Among("id", -1, 2), new Among("ase", -1, 2), new Among("iese", -1, 2), new Among("aste", -1, 2), new Among("iste", -1, 2), new Among("an", -1, 2), new Among("aban", 16, 2), new Among("aran", 16, 2), new Among("ieran", 16, 2), new Among("\u00EDan", 16, 2), new Among("ar\u00EDan", 20, 2), new Among("er\u00EDan", 20, 2), new Among("ir\u00EDan", 20, 2), new Among("en", -1, 1), new Among("asen", 24, 2), new Among("iesen", 24, 2), new Among("aron", -1, 2), new Among("ieron", -1, 2), new Among("ar\u00E1n", -1, 2), new Among("er\u00E1n", -1, 2), new Among("ir\u00E1n", -1, 2), new Among("ado", -1, 2), new Among("ido", -1, 2), new Among("ando", -1, 2), new Among("iendo", -1, 2), new Among("ar", -1, 2), new Among("er", -1, 2), new Among("ir", -1, 2), new Among("as", -1, 2), new Among("abas", 39, 2), new Among("adas", 39, 2), new Among("idas", 39, 2), new Among("aras", 39, 2), new Among("ieras", 39, 2), new Among("\u00EDas", 39, 2), new Among("ar\u00EDas", 45, 2), new Among("er\u00EDas", 45, 2), new Among("ir\u00EDas", 45, 2), new Among("es", -1, 1), new Among("ases", 49, 2), new Among("ieses", 49, 2), new Among("abais", -1, 2), new Among("arais", -1, 2), new Among("ierais", -1, 2), new Among("\u00EDais", -1, 2), new Among("ar\u00EDais", 55, 2), new Among("er\u00EDais", 55, 2), new Among("ir\u00EDais", 55, 2), new Among("aseis", -1, 2), new Among("ieseis", -1, 2), new Among("asteis", -1, 2), new Among("isteis", -1, 2), new Among("\u00E1is", -1, 2), new Among("\u00E9is", -1, 1), new Among("ar\u00E9is", 64, 2), new Among("er\u00E9is", 64, 2), new Among("ir\u00E9is", 64, 2), new Among("ados", -1, 2), new Among("idos", -1, 2), new Among("amos", -1, 2), new Among("\u00E1bamos", 70, 2), new Among("\u00E1ramos", 70, 2), new Among("i\u00E9ramos", 70, 2), new Among("\u00EDamos", 70, 2), new Among("ar\u00EDamos", 74, 2), new Among("er\u00EDamos", 74, 2), new Among("ir\u00EDamos", 74, 2), new Among("emos", -1, 1), new Among("aremos", 78, 2), new Among("eremos", 78, 2), new Among("iremos", 78, 2), new Among("\u00E1semos", 78, 2), new Among("i\u00E9semos", 78, 2), new Among("imos", -1, 2), new Among("ar\u00E1s", -1, 2), new Among("er\u00E1s", -1, 2), new Among("ir\u00E1s", -1, 2), new Among("\u00EDs", -1, 2), new Among("ar\u00E1", -1, 2), new Among("er\u00E1", -1, 2), new Among("ir\u00E1", -1, 2), new Among("ar\u00E9", -1, 2), new Among("er\u00E9", -1, 2), new Among("ir\u00E9", -1, 2), new Among("i\u00F3", -1, 2) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_9", function () { + return [ new Among("a", -1, 1), new Among("e", -1, 2), new Among("o", -1, 1), new Among("os", -1, 1), new Among("\u00E1", -1, 1), new Among("\u00E9", -1, 2), new Among("\u00ED", -1, 1), new Among("\u00F3", -1, 1) ]; +}); +SpanishStemmer.g_v = [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 10 ]; + +var $__jsx_classMap = { + "src/among.jsx": { + Among: Among, + Among$SII: Among, + Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$0 + }, + "src/stemmer.jsx": { + Stemmer: Stemmer, + Stemmer$: Stemmer + }, + "src/base-stemmer.jsx": { + BaseStemmer: BaseStemmer, + BaseStemmer$: BaseStemmer + }, + "src/spanish-stemmer.jsx": { + SpanishStemmer: SpanishStemmer, + SpanishStemmer$: SpanishStemmer + } +}; + + +})(JSX); + +var Among = JSX.require("src/among.jsx").Among; +var Among$SII = JSX.require("src/among.jsx").Among$SII; +var Stemmer = JSX.require("src/stemmer.jsx").Stemmer; +var BaseStemmer = JSX.require("src/base-stemmer.jsx").BaseStemmer; +var SpanishStemmer = JSX.require("src/spanish-stemmer.jsx").SpanishStemmer; diff --git a/sphinx/sphinx/search/non-minified-js/swedish-stemmer.js b/sphinx/sphinx/search/non-minified-js/swedish-stemmer.js new file mode 100644 index 0000000..fd2a58f --- /dev/null +++ b/sphinx/sphinx/search/non-minified-js/swedish-stemmer.js @@ -0,0 +1,1743 @@ +// generatedy by JSX compiler 0.9.89 (2014-05-20 06:01:03 +0900; 8e8c6105f36f3dfe440ea026a3c93a3444977102) +var JSX = {}; +(function (JSX) { +/** + * extends the class + */ +function $__jsx_extend(derivations, base) { + var ctor = function () {}; + ctor.prototype = base.prototype; + var proto = new ctor(); + for (var i in derivations) { + derivations[i].prototype = proto; + } +} + +/** + * copies the implementations from source interface to target + */ +function $__jsx_merge_interface(target, source) { + for (var k in source.prototype) + if (source.prototype.hasOwnProperty(k)) + target.prototype[k] = source.prototype[k]; +} + +/** + * defers the initialization of the property + */ +function $__jsx_lazy_init(obj, prop, func) { + function reset(obj, prop, value) { + delete obj[prop]; + obj[prop] = value; + return value; + } + + Object.defineProperty(obj, prop, { + get: function () { + return reset(obj, prop, func()); + }, + set: function (v) { + reset(obj, prop, v); + }, + enumerable: true, + configurable: true + }); +} + +var $__jsx_imul = Math.imul; +if (typeof $__jsx_imul === "undefined") { + $__jsx_imul = function (a, b) { + var ah = (a >>> 16) & 0xffff; + var al = a & 0xffff; + var bh = (b >>> 16) & 0xffff; + var bl = b & 0xffff; + return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0); + }; +} + +/** + * fused int-ops with side-effects + */ +function $__jsx_ipadd(o, p, r) { + return o[p] = (o[p] + r) | 0; +} +function $__jsx_ipsub(o, p, r) { + return o[p] = (o[p] - r) | 0; +} +function $__jsx_ipmul(o, p, r) { + return o[p] = $__jsx_imul(o[p], r); +} +function $__jsx_ipdiv(o, p, r) { + return o[p] = (o[p] / r) | 0; +} +function $__jsx_ipmod(o, p, r) { + return o[p] = (o[p] % r) | 0; +} +function $__jsx_ippostinc(o, p) { + var v = o[p]; + o[p] = (v + 1) | 0; + return v; +} +function $__jsx_ippostdec(o, p) { + var v = o[p]; + o[p] = (v - 1) | 0; + return v; +} + +/** + * non-inlined version of Array#each + */ +function $__jsx_forEach(o, f) { + var l = o.length; + for (var i = 0; i < l; ++i) + f(o[i]); +} + +/* + * global functions, renamed to avoid conflict with local variable names + */ +var $__jsx_parseInt = parseInt; +var $__jsx_parseFloat = parseFloat; +function $__jsx_isNaN(n) { return n !== n; } +var $__jsx_isFinite = isFinite; + +var $__jsx_encodeURIComponent = encodeURIComponent; +var $__jsx_decodeURIComponent = decodeURIComponent; +var $__jsx_encodeURI = encodeURI; +var $__jsx_decodeURI = decodeURI; + +var $__jsx_ObjectToString = Object.prototype.toString; +var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty; + +/* + * profiler object, initialized afterwards + */ +function $__jsx_profiler() { +} + +/* + * public interface to JSX code + */ +JSX.require = function (path) { + var m = $__jsx_classMap[path]; + return m !== undefined ? m : null; +}; + +JSX.profilerIsRunning = function () { + return $__jsx_profiler.getResults != null; +}; + +JSX.getProfileResults = function () { + return ($__jsx_profiler.getResults || function () { return {}; })(); +}; + +JSX.postProfileResults = function (url, cb) { + if ($__jsx_profiler.postResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.postResults(url, cb); +}; + +JSX.resetProfileResults = function () { + if ($__jsx_profiler.resetResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.resetResults(); +}; +JSX.DEBUG = false; +var GeneratorFunction$0 = +(function () { + try { + return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); + } catch (e) { + return function GeneratorFunction () {}; + } +})(); +var __jsx_generator_object$0 = +(function () { + function __jsx_generator_object() { + this.__next = 0; + this.__loop = null; + this.__seed = null; + this.__value = undefined; + this.__status = 0; // SUSPENDED: 0, ACTIVE: 1, DEAD: 2 + } + + __jsx_generator_object.prototype.next = function (seed) { + switch (this.__status) { + case 0: + this.__status = 1; + this.__seed = seed; + + // go next! + this.__loop(this.__next); + + var done = false; + if (this.__next != -1) { + this.__status = 0; + } else { + this.__status = 2; + done = true; + } + return { value: this.__value, done: done }; + case 1: + throw new Error("Generator is already running"); + case 2: + throw new Error("Generator is already finished"); + default: + throw new Error("Unexpected generator internal state"); + } + }; + + return __jsx_generator_object; +}()); +function Among(s, substring_i, result) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = null; + this.instance = null; +}; + +function Among$0(s, substring_i, result, method, instance) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = method; + this.instance = instance; +}; + +$__jsx_extend([Among, Among$0], Object); +function Stemmer() { +}; + +$__jsx_extend([Stemmer], Object); +function BaseStemmer() { + var current$0; + var cursor$0; + var limit$0; + this.cache = ({ }); + current$0 = this.current = ""; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +$__jsx_extend([BaseStemmer], Stemmer); +BaseStemmer.prototype.setCurrent$S = function (value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = this.current = value; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + + +function BaseStemmer$setCurrent$LBaseStemmer$S($this, value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = $this.current = value; + cursor$0 = $this.cursor = 0; + limit$0 = $this.limit = current$0.length; + $this.limit_backward = 0; + $this.bra = cursor$0; + $this.ket = limit$0; +}; + +BaseStemmer.setCurrent$LBaseStemmer$S = BaseStemmer$setCurrent$LBaseStemmer$S; + +BaseStemmer.prototype.getCurrent$ = function () { + return this.current; +}; + + +function BaseStemmer$getCurrent$LBaseStemmer$($this) { + return $this.current; +}; + +BaseStemmer.getCurrent$LBaseStemmer$ = BaseStemmer$getCurrent$LBaseStemmer$; + +BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; +}; + + +function BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$($this, other) { + $this.current = other.current; + $this.cursor = other.cursor; + $this.limit = other.limit; + $this.limit_backward = other.limit_backward; + $this.bra = other.bra; + $this.ket = other.ket; +}; + +BaseStemmer.copy_from$LBaseStemmer$LBaseStemmer$ = BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$; + +BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping$LBaseStemmer$AIII = BaseStemmer$in_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping_b$LBaseStemmer$AIII = BaseStemmer$in_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping$LBaseStemmer$AIII = BaseStemmer$out_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping_b$LBaseStemmer$AIII = BaseStemmer$out_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range$LBaseStemmer$II = BaseStemmer$in_range$LBaseStemmer$II; + +BaseStemmer.prototype.in_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range_b$LBaseStemmer$II = BaseStemmer$in_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.out_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range$LBaseStemmer$II = BaseStemmer$out_range$LBaseStemmer$II; + +BaseStemmer.prototype.out_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range_b$LBaseStemmer$II = BaseStemmer$out_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.eq_s$IS = function (s_size, s) { + var cursor$0; + if (((this.limit - this.cursor) | 0) < s_size) { + return false; + } + if (this.current.slice(cursor$0 = this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + this.cursor = (this.cursor + s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.limit - $this.cursor) | 0) < s_size) { + return false; + } + if ($this.current.slice(cursor$0 = $this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + $this.cursor = ($this.cursor + s_size) | 0; + return true; +}; + +BaseStemmer.eq_s$LBaseStemmer$IS = BaseStemmer$eq_s$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) { + var cursor$0; + if (((this.cursor - this.limit_backward) | 0) < s_size) { + return false; + } + if (this.current.slice((((cursor$0 = this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + this.cursor = (this.cursor - s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.cursor - $this.limit_backward) | 0) < s_size) { + return false; + } + if ($this.current.slice((((cursor$0 = $this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + $this.cursor = ($this.cursor - s_size) | 0; + return true; +}; + +BaseStemmer.eq_s_b$LBaseStemmer$IS = BaseStemmer$eq_s_b$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_v$S = function (s) { + return BaseStemmer$eq_s$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v$LBaseStemmer$S = BaseStemmer$eq_v$LBaseStemmer$S; + +BaseStemmer.prototype.eq_v_b$S = function (s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v_b$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v_b$LBaseStemmer$S = BaseStemmer$eq_v_b$LBaseStemmer$S; + +BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + l = this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + l = $this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + $this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among$LBaseStemmer$ALAmong$I = BaseStemmer$find_among$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + lb = this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(this); + this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + lb = $this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method($this); + $this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among_b$LBaseStemmer$ALAmong$I = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit = (this.limit + adjustment) | 0; + if (this.cursor >= c_ket) { + this.cursor = (this.cursor + adjustment) | 0; + } else if (this.cursor > c_bra) { + this.cursor = c_bra; + } + return (adjustment | 0); +}; + + +function BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + $this.current = $this.current.slice(0, c_bra) + s + $this.current.slice(c_ket); + $this.limit = ($this.limit + adjustment) | 0; + if ($this.cursor >= c_ket) { + $this.cursor = ($this.cursor + adjustment) | 0; + } else if ($this.cursor > c_bra) { + $this.cursor = c_bra; + } + return (adjustment | 0); +}; + +BaseStemmer.replace_s$LBaseStemmer$IIS = BaseStemmer$replace_s$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_check$ = function () { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true); +}; + + +function BaseStemmer$slice_check$LBaseStemmer$($this) { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true); +}; + +BaseStemmer.slice_check$LBaseStemmer$ = BaseStemmer$slice_check$LBaseStemmer$; + +BaseStemmer.prototype.slice_from$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS(this, this.bra, this.ket, s); + result = true; + } + return result; +}; + + +function BaseStemmer$slice_from$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS($this, $this.bra, $this.ket, s); + result = true; + } + return result; +}; + +BaseStemmer.slice_from$LBaseStemmer$S = BaseStemmer$slice_from$LBaseStemmer$S; + +BaseStemmer.prototype.slice_del$ = function () { + return BaseStemmer$slice_from$LBaseStemmer$S(this, ""); +}; + + +function BaseStemmer$slice_del$LBaseStemmer$($this) { + return BaseStemmer$slice_from$LBaseStemmer$S($this, ""); +}; + +BaseStemmer.slice_del$LBaseStemmer$ = BaseStemmer$slice_del$LBaseStemmer$; + +BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS(this, c_bra, c_ket, s); + if (c_bra <= this.bra) { + this.bra = (this.bra + adjustment) | 0; + } + if (c_bra <= this.ket) { + this.ket = (this.ket + adjustment) | 0; + } +}; + + +function BaseStemmer$insert$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s); + if (c_bra <= $this.bra) { + $this.bra = ($this.bra + adjustment) | 0; + } + if (c_bra <= $this.ket) { + $this.ket = ($this.ket + adjustment) | 0; + } +}; + +BaseStemmer.insert$LBaseStemmer$IIS = BaseStemmer$insert$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_to$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + result = this.current.slice(this.bra, this.ket); + } + return result; +}; + + +function BaseStemmer$slice_to$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + result = $this.current.slice($this.bra, $this.ket); + } + return result; +}; + +BaseStemmer.slice_to$LBaseStemmer$S = BaseStemmer$slice_to$LBaseStemmer$S; + +BaseStemmer.prototype.assign_to$S = function (s) { + return this.current.slice(0, this.limit); +}; + + +function BaseStemmer$assign_to$LBaseStemmer$S($this, s) { + return $this.current.slice(0, $this.limit); +}; + +BaseStemmer.assign_to$LBaseStemmer$S = BaseStemmer$assign_to$LBaseStemmer$S; + +BaseStemmer.prototype.stem$ = function () { + return false; +}; + + +BaseStemmer.prototype.stemWord$S = function (word) { + var result; + var current$0; + var cursor$0; + var limit$0; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + return result; +}; + +BaseStemmer.prototype.stemWord = BaseStemmer.prototype.stemWord$S; + +BaseStemmer.prototype.stemWords$AS = function (words) { + var results; + var i; + var word; + var result; + var current$0; + var cursor$0; + var limit$0; + results = [ ]; + for (i = 0; i < words.length; i++) { + word = words[i]; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + results.push(result); + } + return results; +}; + +BaseStemmer.prototype.stemWords = BaseStemmer.prototype.stemWords$AS; + +function SwedishStemmer() { + BaseStemmer.call(this); + this.I_x = 0; + this.I_p1 = 0; +}; + +$__jsx_extend([SwedishStemmer], BaseStemmer); +SwedishStemmer.prototype.copy_from$LSwedishStemmer$ = function (other) { + this.I_x = other.I_x; + this.I_p1 = other.I_p1; + BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$(this, other); +}; + +SwedishStemmer.prototype.copy_from = SwedishStemmer.prototype.copy_from$LSwedishStemmer$; + +SwedishStemmer.prototype.r_mark_regions$ = function () { + var v_1; + var v_2; + var c; + var lab1; + var lab3; + var lab4; + var cursor$0; + var limit$0; + var cursor$1; + var cursor$2; + var $__jsx_postinc_t; + this.I_p1 = limit$0 = this.limit; + v_1 = cursor$0 = this.cursor; + c = (cursor$0 + 3 | 0); + if (0 > c || c > limit$0) { + return false; + } + cursor$2 = this.cursor = c; + this.I_x = cursor$2; + this.cursor = v_1; +golab0: + while (true) { + v_2 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, SwedishStemmer.g_v, 97, 246)) { + break lab1; + } + this.cursor = v_2; + break golab0; + } + cursor$1 = this.cursor = v_2; + if (cursor$1 >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, SwedishStemmer.g_v, 97, 246)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p1 = this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! (this.I_p1 < this.I_x)) { + break lab4; + } + this.I_p1 = this.I_x; + } + return true; +}; + +SwedishStemmer.prototype.r_mark_regions = SwedishStemmer.prototype.r_mark_regions$; + +function SwedishStemmer$r_mark_regions$LSwedishStemmer$($this) { + var v_1; + var v_2; + var c; + var lab1; + var lab3; + var lab4; + var cursor$0; + var limit$0; + var cursor$1; + var cursor$2; + var $__jsx_postinc_t; + $this.I_p1 = limit$0 = $this.limit; + v_1 = cursor$0 = $this.cursor; + c = (cursor$0 + 3 | 0); + if (0 > c || c > limit$0) { + return false; + } + cursor$2 = $this.cursor = c; + $this.I_x = cursor$2; + $this.cursor = v_1; +golab0: + while (true) { + v_2 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, SwedishStemmer.g_v, 97, 246)) { + break lab1; + } + $this.cursor = v_2; + break golab0; + } + cursor$1 = $this.cursor = v_2; + if (cursor$1 >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, SwedishStemmer.g_v, 97, 246)) { + break lab3; + } + break golab2; + } + if ($this.cursor >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p1 = $this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! ($this.I_p1 < $this.I_x)) { + break lab4; + } + $this.I_p1 = $this.I_x; + } + return true; +}; + +SwedishStemmer.r_mark_regions$LSwedishStemmer$ = SwedishStemmer$r_mark_regions$LSwedishStemmer$; + +SwedishStemmer.prototype.r_main_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, SwedishStemmer.a_0, 37); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, SwedishStemmer.g_s_ending, 98, 121)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + return true; +}; + +SwedishStemmer.prototype.r_main_suffix = SwedishStemmer.prototype.r_main_suffix$; + +function SwedishStemmer$r_main_suffix$LSwedishStemmer$($this) { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_p1) { + return false; + } + cursor$1 = $this.cursor = $this.I_p1; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, SwedishStemmer.a_0, 37); + if (among_var === 0) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + $this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, SwedishStemmer.g_s_ending, 98, 121)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + return true; +}; + +SwedishStemmer.r_main_suffix$LSwedishStemmer$ = SwedishStemmer$r_main_suffix$LSwedishStemmer$; + +SwedishStemmer.prototype.r_consonant_pair$ = function () { + var v_1; + var v_2; + var v_3; + var cursor$0; + var cursor$1; + var limit$0; + var cursor$2; + var cursor$3; + var $__jsx_postinc_t; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = (((limit$0 = this.limit) - v_1) | 0); + v_3 = ((limit$0 - cursor$2) | 0); + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, SwedishStemmer.a_1, 7) === 0) { + this.limit_backward = v_2; + return false; + } + cursor$3 = this.cursor = ((this.limit - v_3) | 0); + this.ket = cursor$3; + if (cursor$3 <= this.limit_backward) { + this.limit_backward = v_2; + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + this.limit_backward = v_2; + return true; +}; + +SwedishStemmer.prototype.r_consonant_pair = SwedishStemmer.prototype.r_consonant_pair$; + +function SwedishStemmer$r_consonant_pair$LSwedishStemmer$($this) { + var v_1; + var v_2; + var v_3; + var cursor$0; + var cursor$1; + var limit$0; + var cursor$2; + var cursor$3; + var $__jsx_postinc_t; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_p1) { + return false; + } + cursor$1 = $this.cursor = $this.I_p1; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (((limit$0 = $this.limit) - v_1) | 0); + v_3 = ((limit$0 - cursor$2) | 0); + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, SwedishStemmer.a_1, 7) === 0) { + $this.limit_backward = v_2; + return false; + } + cursor$3 = $this.cursor = (($this.limit - v_3) | 0); + $this.ket = cursor$3; + if (cursor$3 <= $this.limit_backward) { + $this.limit_backward = v_2; + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + $this.limit_backward = v_2; + return true; +}; + +SwedishStemmer.r_consonant_pair$LSwedishStemmer$ = SwedishStemmer$r_consonant_pair$LSwedishStemmer$; + +SwedishStemmer.prototype.r_other_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, SwedishStemmer.a_2, 5); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "l\u00F6s")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "full")) { + return false; + } + break; + } + this.limit_backward = v_2; + return true; +}; + +SwedishStemmer.prototype.r_other_suffix = SwedishStemmer.prototype.r_other_suffix$; + +function SwedishStemmer$r_other_suffix$LSwedishStemmer$($this) { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_p1) { + return false; + } + cursor$1 = $this.cursor = $this.I_p1; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, SwedishStemmer.a_2, 5); + if (among_var === 0) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.limit_backward = v_2; + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "l\u00F6s")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "full")) { + return false; + } + break; + } + $this.limit_backward = v_2; + return true; +}; + +SwedishStemmer.r_other_suffix$LSwedishStemmer$ = SwedishStemmer$r_other_suffix$LSwedishStemmer$; + +SwedishStemmer.prototype.stem$ = function () { + var v_1; + var v_2; + var v_3; + var lab0; + var lab1; + var lab2; + var lab3; + var cursor$0; + var limit$0; + var cursor$1; + var limit$1; + var cursor$2; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! SwedishStemmer$r_mark_regions$LSwedishStemmer$(this)) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = ((limit$0 - cursor$1) | 0); + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! SwedishStemmer$r_main_suffix$LSwedishStemmer$(this)) { + break lab1; + } + } + cursor$2 = this.cursor = (((limit$1 = this.limit) - v_2) | 0); + v_3 = ((limit$1 - cursor$2) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! SwedishStemmer$r_consonant_pair$LSwedishStemmer$(this)) { + break lab2; + } + } + this.cursor = ((this.limit - v_3) | 0); + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! SwedishStemmer$r_other_suffix$LSwedishStemmer$(this)) { + break lab3; + } + } + this.cursor = this.limit_backward; + return true; +}; + +SwedishStemmer.prototype.stem = SwedishStemmer.prototype.stem$; + +SwedishStemmer.prototype.equals$X = function (o) { + return o instanceof SwedishStemmer; +}; + +SwedishStemmer.prototype.equals = SwedishStemmer.prototype.equals$X; + +function SwedishStemmer$equals$LSwedishStemmer$X($this, o) { + return o instanceof SwedishStemmer; +}; + +SwedishStemmer.equals$LSwedishStemmer$X = SwedishStemmer$equals$LSwedishStemmer$X; + +SwedishStemmer.prototype.hashCode$ = function () { + var classname; + var hash; + var i; + var char; + classname = "SwedishStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +SwedishStemmer.prototype.hashCode = SwedishStemmer.prototype.hashCode$; + +function SwedishStemmer$hashCode$LSwedishStemmer$($this) { + var classname; + var hash; + var i; + var char; + classname = "SwedishStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +SwedishStemmer.hashCode$LSwedishStemmer$ = SwedishStemmer$hashCode$LSwedishStemmer$; + +SwedishStemmer.serialVersionUID = 1; +$__jsx_lazy_init(SwedishStemmer, "methodObject", function () { + return new SwedishStemmer(); +}); +$__jsx_lazy_init(SwedishStemmer, "a_0", function () { + return [ new Among("a", -1, 1), new Among("arna", 0, 1), new Among("erna", 0, 1), new Among("heterna", 2, 1), new Among("orna", 0, 1), new Among("ad", -1, 1), new Among("e", -1, 1), new Among("ade", 6, 1), new Among("ande", 6, 1), new Among("arne", 6, 1), new Among("are", 6, 1), new Among("aste", 6, 1), new Among("en", -1, 1), new Among("anden", 12, 1), new Among("aren", 12, 1), new Among("heten", 12, 1), new Among("ern", -1, 1), new Among("ar", -1, 1), new Among("er", -1, 1), new Among("heter", 18, 1), new Among("or", -1, 1), new Among("s", -1, 2), new Among("as", 21, 1), new Among("arnas", 22, 1), new Among("ernas", 22, 1), new Among("ornas", 22, 1), new Among("es", 21, 1), new Among("ades", 26, 1), new Among("andes", 26, 1), new Among("ens", 21, 1), new Among("arens", 29, 1), new Among("hetens", 29, 1), new Among("erns", 21, 1), new Among("at", -1, 1), new Among("andet", -1, 1), new Among("het", -1, 1), new Among("ast", -1, 1) ]; +}); +$__jsx_lazy_init(SwedishStemmer, "a_1", function () { + return [ new Among("dd", -1, -1), new Among("gd", -1, -1), new Among("nn", -1, -1), new Among("dt", -1, -1), new Among("gt", -1, -1), new Among("kt", -1, -1), new Among("tt", -1, -1) ]; +}); +$__jsx_lazy_init(SwedishStemmer, "a_2", function () { + return [ new Among("ig", -1, 1), new Among("lig", 0, 1), new Among("els", -1, 1), new Among("fullt", -1, 3), new Among("l\u00F6st", -1, 2) ]; +}); +SwedishStemmer.g_v = [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 32 ]; +SwedishStemmer.g_s_ending = [ 119, 127, 149 ]; + +var $__jsx_classMap = { + "src/among.jsx": { + Among: Among, + Among$SII: Among, + Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$0 + }, + "src/stemmer.jsx": { + Stemmer: Stemmer, + Stemmer$: Stemmer + }, + "src/base-stemmer.jsx": { + BaseStemmer: BaseStemmer, + BaseStemmer$: BaseStemmer + }, + "src/swedish-stemmer.jsx": { + SwedishStemmer: SwedishStemmer, + SwedishStemmer$: SwedishStemmer + } +}; + + +})(JSX); + +var Among = JSX.require("src/among.jsx").Among; +var Among$SII = JSX.require("src/among.jsx").Among$SII; +var Stemmer = JSX.require("src/stemmer.jsx").Stemmer; +var BaseStemmer = JSX.require("src/base-stemmer.jsx").BaseStemmer; +var SwedishStemmer = JSX.require("src/swedish-stemmer.jsx").SwedishStemmer; diff --git a/sphinx/sphinx/search/non-minified-js/turkish-stemmer.js b/sphinx/sphinx/search/non-minified-js/turkish-stemmer.js new file mode 100644 index 0000000..f8f0885 --- /dev/null +++ b/sphinx/sphinx/search/non-minified-js/turkish-stemmer.js @@ -0,0 +1,6721 @@ +// generatedy by JSX compiler 0.9.89 (2014-05-20 06:01:03 +0900; 8e8c6105f36f3dfe440ea026a3c93a3444977102) +var JSX = {}; +(function (JSX) { +/** + * extends the class + */ +function $__jsx_extend(derivations, base) { + var ctor = function () {}; + ctor.prototype = base.prototype; + var proto = new ctor(); + for (var i in derivations) { + derivations[i].prototype = proto; + } +} + +/** + * copies the implementations from source interface to target + */ +function $__jsx_merge_interface(target, source) { + for (var k in source.prototype) + if (source.prototype.hasOwnProperty(k)) + target.prototype[k] = source.prototype[k]; +} + +/** + * defers the initialization of the property + */ +function $__jsx_lazy_init(obj, prop, func) { + function reset(obj, prop, value) { + delete obj[prop]; + obj[prop] = value; + return value; + } + + Object.defineProperty(obj, prop, { + get: function () { + return reset(obj, prop, func()); + }, + set: function (v) { + reset(obj, prop, v); + }, + enumerable: true, + configurable: true + }); +} + +var $__jsx_imul = Math.imul; +if (typeof $__jsx_imul === "undefined") { + $__jsx_imul = function (a, b) { + var ah = (a >>> 16) & 0xffff; + var al = a & 0xffff; + var bh = (b >>> 16) & 0xffff; + var bl = b & 0xffff; + return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0); + }; +} + +/** + * fused int-ops with side-effects + */ +function $__jsx_ipadd(o, p, r) { + return o[p] = (o[p] + r) | 0; +} +function $__jsx_ipsub(o, p, r) { + return o[p] = (o[p] - r) | 0; +} +function $__jsx_ipmul(o, p, r) { + return o[p] = $__jsx_imul(o[p], r); +} +function $__jsx_ipdiv(o, p, r) { + return o[p] = (o[p] / r) | 0; +} +function $__jsx_ipmod(o, p, r) { + return o[p] = (o[p] % r) | 0; +} +function $__jsx_ippostinc(o, p) { + var v = o[p]; + o[p] = (v + 1) | 0; + return v; +} +function $__jsx_ippostdec(o, p) { + var v = o[p]; + o[p] = (v - 1) | 0; + return v; +} + +/** + * non-inlined version of Array#each + */ +function $__jsx_forEach(o, f) { + var l = o.length; + for (var i = 0; i < l; ++i) + f(o[i]); +} + +/* + * global functions, renamed to avoid conflict with local variable names + */ +var $__jsx_parseInt = parseInt; +var $__jsx_parseFloat = parseFloat; +function $__jsx_isNaN(n) { return n !== n; } +var $__jsx_isFinite = isFinite; + +var $__jsx_encodeURIComponent = encodeURIComponent; +var $__jsx_decodeURIComponent = decodeURIComponent; +var $__jsx_encodeURI = encodeURI; +var $__jsx_decodeURI = decodeURI; + +var $__jsx_ObjectToString = Object.prototype.toString; +var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty; + +/* + * profiler object, initialized afterwards + */ +function $__jsx_profiler() { +} + +/* + * public interface to JSX code + */ +JSX.require = function (path) { + var m = $__jsx_classMap[path]; + return m !== undefined ? m : null; +}; + +JSX.profilerIsRunning = function () { + return $__jsx_profiler.getResults != null; +}; + +JSX.getProfileResults = function () { + return ($__jsx_profiler.getResults || function () { return {}; })(); +}; + +JSX.postProfileResults = function (url, cb) { + if ($__jsx_profiler.postResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.postResults(url, cb); +}; + +JSX.resetProfileResults = function () { + if ($__jsx_profiler.resetResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.resetResults(); +}; +JSX.DEBUG = false; +var GeneratorFunction$0 = +(function () { + try { + return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); + } catch (e) { + return function GeneratorFunction () {}; + } +})(); +var __jsx_generator_object$0 = +(function () { + function __jsx_generator_object() { + this.__next = 0; + this.__loop = null; + this.__seed = null; + this.__value = undefined; + this.__status = 0; // SUSPENDED: 0, ACTIVE: 1, DEAD: 2 + } + + __jsx_generator_object.prototype.next = function (seed) { + switch (this.__status) { + case 0: + this.__status = 1; + this.__seed = seed; + + // go next! + this.__loop(this.__next); + + var done = false; + if (this.__next != -1) { + this.__status = 0; + } else { + this.__status = 2; + done = true; + } + return { value: this.__value, done: done }; + case 1: + throw new Error("Generator is already running"); + case 2: + throw new Error("Generator is already finished"); + default: + throw new Error("Unexpected generator internal state"); + } + }; + + return __jsx_generator_object; +}()); +function Among(s, substring_i, result) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = null; + this.instance = null; +}; + +function Among$0(s, substring_i, result, method, instance) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = method; + this.instance = instance; +}; + +$__jsx_extend([Among, Among$0], Object); +function Stemmer() { +}; + +$__jsx_extend([Stemmer], Object); +function BaseStemmer() { + var current$0; + var cursor$0; + var limit$0; + this.cache = ({ }); + current$0 = this.current = ""; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +$__jsx_extend([BaseStemmer], Stemmer); +BaseStemmer.prototype.setCurrent$S = function (value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = this.current = value; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + + +function BaseStemmer$setCurrent$LBaseStemmer$S($this, value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = $this.current = value; + cursor$0 = $this.cursor = 0; + limit$0 = $this.limit = current$0.length; + $this.limit_backward = 0; + $this.bra = cursor$0; + $this.ket = limit$0; +}; + +BaseStemmer.setCurrent$LBaseStemmer$S = BaseStemmer$setCurrent$LBaseStemmer$S; + +BaseStemmer.prototype.getCurrent$ = function () { + return this.current; +}; + + +function BaseStemmer$getCurrent$LBaseStemmer$($this) { + return $this.current; +}; + +BaseStemmer.getCurrent$LBaseStemmer$ = BaseStemmer$getCurrent$LBaseStemmer$; + +BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; +}; + + +function BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$($this, other) { + $this.current = other.current; + $this.cursor = other.cursor; + $this.limit = other.limit; + $this.limit_backward = other.limit_backward; + $this.bra = other.bra; + $this.ket = other.ket; +}; + +BaseStemmer.copy_from$LBaseStemmer$LBaseStemmer$ = BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$; + +BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping$LBaseStemmer$AIII = BaseStemmer$in_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping_b$LBaseStemmer$AIII = BaseStemmer$in_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping$LBaseStemmer$AIII = BaseStemmer$out_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping_b$LBaseStemmer$AIII = BaseStemmer$out_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range$LBaseStemmer$II = BaseStemmer$in_range$LBaseStemmer$II; + +BaseStemmer.prototype.in_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range_b$LBaseStemmer$II = BaseStemmer$in_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.out_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range$LBaseStemmer$II = BaseStemmer$out_range$LBaseStemmer$II; + +BaseStemmer.prototype.out_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range_b$LBaseStemmer$II = BaseStemmer$out_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.eq_s$IS = function (s_size, s) { + var cursor$0; + if (((this.limit - this.cursor) | 0) < s_size) { + return false; + } + if (this.current.slice(cursor$0 = this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + this.cursor = (this.cursor + s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.limit - $this.cursor) | 0) < s_size) { + return false; + } + if ($this.current.slice(cursor$0 = $this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + $this.cursor = ($this.cursor + s_size) | 0; + return true; +}; + +BaseStemmer.eq_s$LBaseStemmer$IS = BaseStemmer$eq_s$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) { + var cursor$0; + if (((this.cursor - this.limit_backward) | 0) < s_size) { + return false; + } + if (this.current.slice((((cursor$0 = this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + this.cursor = (this.cursor - s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.cursor - $this.limit_backward) | 0) < s_size) { + return false; + } + if ($this.current.slice((((cursor$0 = $this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + $this.cursor = ($this.cursor - s_size) | 0; + return true; +}; + +BaseStemmer.eq_s_b$LBaseStemmer$IS = BaseStemmer$eq_s_b$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_v$S = function (s) { + return BaseStemmer$eq_s$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v$LBaseStemmer$S = BaseStemmer$eq_v$LBaseStemmer$S; + +BaseStemmer.prototype.eq_v_b$S = function (s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v_b$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v_b$LBaseStemmer$S = BaseStemmer$eq_v_b$LBaseStemmer$S; + +BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + l = this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + l = $this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + $this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among$LBaseStemmer$ALAmong$I = BaseStemmer$find_among$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + lb = this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(this); + this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + lb = $this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method($this); + $this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among_b$LBaseStemmer$ALAmong$I = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit = (this.limit + adjustment) | 0; + if (this.cursor >= c_ket) { + this.cursor = (this.cursor + adjustment) | 0; + } else if (this.cursor > c_bra) { + this.cursor = c_bra; + } + return (adjustment | 0); +}; + + +function BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + $this.current = $this.current.slice(0, c_bra) + s + $this.current.slice(c_ket); + $this.limit = ($this.limit + adjustment) | 0; + if ($this.cursor >= c_ket) { + $this.cursor = ($this.cursor + adjustment) | 0; + } else if ($this.cursor > c_bra) { + $this.cursor = c_bra; + } + return (adjustment | 0); +}; + +BaseStemmer.replace_s$LBaseStemmer$IIS = BaseStemmer$replace_s$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_check$ = function () { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true); +}; + + +function BaseStemmer$slice_check$LBaseStemmer$($this) { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true); +}; + +BaseStemmer.slice_check$LBaseStemmer$ = BaseStemmer$slice_check$LBaseStemmer$; + +BaseStemmer.prototype.slice_from$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS(this, this.bra, this.ket, s); + result = true; + } + return result; +}; + + +function BaseStemmer$slice_from$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS($this, $this.bra, $this.ket, s); + result = true; + } + return result; +}; + +BaseStemmer.slice_from$LBaseStemmer$S = BaseStemmer$slice_from$LBaseStemmer$S; + +BaseStemmer.prototype.slice_del$ = function () { + return BaseStemmer$slice_from$LBaseStemmer$S(this, ""); +}; + + +function BaseStemmer$slice_del$LBaseStemmer$($this) { + return BaseStemmer$slice_from$LBaseStemmer$S($this, ""); +}; + +BaseStemmer.slice_del$LBaseStemmer$ = BaseStemmer$slice_del$LBaseStemmer$; + +BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS(this, c_bra, c_ket, s); + if (c_bra <= this.bra) { + this.bra = (this.bra + adjustment) | 0; + } + if (c_bra <= this.ket) { + this.ket = (this.ket + adjustment) | 0; + } +}; + + +function BaseStemmer$insert$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s); + if (c_bra <= $this.bra) { + $this.bra = ($this.bra + adjustment) | 0; + } + if (c_bra <= $this.ket) { + $this.ket = ($this.ket + adjustment) | 0; + } +}; + +BaseStemmer.insert$LBaseStemmer$IIS = BaseStemmer$insert$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_to$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + result = this.current.slice(this.bra, this.ket); + } + return result; +}; + + +function BaseStemmer$slice_to$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + result = $this.current.slice($this.bra, $this.ket); + } + return result; +}; + +BaseStemmer.slice_to$LBaseStemmer$S = BaseStemmer$slice_to$LBaseStemmer$S; + +BaseStemmer.prototype.assign_to$S = function (s) { + return this.current.slice(0, this.limit); +}; + + +function BaseStemmer$assign_to$LBaseStemmer$S($this, s) { + return $this.current.slice(0, $this.limit); +}; + +BaseStemmer.assign_to$LBaseStemmer$S = BaseStemmer$assign_to$LBaseStemmer$S; + +BaseStemmer.prototype.stem$ = function () { + return false; +}; + + +BaseStemmer.prototype.stemWord$S = function (word) { + var result; + var current$0; + var cursor$0; + var limit$0; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + return result; +}; + +BaseStemmer.prototype.stemWord = BaseStemmer.prototype.stemWord$S; + +BaseStemmer.prototype.stemWords$AS = function (words) { + var results; + var i; + var word; + var result; + var current$0; + var cursor$0; + var limit$0; + results = [ ]; + for (i = 0; i < words.length; i++) { + word = words[i]; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + results.push(result); + } + return results; +}; + +BaseStemmer.prototype.stemWords = BaseStemmer.prototype.stemWords$AS; + +function TurkishStemmer() { + BaseStemmer.call(this); + this.B_continue_stemming_noun_suffixes = false; + this.I_strlen = 0; +}; + +$__jsx_extend([TurkishStemmer], BaseStemmer); +TurkishStemmer.prototype.copy_from$LTurkishStemmer$ = function (other) { + this.B_continue_stemming_noun_suffixes = other.B_continue_stemming_noun_suffixes; + this.I_strlen = other.I_strlen; + BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$(this, other); +}; + +TurkishStemmer.prototype.copy_from = TurkishStemmer.prototype.copy_from$LTurkishStemmer$; + +TurkishStemmer.prototype.r_check_vowel_harmony$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_10; + var v_11; + var lab1; + var lab2; + var lab3; + var lab5; + var lab6; + var lab8; + var lab9; + var lab11; + var lab12; + var lab14; + var lab15; + var lab17; + var lab18; + var lab20; + var lab21; + var lab23; + var lab25; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + var cursor$4; + var cursor$5; + var cursor$6; + var cursor$7; + var cursor$8; + var $__jsx_postinc_t; + v_1 = ((this.limit - this.cursor) | 0); +golab0: + while (true) { + v_2 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + this.cursor = ((this.limit - v_2) | 0); + break golab0; + } + cursor$0 = this.cursor = ((this.limit - v_2) | 0); + if (cursor$0 <= this.limit_backward) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + v_3 = ((this.limit - this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "a")) { + break lab3; + } + golab4: + while (true) { + v_4 = ((this.limit - this.cursor) | 0); + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel1, 97, 305)) { + break lab5; + } + this.cursor = ((this.limit - v_4) | 0); + break golab4; + } + cursor$1 = this.cursor = ((this.limit - v_4) | 0); + if (cursor$1 <= this.limit_backward) { + break lab3; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + break lab2; + } + this.cursor = ((this.limit - v_3) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "e")) { + break lab6; + } + golab7: + while (true) { + v_5 = ((this.limit - this.cursor) | 0); + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel2, 101, 252)) { + break lab8; + } + this.cursor = ((this.limit - v_5) | 0); + break golab7; + } + cursor$2 = this.cursor = ((this.limit - v_5) | 0); + if (cursor$2 <= this.limit_backward) { + break lab6; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + break lab2; + } + this.cursor = ((this.limit - v_3) | 0); + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u0131")) { + break lab9; + } + golab10: + while (true) { + v_6 = ((this.limit - this.cursor) | 0); + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel3, 97, 305)) { + break lab11; + } + this.cursor = ((this.limit - v_6) | 0); + break golab10; + } + cursor$3 = this.cursor = ((this.limit - v_6) | 0); + if (cursor$3 <= this.limit_backward) { + break lab9; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + break lab2; + } + this.cursor = ((this.limit - v_3) | 0); + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "i")) { + break lab12; + } + golab13: + while (true) { + v_7 = ((this.limit - this.cursor) | 0); + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel4, 101, 105)) { + break lab14; + } + this.cursor = ((this.limit - v_7) | 0); + break golab13; + } + cursor$4 = this.cursor = ((this.limit - v_7) | 0); + if (cursor$4 <= this.limit_backward) { + break lab12; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + break lab2; + } + this.cursor = ((this.limit - v_3) | 0); + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "o")) { + break lab15; + } + golab16: + while (true) { + v_8 = ((this.limit - this.cursor) | 0); + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel5, 111, 117)) { + break lab17; + } + this.cursor = ((this.limit - v_8) | 0); + break golab16; + } + cursor$5 = this.cursor = ((this.limit - v_8) | 0); + if (cursor$5 <= this.limit_backward) { + break lab15; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + break lab2; + } + this.cursor = ((this.limit - v_3) | 0); + lab18 = true; + lab18: + while (lab18 === true) { + lab18 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u00F6")) { + break lab18; + } + golab19: + while (true) { + v_9 = ((this.limit - this.cursor) | 0); + lab20 = true; + lab20: + while (lab20 === true) { + lab20 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel6, 246, 252)) { + break lab20; + } + this.cursor = ((this.limit - v_9) | 0); + break golab19; + } + cursor$6 = this.cursor = ((this.limit - v_9) | 0); + if (cursor$6 <= this.limit_backward) { + break lab18; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + break lab2; + } + this.cursor = ((this.limit - v_3) | 0); + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "u")) { + break lab21; + } + golab22: + while (true) { + v_10 = ((this.limit - this.cursor) | 0); + lab23 = true; + lab23: + while (lab23 === true) { + lab23 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel5, 111, 117)) { + break lab23; + } + this.cursor = ((this.limit - v_10) | 0); + break golab22; + } + cursor$7 = this.cursor = ((this.limit - v_10) | 0); + if (cursor$7 <= this.limit_backward) { + break lab21; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + break lab2; + } + this.cursor = ((this.limit - v_3) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u00FC")) { + return false; + } + golab24: + while (true) { + v_11 = ((this.limit - this.cursor) | 0); + lab25 = true; + lab25: + while (lab25 === true) { + lab25 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel6, 246, 252)) { + break lab25; + } + this.cursor = ((this.limit - v_11) | 0); + break golab24; + } + cursor$8 = this.cursor = ((this.limit - v_11) | 0); + if (cursor$8 <= this.limit_backward) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + } + this.cursor = ((this.limit - v_1) | 0); + return true; +}; + +TurkishStemmer.prototype.r_check_vowel_harmony = TurkishStemmer.prototype.r_check_vowel_harmony$; + +function TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_10; + var v_11; + var lab1; + var lab2; + var lab3; + var lab5; + var lab6; + var lab8; + var lab9; + var lab11; + var lab12; + var lab14; + var lab15; + var lab17; + var lab18; + var lab20; + var lab21; + var lab23; + var lab25; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + var cursor$4; + var cursor$5; + var cursor$6; + var cursor$7; + var cursor$8; + var $__jsx_postinc_t; + v_1 = (($this.limit - $this.cursor) | 0); +golab0: + while (true) { + v_2 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + $this.cursor = (($this.limit - v_2) | 0); + break golab0; + } + cursor$0 = $this.cursor = (($this.limit - v_2) | 0); + if (cursor$0 <= $this.limit_backward) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + v_3 = (($this.limit - $this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "a")) { + break lab3; + } + golab4: + while (true) { + v_4 = (($this.limit - $this.cursor) | 0); + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel1, 97, 305)) { + break lab5; + } + $this.cursor = (($this.limit - v_4) | 0); + break golab4; + } + cursor$1 = $this.cursor = (($this.limit - v_4) | 0); + if (cursor$1 <= $this.limit_backward) { + break lab3; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + break lab2; + } + $this.cursor = (($this.limit - v_3) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "e")) { + break lab6; + } + golab7: + while (true) { + v_5 = (($this.limit - $this.cursor) | 0); + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel2, 101, 252)) { + break lab8; + } + $this.cursor = (($this.limit - v_5) | 0); + break golab7; + } + cursor$2 = $this.cursor = (($this.limit - v_5) | 0); + if (cursor$2 <= $this.limit_backward) { + break lab6; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + break lab2; + } + $this.cursor = (($this.limit - v_3) | 0); + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u0131")) { + break lab9; + } + golab10: + while (true) { + v_6 = (($this.limit - $this.cursor) | 0); + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel3, 97, 305)) { + break lab11; + } + $this.cursor = (($this.limit - v_6) | 0); + break golab10; + } + cursor$3 = $this.cursor = (($this.limit - v_6) | 0); + if (cursor$3 <= $this.limit_backward) { + break lab9; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + break lab2; + } + $this.cursor = (($this.limit - v_3) | 0); + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "i")) { + break lab12; + } + golab13: + while (true) { + v_7 = (($this.limit - $this.cursor) | 0); + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel4, 101, 105)) { + break lab14; + } + $this.cursor = (($this.limit - v_7) | 0); + break golab13; + } + cursor$4 = $this.cursor = (($this.limit - v_7) | 0); + if (cursor$4 <= $this.limit_backward) { + break lab12; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + break lab2; + } + $this.cursor = (($this.limit - v_3) | 0); + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "o")) { + break lab15; + } + golab16: + while (true) { + v_8 = (($this.limit - $this.cursor) | 0); + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel5, 111, 117)) { + break lab17; + } + $this.cursor = (($this.limit - v_8) | 0); + break golab16; + } + cursor$5 = $this.cursor = (($this.limit - v_8) | 0); + if (cursor$5 <= $this.limit_backward) { + break lab15; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + break lab2; + } + $this.cursor = (($this.limit - v_3) | 0); + lab18 = true; + lab18: + while (lab18 === true) { + lab18 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u00F6")) { + break lab18; + } + golab19: + while (true) { + v_9 = (($this.limit - $this.cursor) | 0); + lab20 = true; + lab20: + while (lab20 === true) { + lab20 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel6, 246, 252)) { + break lab20; + } + $this.cursor = (($this.limit - v_9) | 0); + break golab19; + } + cursor$6 = $this.cursor = (($this.limit - v_9) | 0); + if (cursor$6 <= $this.limit_backward) { + break lab18; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + break lab2; + } + $this.cursor = (($this.limit - v_3) | 0); + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "u")) { + break lab21; + } + golab22: + while (true) { + v_10 = (($this.limit - $this.cursor) | 0); + lab23 = true; + lab23: + while (lab23 === true) { + lab23 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel5, 111, 117)) { + break lab23; + } + $this.cursor = (($this.limit - v_10) | 0); + break golab22; + } + cursor$7 = $this.cursor = (($this.limit - v_10) | 0); + if (cursor$7 <= $this.limit_backward) { + break lab21; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + break lab2; + } + $this.cursor = (($this.limit - v_3) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u00FC")) { + return false; + } + golab24: + while (true) { + v_11 = (($this.limit - $this.cursor) | 0); + lab25 = true; + lab25: + while (lab25 === true) { + lab25 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel6, 246, 252)) { + break lab25; + } + $this.cursor = (($this.limit - v_11) | 0); + break golab24; + } + cursor$8 = $this.cursor = (($this.limit - v_11) | 0); + if (cursor$8 <= $this.limit_backward) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + } + $this.cursor = (($this.limit - v_1) | 0); + return true; +}; + +TurkishStemmer.r_check_vowel_harmony$LTurkishStemmer$ = TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_suffix_with_optional_n_consonant$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var lab0; + var lab1; + var lab2; + var cursor$0; + var limit$0; + var cursor$1; + var limit$1; + var cursor$2; + var $__jsx_postinc_t; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = ((this.limit - this.cursor) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "n")) { + break lab1; + } + cursor$0 = this.cursor = ((this.limit - v_2) | 0); + if (cursor$0 <= this.limit_backward) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + v_3 = ((this.limit - this.cursor) | 0); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + this.cursor = ((this.limit - v_3) | 0); + break lab0; + } + cursor$1 = this.cursor = (((limit$0 = this.limit) - v_1) | 0); + v_4 = ((limit$0 - cursor$1) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_5 = ((this.limit - this.cursor) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "n")) { + break lab2; + } + this.cursor = ((this.limit - v_5) | 0); + return false; + } + cursor$2 = this.cursor = (((limit$1 = this.limit) - v_4) | 0); + v_6 = ((limit$1 - cursor$2) | 0); + if (cursor$2 <= this.limit_backward) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel, 97, 305)) { + return false; + } + this.cursor = ((this.limit - v_6) | 0); + } + return true; +}; + +TurkishStemmer.prototype.r_mark_suffix_with_optional_n_consonant = TurkishStemmer.prototype.r_mark_suffix_with_optional_n_consonant$; + +function TurkishStemmer$r_mark_suffix_with_optional_n_consonant$LTurkishStemmer$($this) { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var lab0; + var lab1; + var lab2; + var cursor$0; + var limit$0; + var cursor$1; + var limit$1; + var cursor$2; + var $__jsx_postinc_t; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = (($this.limit - $this.cursor) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "n")) { + break lab1; + } + cursor$0 = $this.cursor = (($this.limit - v_2) | 0); + if (cursor$0 <= $this.limit_backward) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + v_3 = (($this.limit - $this.cursor) | 0); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + $this.cursor = (($this.limit - v_3) | 0); + break lab0; + } + cursor$1 = $this.cursor = (((limit$0 = $this.limit) - v_1) | 0); + v_4 = ((limit$0 - cursor$1) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_5 = (($this.limit - $this.cursor) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "n")) { + break lab2; + } + $this.cursor = (($this.limit - v_5) | 0); + return false; + } + cursor$2 = $this.cursor = (((limit$1 = $this.limit) - v_4) | 0); + v_6 = ((limit$1 - cursor$2) | 0); + if (cursor$2 <= $this.limit_backward) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel, 97, 305)) { + return false; + } + $this.cursor = (($this.limit - v_6) | 0); + } + return true; +}; + +TurkishStemmer.r_mark_suffix_with_optional_n_consonant$LTurkishStemmer$ = TurkishStemmer$r_mark_suffix_with_optional_n_consonant$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_suffix_with_optional_s_consonant$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var lab0; + var lab1; + var lab2; + var cursor$0; + var limit$0; + var cursor$1; + var limit$1; + var cursor$2; + var $__jsx_postinc_t; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = ((this.limit - this.cursor) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "s")) { + break lab1; + } + cursor$0 = this.cursor = ((this.limit - v_2) | 0); + if (cursor$0 <= this.limit_backward) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + v_3 = ((this.limit - this.cursor) | 0); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + this.cursor = ((this.limit - v_3) | 0); + break lab0; + } + cursor$1 = this.cursor = (((limit$0 = this.limit) - v_1) | 0); + v_4 = ((limit$0 - cursor$1) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_5 = ((this.limit - this.cursor) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "s")) { + break lab2; + } + this.cursor = ((this.limit - v_5) | 0); + return false; + } + cursor$2 = this.cursor = (((limit$1 = this.limit) - v_4) | 0); + v_6 = ((limit$1 - cursor$2) | 0); + if (cursor$2 <= this.limit_backward) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel, 97, 305)) { + return false; + } + this.cursor = ((this.limit - v_6) | 0); + } + return true; +}; + +TurkishStemmer.prototype.r_mark_suffix_with_optional_s_consonant = TurkishStemmer.prototype.r_mark_suffix_with_optional_s_consonant$; + +function TurkishStemmer$r_mark_suffix_with_optional_s_consonant$LTurkishStemmer$($this) { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var lab0; + var lab1; + var lab2; + var cursor$0; + var limit$0; + var cursor$1; + var limit$1; + var cursor$2; + var $__jsx_postinc_t; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = (($this.limit - $this.cursor) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "s")) { + break lab1; + } + cursor$0 = $this.cursor = (($this.limit - v_2) | 0); + if (cursor$0 <= $this.limit_backward) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + v_3 = (($this.limit - $this.cursor) | 0); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + $this.cursor = (($this.limit - v_3) | 0); + break lab0; + } + cursor$1 = $this.cursor = (((limit$0 = $this.limit) - v_1) | 0); + v_4 = ((limit$0 - cursor$1) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_5 = (($this.limit - $this.cursor) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "s")) { + break lab2; + } + $this.cursor = (($this.limit - v_5) | 0); + return false; + } + cursor$2 = $this.cursor = (((limit$1 = $this.limit) - v_4) | 0); + v_6 = ((limit$1 - cursor$2) | 0); + if (cursor$2 <= $this.limit_backward) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel, 97, 305)) { + return false; + } + $this.cursor = (($this.limit - v_6) | 0); + } + return true; +}; + +TurkishStemmer.r_mark_suffix_with_optional_s_consonant$LTurkishStemmer$ = TurkishStemmer$r_mark_suffix_with_optional_s_consonant$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_suffix_with_optional_y_consonant$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var lab0; + var lab1; + var lab2; + var cursor$0; + var limit$0; + var cursor$1; + var limit$1; + var cursor$2; + var $__jsx_postinc_t; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = ((this.limit - this.cursor) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "y")) { + break lab1; + } + cursor$0 = this.cursor = ((this.limit - v_2) | 0); + if (cursor$0 <= this.limit_backward) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + v_3 = ((this.limit - this.cursor) | 0); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + this.cursor = ((this.limit - v_3) | 0); + break lab0; + } + cursor$1 = this.cursor = (((limit$0 = this.limit) - v_1) | 0); + v_4 = ((limit$0 - cursor$1) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_5 = ((this.limit - this.cursor) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "y")) { + break lab2; + } + this.cursor = ((this.limit - v_5) | 0); + return false; + } + cursor$2 = this.cursor = (((limit$1 = this.limit) - v_4) | 0); + v_6 = ((limit$1 - cursor$2) | 0); + if (cursor$2 <= this.limit_backward) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel, 97, 305)) { + return false; + } + this.cursor = ((this.limit - v_6) | 0); + } + return true; +}; + +TurkishStemmer.prototype.r_mark_suffix_with_optional_y_consonant = TurkishStemmer.prototype.r_mark_suffix_with_optional_y_consonant$; + +function TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var lab0; + var lab1; + var lab2; + var cursor$0; + var limit$0; + var cursor$1; + var limit$1; + var cursor$2; + var $__jsx_postinc_t; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = (($this.limit - $this.cursor) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "y")) { + break lab1; + } + cursor$0 = $this.cursor = (($this.limit - v_2) | 0); + if (cursor$0 <= $this.limit_backward) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + v_3 = (($this.limit - $this.cursor) | 0); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + $this.cursor = (($this.limit - v_3) | 0); + break lab0; + } + cursor$1 = $this.cursor = (((limit$0 = $this.limit) - v_1) | 0); + v_4 = ((limit$0 - cursor$1) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_5 = (($this.limit - $this.cursor) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "y")) { + break lab2; + } + $this.cursor = (($this.limit - v_5) | 0); + return false; + } + cursor$2 = $this.cursor = (((limit$1 = $this.limit) - v_4) | 0); + v_6 = ((limit$1 - cursor$2) | 0); + if (cursor$2 <= $this.limit_backward) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel, 97, 305)) { + return false; + } + $this.cursor = (($this.limit - v_6) | 0); + } + return true; +}; + +TurkishStemmer.r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$ = TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_suffix_with_optional_U_vowel$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var lab0; + var lab1; + var lab2; + var cursor$0; + var limit$0; + var cursor$1; + var limit$1; + var cursor$2; + var $__jsx_postinc_t; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = ((this.limit - this.cursor) | 0); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_U, 105, 305)) { + break lab1; + } + cursor$0 = this.cursor = ((this.limit - v_2) | 0); + if (cursor$0 <= this.limit_backward) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + v_3 = ((this.limit - this.cursor) | 0); + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + this.cursor = ((this.limit - v_3) | 0); + break lab0; + } + cursor$1 = this.cursor = (((limit$0 = this.limit) - v_1) | 0); + v_4 = ((limit$0 - cursor$1) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_5 = ((this.limit - this.cursor) | 0); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_U, 105, 305)) { + break lab2; + } + this.cursor = ((this.limit - v_5) | 0); + return false; + } + cursor$2 = this.cursor = (((limit$1 = this.limit) - v_4) | 0); + v_6 = ((limit$1 - cursor$2) | 0); + if (cursor$2 <= this.limit_backward) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel, 97, 305)) { + return false; + } + this.cursor = ((this.limit - v_6) | 0); + } + return true; +}; + +TurkishStemmer.prototype.r_mark_suffix_with_optional_U_vowel = TurkishStemmer.prototype.r_mark_suffix_with_optional_U_vowel$; + +function TurkishStemmer$r_mark_suffix_with_optional_U_vowel$LTurkishStemmer$($this) { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var lab0; + var lab1; + var lab2; + var cursor$0; + var limit$0; + var cursor$1; + var limit$1; + var cursor$2; + var $__jsx_postinc_t; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = (($this.limit - $this.cursor) | 0); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_U, 105, 305)) { + break lab1; + } + cursor$0 = $this.cursor = (($this.limit - v_2) | 0); + if (cursor$0 <= $this.limit_backward) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + v_3 = (($this.limit - $this.cursor) | 0); + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + $this.cursor = (($this.limit - v_3) | 0); + break lab0; + } + cursor$1 = $this.cursor = (((limit$0 = $this.limit) - v_1) | 0); + v_4 = ((limit$0 - cursor$1) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_5 = (($this.limit - $this.cursor) | 0); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_U, 105, 305)) { + break lab2; + } + $this.cursor = (($this.limit - v_5) | 0); + return false; + } + cursor$2 = $this.cursor = (((limit$1 = $this.limit) - v_4) | 0); + v_6 = ((limit$1 - cursor$2) | 0); + if (cursor$2 <= $this.limit_backward) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel, 97, 305)) { + return false; + } + $this.cursor = (($this.limit - v_6) | 0); + } + return true; +}; + +TurkishStemmer.r_mark_suffix_with_optional_U_vowel$LTurkishStemmer$ = TurkishStemmer$r_mark_suffix_with_optional_U_vowel$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_possessives$ = function () { + return (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_0, 10) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_U_vowel$LTurkishStemmer$(this) ? false : true); +}; + +TurkishStemmer.prototype.r_mark_possessives = TurkishStemmer.prototype.r_mark_possessives$; + +function TurkishStemmer$r_mark_possessives$LTurkishStemmer$($this) { + return (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_0, 10) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_U_vowel$LTurkishStemmer$($this) ? false : true); +}; + +TurkishStemmer.r_mark_possessives$LTurkishStemmer$ = TurkishStemmer$r_mark_possessives$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_sU$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_s_consonant$LTurkishStemmer$(this) ? false : true); +}; + +TurkishStemmer.prototype.r_mark_sU = TurkishStemmer.prototype.r_mark_sU$; + +function TurkishStemmer$r_mark_sU$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_s_consonant$LTurkishStemmer$($this) ? false : true); +}; + +TurkishStemmer.r_mark_sU$LTurkishStemmer$ = TurkishStemmer$r_mark_sU$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_lArI$ = function () { + return (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_1, 2) === 0 ? false : true); +}; + +TurkishStemmer.prototype.r_mark_lArI = TurkishStemmer.prototype.r_mark_lArI$; + +function TurkishStemmer$r_mark_lArI$LTurkishStemmer$($this) { + return (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_1, 2) === 0 ? false : true); +}; + +TurkishStemmer.r_mark_lArI$LTurkishStemmer$ = TurkishStemmer$r_mark_lArI$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_yU$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true); +}; + +TurkishStemmer.prototype.r_mark_yU = TurkishStemmer.prototype.r_mark_yU$; + +function TurkishStemmer$r_mark_yU$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true); +}; + +TurkishStemmer.r_mark_yU$LTurkishStemmer$ = TurkishStemmer$r_mark_yU$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_nU$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_2, 4) === 0 ? false : true); +}; + +TurkishStemmer.prototype.r_mark_nU = TurkishStemmer.prototype.r_mark_nU$; + +function TurkishStemmer$r_mark_nU$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_2, 4) === 0 ? false : true); +}; + +TurkishStemmer.r_mark_nU$LTurkishStemmer$ = TurkishStemmer$r_mark_nU$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_nUn$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_3, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_n_consonant$LTurkishStemmer$(this) ? false : true); +}; + +TurkishStemmer.prototype.r_mark_nUn = TurkishStemmer.prototype.r_mark_nUn$; + +function TurkishStemmer$r_mark_nUn$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_3, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_n_consonant$LTurkishStemmer$($this) ? false : true); +}; + +TurkishStemmer.r_mark_nUn$LTurkishStemmer$ = TurkishStemmer$r_mark_nUn$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_yA$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_4, 2) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true); +}; + +TurkishStemmer.prototype.r_mark_yA = TurkishStemmer.prototype.r_mark_yA$; + +function TurkishStemmer$r_mark_yA$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_4, 2) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true); +}; + +TurkishStemmer.r_mark_yA$LTurkishStemmer$ = TurkishStemmer$r_mark_yA$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_nA$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_5, 2) === 0 ? false : true); +}; + +TurkishStemmer.prototype.r_mark_nA = TurkishStemmer.prototype.r_mark_nA$; + +function TurkishStemmer$r_mark_nA$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_5, 2) === 0 ? false : true); +}; + +TurkishStemmer.r_mark_nA$LTurkishStemmer$ = TurkishStemmer$r_mark_nA$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_DA$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_6, 4) === 0 ? false : true); +}; + +TurkishStemmer.prototype.r_mark_DA = TurkishStemmer.prototype.r_mark_DA$; + +function TurkishStemmer$r_mark_DA$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_6, 4) === 0 ? false : true); +}; + +TurkishStemmer.r_mark_DA$LTurkishStemmer$ = TurkishStemmer$r_mark_DA$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_ndA$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_7, 2) === 0 ? false : true); +}; + +TurkishStemmer.prototype.r_mark_ndA = TurkishStemmer.prototype.r_mark_ndA$; + +function TurkishStemmer$r_mark_ndA$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_7, 2) === 0 ? false : true); +}; + +TurkishStemmer.r_mark_ndA$LTurkishStemmer$ = TurkishStemmer$r_mark_ndA$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_DAn$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_8, 4) === 0 ? false : true); +}; + +TurkishStemmer.prototype.r_mark_DAn = TurkishStemmer.prototype.r_mark_DAn$; + +function TurkishStemmer$r_mark_DAn$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_8, 4) === 0 ? false : true); +}; + +TurkishStemmer.r_mark_DAn$LTurkishStemmer$ = TurkishStemmer$r_mark_DAn$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_ndAn$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_9, 2) === 0 ? false : true); +}; + +TurkishStemmer.prototype.r_mark_ndAn = TurkishStemmer.prototype.r_mark_ndAn$; + +function TurkishStemmer$r_mark_ndAn$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_9, 2) === 0 ? false : true); +}; + +TurkishStemmer.r_mark_ndAn$LTurkishStemmer$ = TurkishStemmer$r_mark_ndAn$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_ylA$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_10, 2) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true); +}; + +TurkishStemmer.prototype.r_mark_ylA = TurkishStemmer.prototype.r_mark_ylA$; + +function TurkishStemmer$r_mark_ylA$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_10, 2) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true); +}; + +TurkishStemmer.r_mark_ylA$LTurkishStemmer$ = TurkishStemmer$r_mark_ylA$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_ki$ = function () { + return (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "ki") ? false : true); +}; + +TurkishStemmer.prototype.r_mark_ki = TurkishStemmer.prototype.r_mark_ki$; + +function TurkishStemmer$r_mark_ki$LTurkishStemmer$($this) { + return (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "ki") ? false : true); +}; + +TurkishStemmer.r_mark_ki$LTurkishStemmer$ = TurkishStemmer$r_mark_ki$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_ncA$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_11, 2) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_n_consonant$LTurkishStemmer$(this) ? false : true); +}; + +TurkishStemmer.prototype.r_mark_ncA = TurkishStemmer.prototype.r_mark_ncA$; + +function TurkishStemmer$r_mark_ncA$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_11, 2) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_n_consonant$LTurkishStemmer$($this) ? false : true); +}; + +TurkishStemmer.r_mark_ncA$LTurkishStemmer$ = TurkishStemmer$r_mark_ncA$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_yUm$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_12, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true); +}; + +TurkishStemmer.prototype.r_mark_yUm = TurkishStemmer.prototype.r_mark_yUm$; + +function TurkishStemmer$r_mark_yUm$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_12, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true); +}; + +TurkishStemmer.r_mark_yUm$LTurkishStemmer$ = TurkishStemmer$r_mark_yUm$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_sUn$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_13, 4) === 0 ? false : true); +}; + +TurkishStemmer.prototype.r_mark_sUn = TurkishStemmer.prototype.r_mark_sUn$; + +function TurkishStemmer$r_mark_sUn$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_13, 4) === 0 ? false : true); +}; + +TurkishStemmer.r_mark_sUn$LTurkishStemmer$ = TurkishStemmer$r_mark_sUn$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_yUz$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_14, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true); +}; + +TurkishStemmer.prototype.r_mark_yUz = TurkishStemmer.prototype.r_mark_yUz$; + +function TurkishStemmer$r_mark_yUz$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_14, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true); +}; + +TurkishStemmer.r_mark_yUz$LTurkishStemmer$ = TurkishStemmer$r_mark_yUz$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_sUnUz$ = function () { + return (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_15, 4) === 0 ? false : true); +}; + +TurkishStemmer.prototype.r_mark_sUnUz = TurkishStemmer.prototype.r_mark_sUnUz$; + +function TurkishStemmer$r_mark_sUnUz$LTurkishStemmer$($this) { + return (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_15, 4) === 0 ? false : true); +}; + +TurkishStemmer.r_mark_sUnUz$LTurkishStemmer$ = TurkishStemmer$r_mark_sUnUz$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_lAr$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true); +}; + +TurkishStemmer.prototype.r_mark_lAr = TurkishStemmer.prototype.r_mark_lAr$; + +function TurkishStemmer$r_mark_lAr$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true); +}; + +TurkishStemmer.r_mark_lAr$LTurkishStemmer$ = TurkishStemmer$r_mark_lAr$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_nUz$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_17, 4) === 0 ? false : true); +}; + +TurkishStemmer.prototype.r_mark_nUz = TurkishStemmer.prototype.r_mark_nUz$; + +function TurkishStemmer$r_mark_nUz$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_17, 4) === 0 ? false : true); +}; + +TurkishStemmer.r_mark_nUz$LTurkishStemmer$ = TurkishStemmer$r_mark_nUz$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_DUr$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_18, 8) === 0 ? false : true); +}; + +TurkishStemmer.prototype.r_mark_DUr = TurkishStemmer.prototype.r_mark_DUr$; + +function TurkishStemmer$r_mark_DUr$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_18, 8) === 0 ? false : true); +}; + +TurkishStemmer.r_mark_DUr$LTurkishStemmer$ = TurkishStemmer$r_mark_DUr$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_cAsInA$ = function () { + return (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_19, 2) === 0 ? false : true); +}; + +TurkishStemmer.prototype.r_mark_cAsInA = TurkishStemmer.prototype.r_mark_cAsInA$; + +function TurkishStemmer$r_mark_cAsInA$LTurkishStemmer$($this) { + return (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_19, 2) === 0 ? false : true); +}; + +TurkishStemmer.r_mark_cAsInA$LTurkishStemmer$ = TurkishStemmer$r_mark_cAsInA$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_yDU$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_20, 32) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true); +}; + +TurkishStemmer.prototype.r_mark_yDU = TurkishStemmer.prototype.r_mark_yDU$; + +function TurkishStemmer$r_mark_yDU$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_20, 32) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true); +}; + +TurkishStemmer.r_mark_yDU$LTurkishStemmer$ = TurkishStemmer$r_mark_yDU$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_ysA$ = function () { + return (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_21, 8) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true); +}; + +TurkishStemmer.prototype.r_mark_ysA = TurkishStemmer.prototype.r_mark_ysA$; + +function TurkishStemmer$r_mark_ysA$LTurkishStemmer$($this) { + return (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_21, 8) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true); +}; + +TurkishStemmer.r_mark_ysA$LTurkishStemmer$ = TurkishStemmer$r_mark_ysA$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_ymUs_$ = function () { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_22, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true); +}; + +TurkishStemmer.prototype.r_mark_ymUs_ = TurkishStemmer.prototype.r_mark_ymUs_$; + +function TurkishStemmer$r_mark_ymUs_$LTurkishStemmer$($this) { + return (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_22, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true); +}; + +TurkishStemmer.r_mark_ymUs_$LTurkishStemmer$ = TurkishStemmer$r_mark_ymUs_$LTurkishStemmer$; + +TurkishStemmer.prototype.r_mark_yken$ = function () { + return (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 3, "ken") ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true); +}; + +TurkishStemmer.prototype.r_mark_yken = TurkishStemmer.prototype.r_mark_yken$; + +function TurkishStemmer$r_mark_yken$LTurkishStemmer$($this) { + return (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 3, "ken") ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true); +}; + +TurkishStemmer.r_mark_yken$LTurkishStemmer$ = TurkishStemmer$r_mark_yken$LTurkishStemmer$; + +TurkishStemmer.prototype.r_stem_nominal_verb_suffixes$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_10; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var lab10; + var lab11; + var lab12; + var lab13; + var lab14; + var lab15; + var lab16; + var lab17; + var lab18; + var lab19; + var lab20; + var lab21; + var lab22; + var lab23; + var lab24; + var lab25; + var lab26; + var lab27; + var lab28; + var lab29; + var lab30; + var lab31; + var lab32; + var lab33; + var lab34; + this.ket = this.cursor; + this.B_continue_stemming_noun_suffixes = true; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_2 = ((this.limit - this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_22, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab3; + } + break lab2; + } + this.cursor = ((this.limit - v_2) | 0); + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_20, 32) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab4; + } + break lab2; + } + this.cursor = ((this.limit - v_2) | 0); + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_21, 8) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab5; + } + break lab2; + } + this.cursor = ((this.limit - v_2) | 0); + if (! (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 3, "ken") ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab1; + } + } + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_19, 2) === 0 ? false : true)) { + break lab6; + } + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + v_3 = ((this.limit - this.cursor) | 0); + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_15, 4) === 0 ? false : true)) { + break lab8; + } + break lab7; + } + this.cursor = ((this.limit - v_3) | 0); + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab9; + } + break lab7; + } + this.cursor = ((this.limit - v_3) | 0); + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_12, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab10; + } + break lab7; + } + this.cursor = ((this.limit - v_3) | 0); + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_13, 4) === 0 ? false : true)) { + break lab11; + } + break lab7; + } + this.cursor = ((this.limit - v_3) | 0); + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_14, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab12; + } + break lab7; + } + this.cursor = ((this.limit - v_3) | 0); + } + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_22, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab6; + } + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab13; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_4 = ((this.limit - this.cursor) | 0); + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + this.ket = this.cursor; + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + v_5 = ((this.limit - this.cursor) | 0); + lab16 = true; + lab16: + while (lab16 === true) { + lab16 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_18, 8) === 0 ? false : true)) { + break lab16; + } + break lab15; + } + this.cursor = ((this.limit - v_5) | 0); + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_20, 32) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab17; + } + break lab15; + } + this.cursor = ((this.limit - v_5) | 0); + lab18 = true; + lab18: + while (lab18 === true) { + lab18 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_21, 8) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab18; + } + break lab15; + } + this.cursor = ((this.limit - v_5) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_22, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + this.cursor = ((this.limit - v_4) | 0); + break lab14; + } + } + } + this.B_continue_stemming_noun_suffixes = false; + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_17, 4) === 0 ? false : true)) { + break lab19; + } + lab20 = true; + lab20: + while (lab20 === true) { + lab20 = false; + v_6 = ((this.limit - this.cursor) | 0); + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_20, 32) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab21; + } + break lab20; + } + this.cursor = ((this.limit - v_6) | 0); + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_21, 8) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab19; + } + } + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + lab22 = true; + lab22: + while (lab22 === true) { + lab22 = false; + lab23 = true; + lab23: + while (lab23 === true) { + lab23 = false; + v_7 = ((this.limit - this.cursor) | 0); + lab24 = true; + lab24: + while (lab24 === true) { + lab24 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_15, 4) === 0 ? false : true)) { + break lab24; + } + break lab23; + } + this.cursor = ((this.limit - v_7) | 0); + lab25 = true; + lab25: + while (lab25 === true) { + lab25 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_14, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab25; + } + break lab23; + } + this.cursor = ((this.limit - v_7) | 0); + lab26 = true; + lab26: + while (lab26 === true) { + lab26 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_13, 4) === 0 ? false : true)) { + break lab26; + } + break lab23; + } + this.cursor = ((this.limit - v_7) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_12, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab22; + } + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_8 = ((this.limit - this.cursor) | 0); + lab27 = true; + lab27: + while (lab27 === true) { + lab27 = false; + this.ket = this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_22, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + this.cursor = ((this.limit - v_8) | 0); + break lab27; + } + } + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_18, 8) === 0 ? false : true)) { + return false; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_9 = ((this.limit - this.cursor) | 0); + lab28 = true; + lab28: + while (lab28 === true) { + lab28 = false; + this.ket = this.cursor; + lab29 = true; + lab29: + while (lab29 === true) { + lab29 = false; + v_10 = ((this.limit - this.cursor) | 0); + lab30 = true; + lab30: + while (lab30 === true) { + lab30 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_15, 4) === 0 ? false : true)) { + break lab30; + } + break lab29; + } + this.cursor = ((this.limit - v_10) | 0); + lab31 = true; + lab31: + while (lab31 === true) { + lab31 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab31; + } + break lab29; + } + this.cursor = ((this.limit - v_10) | 0); + lab32 = true; + lab32: + while (lab32 === true) { + lab32 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_12, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab32; + } + break lab29; + } + this.cursor = ((this.limit - v_10) | 0); + lab33 = true; + lab33: + while (lab33 === true) { + lab33 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_13, 4) === 0 ? false : true)) { + break lab33; + } + break lab29; + } + this.cursor = ((this.limit - v_10) | 0); + lab34 = true; + lab34: + while (lab34 === true) { + lab34 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_14, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab34; + } + break lab29; + } + this.cursor = ((this.limit - v_10) | 0); + } + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_22, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + this.cursor = ((this.limit - v_9) | 0); + break lab28; + } + } + } + this.bra = this.cursor; + return (! BaseStemmer$slice_from$LBaseStemmer$S(this, "") ? false : true); +}; + +TurkishStemmer.prototype.r_stem_nominal_verb_suffixes = TurkishStemmer.prototype.r_stem_nominal_verb_suffixes$; + +function TurkishStemmer$r_stem_nominal_verb_suffixes$LTurkishStemmer$($this) { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_10; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var lab10; + var lab11; + var lab12; + var lab13; + var lab14; + var lab15; + var lab16; + var lab17; + var lab18; + var lab19; + var lab20; + var lab21; + var lab22; + var lab23; + var lab24; + var lab25; + var lab26; + var lab27; + var lab28; + var lab29; + var lab30; + var lab31; + var lab32; + var lab33; + var lab34; + $this.ket = $this.cursor; + $this.B_continue_stemming_noun_suffixes = true; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_2 = (($this.limit - $this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_22, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab3; + } + break lab2; + } + $this.cursor = (($this.limit - v_2) | 0); + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_20, 32) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab4; + } + break lab2; + } + $this.cursor = (($this.limit - v_2) | 0); + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_21, 8) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab5; + } + break lab2; + } + $this.cursor = (($this.limit - v_2) | 0); + if (! (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 3, "ken") ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab1; + } + } + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_19, 2) === 0 ? false : true)) { + break lab6; + } + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + v_3 = (($this.limit - $this.cursor) | 0); + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_15, 4) === 0 ? false : true)) { + break lab8; + } + break lab7; + } + $this.cursor = (($this.limit - v_3) | 0); + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab9; + } + break lab7; + } + $this.cursor = (($this.limit - v_3) | 0); + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_12, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab10; + } + break lab7; + } + $this.cursor = (($this.limit - v_3) | 0); + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_13, 4) === 0 ? false : true)) { + break lab11; + } + break lab7; + } + $this.cursor = (($this.limit - v_3) | 0); + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_14, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab12; + } + break lab7; + } + $this.cursor = (($this.limit - v_3) | 0); + } + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_22, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab6; + } + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab13; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_4 = (($this.limit - $this.cursor) | 0); + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + $this.ket = $this.cursor; + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + v_5 = (($this.limit - $this.cursor) | 0); + lab16 = true; + lab16: + while (lab16 === true) { + lab16 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_18, 8) === 0 ? false : true)) { + break lab16; + } + break lab15; + } + $this.cursor = (($this.limit - v_5) | 0); + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_20, 32) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab17; + } + break lab15; + } + $this.cursor = (($this.limit - v_5) | 0); + lab18 = true; + lab18: + while (lab18 === true) { + lab18 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_21, 8) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab18; + } + break lab15; + } + $this.cursor = (($this.limit - v_5) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_22, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + $this.cursor = (($this.limit - v_4) | 0); + break lab14; + } + } + } + $this.B_continue_stemming_noun_suffixes = false; + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_17, 4) === 0 ? false : true)) { + break lab19; + } + lab20 = true; + lab20: + while (lab20 === true) { + lab20 = false; + v_6 = (($this.limit - $this.cursor) | 0); + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_20, 32) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab21; + } + break lab20; + } + $this.cursor = (($this.limit - v_6) | 0); + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_21, 8) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab19; + } + } + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + lab22 = true; + lab22: + while (lab22 === true) { + lab22 = false; + lab23 = true; + lab23: + while (lab23 === true) { + lab23 = false; + v_7 = (($this.limit - $this.cursor) | 0); + lab24 = true; + lab24: + while (lab24 === true) { + lab24 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_15, 4) === 0 ? false : true)) { + break lab24; + } + break lab23; + } + $this.cursor = (($this.limit - v_7) | 0); + lab25 = true; + lab25: + while (lab25 === true) { + lab25 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_14, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab25; + } + break lab23; + } + $this.cursor = (($this.limit - v_7) | 0); + lab26 = true; + lab26: + while (lab26 === true) { + lab26 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_13, 4) === 0 ? false : true)) { + break lab26; + } + break lab23; + } + $this.cursor = (($this.limit - v_7) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_12, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab22; + } + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_8 = (($this.limit - $this.cursor) | 0); + lab27 = true; + lab27: + while (lab27 === true) { + lab27 = false; + $this.ket = $this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_22, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + $this.cursor = (($this.limit - v_8) | 0); + break lab27; + } + } + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_18, 8) === 0 ? false : true)) { + return false; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_9 = (($this.limit - $this.cursor) | 0); + lab28 = true; + lab28: + while (lab28 === true) { + lab28 = false; + $this.ket = $this.cursor; + lab29 = true; + lab29: + while (lab29 === true) { + lab29 = false; + v_10 = (($this.limit - $this.cursor) | 0); + lab30 = true; + lab30: + while (lab30 === true) { + lab30 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_15, 4) === 0 ? false : true)) { + break lab30; + } + break lab29; + } + $this.cursor = (($this.limit - v_10) | 0); + lab31 = true; + lab31: + while (lab31 === true) { + lab31 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab31; + } + break lab29; + } + $this.cursor = (($this.limit - v_10) | 0); + lab32 = true; + lab32: + while (lab32 === true) { + lab32 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_12, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab32; + } + break lab29; + } + $this.cursor = (($this.limit - v_10) | 0); + lab33 = true; + lab33: + while (lab33 === true) { + lab33 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_13, 4) === 0 ? false : true)) { + break lab33; + } + break lab29; + } + $this.cursor = (($this.limit - v_10) | 0); + lab34 = true; + lab34: + while (lab34 === true) { + lab34 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_14, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab34; + } + break lab29; + } + $this.cursor = (($this.limit - v_10) | 0); + } + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_22, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + $this.cursor = (($this.limit - v_9) | 0); + break lab28; + } + } + } + $this.bra = $this.cursor; + return (! BaseStemmer$slice_from$LBaseStemmer$S($this, "") ? false : true); +}; + +TurkishStemmer.r_stem_nominal_verb_suffixes$LTurkishStemmer$ = TurkishStemmer$r_stem_nominal_verb_suffixes$LTurkishStemmer$; + +TurkishStemmer.prototype.r_stem_suffix_chain_before_ki$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_10; + var v_11; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var lab10; + var lab11; + var lab12; + var lab13; + var lab14; + var lab15; + var lab16; + var lab17; + var lab18; + this.ket = this.cursor; + if (! (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "ki") ? false : true)) { + return false; + } + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_6, 4) === 0 ? false : true)) { + break lab1; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_2 = ((this.limit - this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = ((this.limit - this.cursor) | 0); + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab4; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_4 = ((this.limit - this.cursor) | 0); + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + this.cursor = ((this.limit - v_4) | 0); + break lab5; + } + } + break lab3; + } + this.cursor = ((this.limit - v_3) | 0); + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_0, 10) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_U_vowel$LTurkishStemmer$(this) ? false : true)) { + this.cursor = ((this.limit - v_2) | 0); + break lab2; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_5 = ((this.limit - this.cursor) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + this.ket = this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = ((this.limit - v_5) | 0); + break lab6; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + this.cursor = ((this.limit - v_5) | 0); + break lab6; + } + } + } + } + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_3, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_n_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab7; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_6 = ((this.limit - this.cursor) | 0); + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + this.ket = this.cursor; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_7 = ((this.limit - this.cursor) | 0); + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab10; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break lab9; + } + this.cursor = ((this.limit - v_7) | 0); + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + this.ket = this.cursor; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + v_8 = ((this.limit - this.cursor) | 0); + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_0, 10) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_U_vowel$LTurkishStemmer$(this) ? false : true)) { + break lab13; + } + break lab12; + } + this.cursor = ((this.limit - v_8) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_s_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab11; + } + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_9 = ((this.limit - this.cursor) | 0); + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + this.ket = this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = ((this.limit - v_9) | 0); + break lab14; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + this.cursor = ((this.limit - v_9) | 0); + break lab14; + } + } + break lab9; + } + this.cursor = ((this.limit - v_7) | 0); + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + this.cursor = ((this.limit - v_6) | 0); + break lab8; + } + } + } + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_7, 2) === 0 ? false : true)) { + return false; + } + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + v_10 = ((this.limit - this.cursor) | 0); + lab16 = true; + lab16: + while (lab16 === true) { + lab16 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab16; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break lab15; + } + this.cursor = ((this.limit - v_10) | 0); + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_s_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab17; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_11 = ((this.limit - this.cursor) | 0); + lab18 = true; + lab18: + while (lab18 === true) { + lab18 = false; + this.ket = this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = ((this.limit - v_11) | 0); + break lab18; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + this.cursor = ((this.limit - v_11) | 0); + break lab18; + } + } + break lab15; + } + this.cursor = ((this.limit - v_10) | 0); + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + return false; + } + } + } + return true; +}; + +TurkishStemmer.prototype.r_stem_suffix_chain_before_ki = TurkishStemmer.prototype.r_stem_suffix_chain_before_ki$; + +function TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this) { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_10; + var v_11; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var lab10; + var lab11; + var lab12; + var lab13; + var lab14; + var lab15; + var lab16; + var lab17; + var lab18; + $this.ket = $this.cursor; + if (! (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "ki") ? false : true)) { + return false; + } + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_6, 4) === 0 ? false : true)) { + break lab1; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_2 = (($this.limit - $this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + $this.ket = $this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = (($this.limit - $this.cursor) | 0); + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab4; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_4 = (($this.limit - $this.cursor) | 0); + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + $this.cursor = (($this.limit - v_4) | 0); + break lab5; + } + } + break lab3; + } + $this.cursor = (($this.limit - v_3) | 0); + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_0, 10) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_U_vowel$LTurkishStemmer$($this) ? false : true)) { + $this.cursor = (($this.limit - v_2) | 0); + break lab2; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_5 = (($this.limit - $this.cursor) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + $this.ket = $this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + $this.cursor = (($this.limit - v_5) | 0); + break lab6; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + $this.cursor = (($this.limit - v_5) | 0); + break lab6; + } + } + } + } + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_3, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_n_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab7; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_6 = (($this.limit - $this.cursor) | 0); + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + $this.ket = $this.cursor; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_7 = (($this.limit - $this.cursor) | 0); + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab10; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break lab9; + } + $this.cursor = (($this.limit - v_7) | 0); + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + $this.ket = $this.cursor; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + v_8 = (($this.limit - $this.cursor) | 0); + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_0, 10) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_U_vowel$LTurkishStemmer$($this) ? false : true)) { + break lab13; + } + break lab12; + } + $this.cursor = (($this.limit - v_8) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_s_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab11; + } + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_9 = (($this.limit - $this.cursor) | 0); + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + $this.ket = $this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + $this.cursor = (($this.limit - v_9) | 0); + break lab14; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + $this.cursor = (($this.limit - v_9) | 0); + break lab14; + } + } + break lab9; + } + $this.cursor = (($this.limit - v_7) | 0); + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + $this.cursor = (($this.limit - v_6) | 0); + break lab8; + } + } + } + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_7, 2) === 0 ? false : true)) { + return false; + } + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + v_10 = (($this.limit - $this.cursor) | 0); + lab16 = true; + lab16: + while (lab16 === true) { + lab16 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab16; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break lab15; + } + $this.cursor = (($this.limit - v_10) | 0); + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_s_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab17; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_11 = (($this.limit - $this.cursor) | 0); + lab18 = true; + lab18: + while (lab18 === true) { + lab18 = false; + $this.ket = $this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + $this.cursor = (($this.limit - v_11) | 0); + break lab18; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + $this.cursor = (($this.limit - v_11) | 0); + break lab18; + } + } + break lab15; + } + $this.cursor = (($this.limit - v_10) | 0); + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + return false; + } + } + } + return true; +}; + +TurkishStemmer.r_stem_suffix_chain_before_ki$LTurkishStemmer$ = TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$; + +TurkishStemmer.prototype.r_stem_noun_suffixes$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_10; + var v_11; + var v_12; + var v_13; + var v_14; + var v_15; + var v_16; + var v_17; + var v_18; + var v_19; + var v_20; + var v_21; + var v_22; + var v_23; + var v_24; + var v_25; + var v_26; + var v_27; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var lab10; + var lab11; + var lab12; + var lab13; + var lab14; + var lab15; + var lab16; + var lab17; + var lab18; + var lab19; + var lab20; + var lab21; + var lab22; + var lab23; + var lab24; + var lab25; + var lab26; + var lab27; + var lab28; + var lab29; + var lab30; + var lab31; + var lab32; + var lab33; + var lab34; + var lab35; + var lab36; + var lab37; + var lab38; + var lab39; + var lab40; + var lab41; + var lab42; + var lab43; + var lab44; + var lab45; + var lab46; + var lab47; + var lab48; + var lab49; + var lab50; + var lab51; + var lab52; + var lab53; + var cursor$0; + var cursor$1; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab1; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_2 = ((this.limit - this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + this.cursor = ((this.limit - v_2) | 0); + break lab2; + } + } + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.ket = this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_11, 2) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_n_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab3; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_3 = ((this.limit - this.cursor) | 0); + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_4 = ((this.limit - this.cursor) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + this.ket = this.cursor; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab6; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break lab5; + } + this.cursor = ((this.limit - v_4) | 0); + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + this.ket = this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + v_5 = ((this.limit - this.cursor) | 0); + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_0, 10) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_U_vowel$LTurkishStemmer$(this) ? false : true)) { + break lab9; + } + break lab8; + } + this.cursor = ((this.limit - v_5) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_s_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab7; + } + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_6 = ((this.limit - this.cursor) | 0); + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + this.ket = this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = ((this.limit - v_6) | 0); + break lab10; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + this.cursor = ((this.limit - v_6) | 0); + break lab10; + } + } + break lab5; + } + cursor$0 = this.cursor = ((this.limit - v_4) | 0); + this.ket = cursor$0; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = ((this.limit - v_3) | 0); + break lab4; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + this.cursor = ((this.limit - v_3) | 0); + break lab4; + } + } + } + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + this.ket = this.cursor; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + v_7 = ((this.limit - this.cursor) | 0); + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_7, 2) === 0 ? false : true)) { + break lab13; + } + break lab12; + } + this.cursor = ((this.limit - v_7) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_5, 2) === 0 ? false : true)) { + break lab11; + } + } + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + v_8 = ((this.limit - this.cursor) | 0); + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab15; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break lab14; + } + this.cursor = ((this.limit - v_8) | 0); + lab16 = true; + lab16: + while (lab16 === true) { + lab16 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_s_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab16; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_9 = ((this.limit - this.cursor) | 0); + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + this.ket = this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = ((this.limit - v_9) | 0); + break lab17; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + this.cursor = ((this.limit - v_9) | 0); + break lab17; + } + } + break lab14; + } + this.cursor = ((this.limit - v_8) | 0); + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + break lab11; + } + } + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + lab18 = true; + lab18: + while (lab18 === true) { + lab18 = false; + this.ket = this.cursor; + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + v_10 = ((this.limit - this.cursor) | 0); + lab20 = true; + lab20: + while (lab20 === true) { + lab20 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_9, 2) === 0 ? false : true)) { + break lab20; + } + break lab19; + } + this.cursor = ((this.limit - v_10) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_2, 4) === 0 ? false : true)) { + break lab18; + } + } + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + v_11 = ((this.limit - this.cursor) | 0); + lab22 = true; + lab22: + while (lab22 === true) { + lab22 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_s_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab22; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_12 = ((this.limit - this.cursor) | 0); + lab23 = true; + lab23: + while (lab23 === true) { + lab23 = false; + this.ket = this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = ((this.limit - v_12) | 0); + break lab23; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + this.cursor = ((this.limit - v_12) | 0); + break lab23; + } + } + break lab21; + } + this.cursor = ((this.limit - v_11) | 0); + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab18; + } + } + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + lab24 = true; + lab24: + while (lab24 === true) { + lab24 = false; + this.ket = this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_8, 4) === 0 ? false : true)) { + break lab24; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_13 = ((this.limit - this.cursor) | 0); + lab25 = true; + lab25: + while (lab25 === true) { + lab25 = false; + this.ket = this.cursor; + lab26 = true; + lab26: + while (lab26 === true) { + lab26 = false; + v_14 = ((this.limit - this.cursor) | 0); + lab27 = true; + lab27: + while (lab27 === true) { + lab27 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_0, 10) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_U_vowel$LTurkishStemmer$(this) ? false : true)) { + break lab27; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_15 = ((this.limit - this.cursor) | 0); + lab28 = true; + lab28: + while (lab28 === true) { + lab28 = false; + this.ket = this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = ((this.limit - v_15) | 0); + break lab28; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + this.cursor = ((this.limit - v_15) | 0); + break lab28; + } + } + break lab26; + } + this.cursor = ((this.limit - v_14) | 0); + lab29 = true; + lab29: + while (lab29 === true) { + lab29 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab29; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_16 = ((this.limit - this.cursor) | 0); + lab30 = true; + lab30: + while (lab30 === true) { + lab30 = false; + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + this.cursor = ((this.limit - v_16) | 0); + break lab30; + } + } + break lab26; + } + this.cursor = ((this.limit - v_14) | 0); + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + this.cursor = ((this.limit - v_13) | 0); + break lab25; + } + } + } + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + lab31 = true; + lab31: + while (lab31 === true) { + lab31 = false; + this.ket = this.cursor; + lab32 = true; + lab32: + while (lab32 === true) { + lab32 = false; + v_17 = ((this.limit - this.cursor) | 0); + lab33 = true; + lab33: + while (lab33 === true) { + lab33 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_3, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_n_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab33; + } + break lab32; + } + this.cursor = ((this.limit - v_17) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_10, 2) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab31; + } + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_18 = ((this.limit - this.cursor) | 0); + lab34 = true; + lab34: + while (lab34 === true) { + lab34 = false; + lab35 = true; + lab35: + while (lab35 === true) { + lab35 = false; + v_19 = ((this.limit - this.cursor) | 0); + lab36 = true; + lab36: + while (lab36 === true) { + lab36 = false; + this.ket = this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab36; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + break lab36; + } + break lab35; + } + this.cursor = ((this.limit - v_19) | 0); + lab37 = true; + lab37: + while (lab37 === true) { + lab37 = false; + this.ket = this.cursor; + lab38 = true; + lab38: + while (lab38 === true) { + lab38 = false; + v_20 = ((this.limit - this.cursor) | 0); + lab39 = true; + lab39: + while (lab39 === true) { + lab39 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_0, 10) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_U_vowel$LTurkishStemmer$(this) ? false : true)) { + break lab39; + } + break lab38; + } + this.cursor = ((this.limit - v_20) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_s_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab37; + } + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_21 = ((this.limit - this.cursor) | 0); + lab40 = true; + lab40: + while (lab40 === true) { + lab40 = false; + this.ket = this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = ((this.limit - v_21) | 0); + break lab40; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + this.cursor = ((this.limit - v_21) | 0); + break lab40; + } + } + break lab35; + } + this.cursor = ((this.limit - v_19) | 0); + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + this.cursor = ((this.limit - v_18) | 0); + break lab34; + } + } + } + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + lab41 = true; + lab41: + while (lab41 === true) { + lab41 = false; + this.ket = this.cursor; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab41; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + lab42 = true; + lab42: + while (lab42 === true) { + lab42 = false; + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + break lab42; + } + break lab0; + } + this.cursor = ((this.limit - v_1) | 0); + lab43 = true; + lab43: + while (lab43 === true) { + lab43 = false; + this.ket = this.cursor; + lab44 = true; + lab44: + while (lab44 === true) { + lab44 = false; + v_22 = ((this.limit - this.cursor) | 0); + lab45 = true; + lab45: + while (lab45 === true) { + lab45 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_6, 4) === 0 ? false : true)) { + break lab45; + } + break lab44; + } + this.cursor = ((this.limit - v_22) | 0); + lab46 = true; + lab46: + while (lab46 === true) { + lab46 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab46; + } + break lab44; + } + this.cursor = ((this.limit - v_22) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_4, 2) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$(this) ? false : true)) { + break lab43; + } + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_23 = ((this.limit - this.cursor) | 0); + lab47 = true; + lab47: + while (lab47 === true) { + lab47 = false; + this.ket = this.cursor; + lab48 = true; + lab48: + while (lab48 === true) { + lab48 = false; + v_24 = ((this.limit - this.cursor) | 0); + lab49 = true; + lab49: + while (lab49 === true) { + lab49 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_0, 10) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_U_vowel$LTurkishStemmer$(this) ? false : true)) { + break lab49; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_25 = ((this.limit - this.cursor) | 0); + lab50 = true; + lab50: + while (lab50 === true) { + lab50 = false; + this.ket = this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = ((this.limit - v_25) | 0); + break lab50; + } + } + break lab48; + } + this.cursor = ((this.limit - v_24) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = ((this.limit - v_23) | 0); + break lab47; + } + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + this.ket = this.cursor; + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + this.cursor = ((this.limit - v_23) | 0); + break lab47; + } + } + break lab0; + } + cursor$1 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$1; + lab51 = true; + lab51: + while (lab51 === true) { + lab51 = false; + v_26 = ((this.limit - this.cursor) | 0); + lab52 = true; + lab52: + while (lab52 === true) { + lab52 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_0, 10) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_U_vowel$LTurkishStemmer$(this) ? false : true)) { + break lab52; + } + break lab51; + } + this.cursor = ((this.limit - v_26) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_s_consonant$LTurkishStemmer$(this) ? false : true)) { + return false; + } + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_27 = ((this.limit - this.cursor) | 0); + lab53 = true; + lab53: + while (lab53 === true) { + lab53 = false; + this.ket = this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$(this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = ((this.limit - v_27) | 0); + break lab53; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$(this)) { + this.cursor = ((this.limit - v_27) | 0); + break lab53; + } + } + } + return true; +}; + +TurkishStemmer.prototype.r_stem_noun_suffixes = TurkishStemmer.prototype.r_stem_noun_suffixes$; + +function TurkishStemmer$r_stem_noun_suffixes$LTurkishStemmer$($this) { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_10; + var v_11; + var v_12; + var v_13; + var v_14; + var v_15; + var v_16; + var v_17; + var v_18; + var v_19; + var v_20; + var v_21; + var v_22; + var v_23; + var v_24; + var v_25; + var v_26; + var v_27; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var lab10; + var lab11; + var lab12; + var lab13; + var lab14; + var lab15; + var lab16; + var lab17; + var lab18; + var lab19; + var lab20; + var lab21; + var lab22; + var lab23; + var lab24; + var lab25; + var lab26; + var lab27; + var lab28; + var lab29; + var lab30; + var lab31; + var lab32; + var lab33; + var lab34; + var lab35; + var lab36; + var lab37; + var lab38; + var lab39; + var lab40; + var lab41; + var lab42; + var lab43; + var lab44; + var lab45; + var lab46; + var lab47; + var lab48; + var lab49; + var lab50; + var lab51; + var lab52; + var lab53; + var cursor$0; + var cursor$1; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + $this.ket = $this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab1; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_2 = (($this.limit - $this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + $this.cursor = (($this.limit - v_2) | 0); + break lab2; + } + } + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + $this.ket = $this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_11, 2) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_n_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab3; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_3 = (($this.limit - $this.cursor) | 0); + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_4 = (($this.limit - $this.cursor) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + $this.ket = $this.cursor; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab6; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break lab5; + } + $this.cursor = (($this.limit - v_4) | 0); + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + $this.ket = $this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + v_5 = (($this.limit - $this.cursor) | 0); + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_0, 10) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_U_vowel$LTurkishStemmer$($this) ? false : true)) { + break lab9; + } + break lab8; + } + $this.cursor = (($this.limit - v_5) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_s_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab7; + } + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_6 = (($this.limit - $this.cursor) | 0); + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + $this.ket = $this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + $this.cursor = (($this.limit - v_6) | 0); + break lab10; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + $this.cursor = (($this.limit - v_6) | 0); + break lab10; + } + } + break lab5; + } + cursor$0 = $this.cursor = (($this.limit - v_4) | 0); + $this.ket = cursor$0; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + $this.cursor = (($this.limit - v_3) | 0); + break lab4; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + $this.cursor = (($this.limit - v_3) | 0); + break lab4; + } + } + } + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + $this.ket = $this.cursor; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + v_7 = (($this.limit - $this.cursor) | 0); + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_7, 2) === 0 ? false : true)) { + break lab13; + } + break lab12; + } + $this.cursor = (($this.limit - v_7) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_5, 2) === 0 ? false : true)) { + break lab11; + } + } + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + v_8 = (($this.limit - $this.cursor) | 0); + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab15; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break lab14; + } + $this.cursor = (($this.limit - v_8) | 0); + lab16 = true; + lab16: + while (lab16 === true) { + lab16 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_s_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab16; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_9 = (($this.limit - $this.cursor) | 0); + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + $this.ket = $this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + $this.cursor = (($this.limit - v_9) | 0); + break lab17; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + $this.cursor = (($this.limit - v_9) | 0); + break lab17; + } + } + break lab14; + } + $this.cursor = (($this.limit - v_8) | 0); + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + break lab11; + } + } + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + lab18 = true; + lab18: + while (lab18 === true) { + lab18 = false; + $this.ket = $this.cursor; + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + v_10 = (($this.limit - $this.cursor) | 0); + lab20 = true; + lab20: + while (lab20 === true) { + lab20 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_9, 2) === 0 ? false : true)) { + break lab20; + } + break lab19; + } + $this.cursor = (($this.limit - v_10) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_2, 4) === 0 ? false : true)) { + break lab18; + } + } + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + v_11 = (($this.limit - $this.cursor) | 0); + lab22 = true; + lab22: + while (lab22 === true) { + lab22 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_s_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab22; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_12 = (($this.limit - $this.cursor) | 0); + lab23 = true; + lab23: + while (lab23 === true) { + lab23 = false; + $this.ket = $this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + $this.cursor = (($this.limit - v_12) | 0); + break lab23; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + $this.cursor = (($this.limit - v_12) | 0); + break lab23; + } + } + break lab21; + } + $this.cursor = (($this.limit - v_11) | 0); + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab18; + } + } + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + lab24 = true; + lab24: + while (lab24 === true) { + lab24 = false; + $this.ket = $this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_8, 4) === 0 ? false : true)) { + break lab24; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_13 = (($this.limit - $this.cursor) | 0); + lab25 = true; + lab25: + while (lab25 === true) { + lab25 = false; + $this.ket = $this.cursor; + lab26 = true; + lab26: + while (lab26 === true) { + lab26 = false; + v_14 = (($this.limit - $this.cursor) | 0); + lab27 = true; + lab27: + while (lab27 === true) { + lab27 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_0, 10) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_U_vowel$LTurkishStemmer$($this) ? false : true)) { + break lab27; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_15 = (($this.limit - $this.cursor) | 0); + lab28 = true; + lab28: + while (lab28 === true) { + lab28 = false; + $this.ket = $this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + $this.cursor = (($this.limit - v_15) | 0); + break lab28; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + $this.cursor = (($this.limit - v_15) | 0); + break lab28; + } + } + break lab26; + } + $this.cursor = (($this.limit - v_14) | 0); + lab29 = true; + lab29: + while (lab29 === true) { + lab29 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab29; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_16 = (($this.limit - $this.cursor) | 0); + lab30 = true; + lab30: + while (lab30 === true) { + lab30 = false; + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + $this.cursor = (($this.limit - v_16) | 0); + break lab30; + } + } + break lab26; + } + $this.cursor = (($this.limit - v_14) | 0); + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + $this.cursor = (($this.limit - v_13) | 0); + break lab25; + } + } + } + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + lab31 = true; + lab31: + while (lab31 === true) { + lab31 = false; + $this.ket = $this.cursor; + lab32 = true; + lab32: + while (lab32 === true) { + lab32 = false; + v_17 = (($this.limit - $this.cursor) | 0); + lab33 = true; + lab33: + while (lab33 === true) { + lab33 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_3, 4) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_n_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab33; + } + break lab32; + } + $this.cursor = (($this.limit - v_17) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_10, 2) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab31; + } + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_18 = (($this.limit - $this.cursor) | 0); + lab34 = true; + lab34: + while (lab34 === true) { + lab34 = false; + lab35 = true; + lab35: + while (lab35 === true) { + lab35 = false; + v_19 = (($this.limit - $this.cursor) | 0); + lab36 = true; + lab36: + while (lab36 === true) { + lab36 = false; + $this.ket = $this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab36; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + break lab36; + } + break lab35; + } + $this.cursor = (($this.limit - v_19) | 0); + lab37 = true; + lab37: + while (lab37 === true) { + lab37 = false; + $this.ket = $this.cursor; + lab38 = true; + lab38: + while (lab38 === true) { + lab38 = false; + v_20 = (($this.limit - $this.cursor) | 0); + lab39 = true; + lab39: + while (lab39 === true) { + lab39 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_0, 10) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_U_vowel$LTurkishStemmer$($this) ? false : true)) { + break lab39; + } + break lab38; + } + $this.cursor = (($this.limit - v_20) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_s_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab37; + } + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_21 = (($this.limit - $this.cursor) | 0); + lab40 = true; + lab40: + while (lab40 === true) { + lab40 = false; + $this.ket = $this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + $this.cursor = (($this.limit - v_21) | 0); + break lab40; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + $this.cursor = (($this.limit - v_21) | 0); + break lab40; + } + } + break lab35; + } + $this.cursor = (($this.limit - v_19) | 0); + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + $this.cursor = (($this.limit - v_18) | 0); + break lab34; + } + } + } + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + lab41 = true; + lab41: + while (lab41 === true) { + lab41 = false; + $this.ket = $this.cursor; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab41; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + lab42 = true; + lab42: + while (lab42 === true) { + lab42 = false; + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + break lab42; + } + break lab0; + } + $this.cursor = (($this.limit - v_1) | 0); + lab43 = true; + lab43: + while (lab43 === true) { + lab43 = false; + $this.ket = $this.cursor; + lab44 = true; + lab44: + while (lab44 === true) { + lab44 = false; + v_22 = (($this.limit - $this.cursor) | 0); + lab45 = true; + lab45: + while (lab45 === true) { + lab45 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_6, 4) === 0 ? false : true)) { + break lab45; + } + break lab44; + } + $this.cursor = (($this.limit - v_22) | 0); + lab46 = true; + lab46: + while (lab46 === true) { + lab46 = false; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab46; + } + break lab44; + } + $this.cursor = (($this.limit - v_22) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_4, 2) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_y_consonant$LTurkishStemmer$($this) ? false : true)) { + break lab43; + } + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_23 = (($this.limit - $this.cursor) | 0); + lab47 = true; + lab47: + while (lab47 === true) { + lab47 = false; + $this.ket = $this.cursor; + lab48 = true; + lab48: + while (lab48 === true) { + lab48 = false; + v_24 = (($this.limit - $this.cursor) | 0); + lab49 = true; + lab49: + while (lab49 === true) { + lab49 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_0, 10) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_U_vowel$LTurkishStemmer$($this) ? false : true)) { + break lab49; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_25 = (($this.limit - $this.cursor) | 0); + lab50 = true; + lab50: + while (lab50 === true) { + lab50 = false; + $this.ket = $this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + $this.cursor = (($this.limit - v_25) | 0); + break lab50; + } + } + break lab48; + } + $this.cursor = (($this.limit - v_24) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + $this.cursor = (($this.limit - v_23) | 0); + break lab47; + } + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + $this.ket = $this.cursor; + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + $this.cursor = (($this.limit - v_23) | 0); + break lab47; + } + } + break lab0; + } + cursor$1 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$1; + lab51 = true; + lab51: + while (lab51 === true) { + lab51 = false; + v_26 = (($this.limit - $this.cursor) | 0); + lab52 = true; + lab52: + while (lab52 === true) { + lab52 = false; + if (! (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_0, 10) === 0 ? false : ! TurkishStemmer$r_mark_suffix_with_optional_U_vowel$LTurkishStemmer$($this) ? false : true)) { + break lab52; + } + break lab51; + } + $this.cursor = (($this.limit - v_26) | 0); + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : ! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_U, 105, 305) ? false : ! TurkishStemmer$r_mark_suffix_with_optional_s_consonant$LTurkishStemmer$($this) ? false : true)) { + return false; + } + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_27 = (($this.limit - $this.cursor) | 0); + lab53 = true; + lab53: + while (lab53 === true) { + lab53 = false; + $this.ket = $this.cursor; + if (! (! TurkishStemmer$r_check_vowel_harmony$LTurkishStemmer$($this) ? false : BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_16, 2) === 0 ? false : true)) { + $this.cursor = (($this.limit - v_27) | 0); + break lab53; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + if (! TurkishStemmer$r_stem_suffix_chain_before_ki$LTurkishStemmer$($this)) { + $this.cursor = (($this.limit - v_27) | 0); + break lab53; + } + } + } + return true; +}; + +TurkishStemmer.r_stem_noun_suffixes$LTurkishStemmer$ = TurkishStemmer$r_stem_noun_suffixes$LTurkishStemmer$; + +TurkishStemmer.prototype.r_post_process_last_consonants$ = function () { + var among_var; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, TurkishStemmer.a_23, 4); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "p")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "\u00E7")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "t")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "k")) { + return false; + } + break; + } + return true; +}; + +TurkishStemmer.prototype.r_post_process_last_consonants = TurkishStemmer.prototype.r_post_process_last_consonants$; + +function TurkishStemmer$r_post_process_last_consonants$LTurkishStemmer$($this) { + var among_var; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, TurkishStemmer.a_23, 4); + if (among_var === 0) { + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "p")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "\u00E7")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "t")) { + return false; + } + break; + case 4: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "k")) { + return false; + } + break; + } + return true; +}; + +TurkishStemmer.r_post_process_last_consonants$LTurkishStemmer$ = TurkishStemmer$r_post_process_last_consonants$LTurkishStemmer$; + +TurkishStemmer.prototype.r_append_U_to_stems_ending_with_d_or_g$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_10; + var v_11; + var v_12; + var v_13; + var v_14; + var v_15; + var lab0; + var lab1; + var lab2; + var lab3; + var lab5; + var lab6; + var lab7; + var c; + var lab8; + var lab10; + var lab11; + var lab12; + var lab13; + var lab15; + var lab16; + var lab17; + var lab19; + var lab20; + var lab21; + var c_bra$0; + var adjustment$0; + var c_bra$1; + var adjustment$1; + var c_bra$2; + var adjustment$2; + var c_bra$3; + var adjustment$3; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + var cursor$4; + var cursor$5; + var cursor$6; + var limit$0; + var cursor$7; + var cursor$8; + var $__jsx_postinc_t; + v_1 = ((this.limit - this.cursor) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_2 = ((this.limit - this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "d")) { + break lab1; + } + break lab0; + } + this.cursor = ((this.limit - v_2) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "g")) { + return false; + } + } + this.cursor = ((this.limit - v_1) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + v_3 = ((this.limit - this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_4 = ((this.limit - this.cursor) | 0); + golab4: + while (true) { + v_5 = ((this.limit - this.cursor) | 0); + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel, 97, 305)) { + break lab5; + } + this.cursor = ((this.limit - v_5) | 0); + break golab4; + } + cursor$0 = this.cursor = ((this.limit - v_5) | 0); + if (cursor$0 <= this.limit_backward) { + break lab3; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + v_6 = ((this.limit - this.cursor) | 0); + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "a")) { + break lab7; + } + break lab6; + } + this.cursor = ((this.limit - v_6) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u0131")) { + break lab3; + } + } + cursor$1 = this.cursor = ((this.limit - v_4) | 0); + c = cursor$1; + c_bra$0 = cursor$1; + adjustment$0 = BaseStemmer$replace_s$LBaseStemmer$IIS(this, cursor$1, cursor$1, "\u0131"); + if (cursor$1 <= this.bra) { + this.bra = (this.bra + adjustment$0) | 0; + } + if (c_bra$0 <= this.ket) { + this.ket = (this.ket + adjustment$0) | 0; + } + this.cursor = c; + break lab2; + } + this.cursor = ((this.limit - v_3) | 0); + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + v_7 = ((this.limit - this.cursor) | 0); + golab9: + while (true) { + v_8 = ((this.limit - this.cursor) | 0); + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel, 97, 305)) { + break lab10; + } + this.cursor = ((this.limit - v_8) | 0); + break golab9; + } + cursor$2 = this.cursor = ((this.limit - v_8) | 0); + if (cursor$2 <= this.limit_backward) { + break lab8; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + v_9 = ((this.limit - this.cursor) | 0); + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "e")) { + break lab12; + } + break lab11; + } + this.cursor = ((this.limit - v_9) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "i")) { + break lab8; + } + } + cursor$3 = this.cursor = ((this.limit - v_7) | 0); + c = cursor$3; + c_bra$1 = cursor$3; + adjustment$1 = BaseStemmer$replace_s$LBaseStemmer$IIS(this, cursor$3, cursor$3, "i"); + if (cursor$3 <= this.bra) { + this.bra = (this.bra + adjustment$1) | 0; + } + if (c_bra$1 <= this.ket) { + this.ket = (this.ket + adjustment$1) | 0; + } + this.cursor = c; + break lab2; + } + this.cursor = ((this.limit - v_3) | 0); + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + v_10 = ((this.limit - this.cursor) | 0); + golab14: + while (true) { + v_11 = ((this.limit - this.cursor) | 0); + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel, 97, 305)) { + break lab15; + } + this.cursor = ((this.limit - v_11) | 0); + break golab14; + } + cursor$4 = this.cursor = ((this.limit - v_11) | 0); + if (cursor$4 <= this.limit_backward) { + break lab13; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + lab16 = true; + lab16: + while (lab16 === true) { + lab16 = false; + v_12 = ((this.limit - this.cursor) | 0); + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "o")) { + break lab17; + } + break lab16; + } + this.cursor = ((this.limit - v_12) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "u")) { + break lab13; + } + } + cursor$5 = this.cursor = ((this.limit - v_10) | 0); + c = cursor$5; + c_bra$2 = cursor$5; + adjustment$2 = BaseStemmer$replace_s$LBaseStemmer$IIS(this, cursor$5, cursor$5, "u"); + if (cursor$5 <= this.bra) { + this.bra = (this.bra + adjustment$2) | 0; + } + if (c_bra$2 <= this.ket) { + this.ket = (this.ket + adjustment$2) | 0; + } + this.cursor = c; + break lab2; + } + cursor$7 = this.cursor = (((limit$0 = this.limit) - v_3) | 0); + v_13 = ((limit$0 - cursor$7) | 0); + golab18: + while (true) { + v_14 = ((this.limit - this.cursor) | 0); + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel, 97, 305)) { + break lab19; + } + this.cursor = ((this.limit - v_14) | 0); + break golab18; + } + cursor$6 = this.cursor = ((this.limit - v_14) | 0); + if (cursor$6 <= this.limit_backward) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + lab20 = true; + lab20: + while (lab20 === true) { + lab20 = false; + v_15 = ((this.limit - this.cursor) | 0); + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u00F6")) { + break lab21; + } + break lab20; + } + this.cursor = ((this.limit - v_15) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u00FC")) { + return false; + } + } + cursor$8 = this.cursor = ((this.limit - v_13) | 0); + c = cursor$8; + c_bra$3 = cursor$8; + adjustment$3 = BaseStemmer$replace_s$LBaseStemmer$IIS(this, cursor$8, cursor$8, "\u00FC"); + if (cursor$8 <= this.bra) { + this.bra = (this.bra + adjustment$3) | 0; + } + if (c_bra$3 <= this.ket) { + this.ket = (this.ket + adjustment$3) | 0; + } + this.cursor = c; + } + return true; +}; + +TurkishStemmer.prototype.r_append_U_to_stems_ending_with_d_or_g = TurkishStemmer.prototype.r_append_U_to_stems_ending_with_d_or_g$; + +function TurkishStemmer$r_append_U_to_stems_ending_with_d_or_g$LTurkishStemmer$($this) { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_10; + var v_11; + var v_12; + var v_13; + var v_14; + var v_15; + var lab0; + var lab1; + var lab2; + var lab3; + var lab5; + var lab6; + var lab7; + var c; + var lab8; + var lab10; + var lab11; + var lab12; + var lab13; + var lab15; + var lab16; + var lab17; + var lab19; + var lab20; + var lab21; + var c_bra$0; + var adjustment$0; + var c_bra$1; + var adjustment$1; + var c_bra$2; + var adjustment$2; + var c_bra$3; + var adjustment$3; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + var cursor$4; + var cursor$5; + var cursor$6; + var limit$0; + var cursor$7; + var cursor$8; + var $__jsx_postinc_t; + v_1 = (($this.limit - $this.cursor) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_2 = (($this.limit - $this.cursor) | 0); + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "d")) { + break lab1; + } + break lab0; + } + $this.cursor = (($this.limit - v_2) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "g")) { + return false; + } + } + $this.cursor = (($this.limit - v_1) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + v_3 = (($this.limit - $this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_4 = (($this.limit - $this.cursor) | 0); + golab4: + while (true) { + v_5 = (($this.limit - $this.cursor) | 0); + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel, 97, 305)) { + break lab5; + } + $this.cursor = (($this.limit - v_5) | 0); + break golab4; + } + cursor$0 = $this.cursor = (($this.limit - v_5) | 0); + if (cursor$0 <= $this.limit_backward) { + break lab3; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + v_6 = (($this.limit - $this.cursor) | 0); + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "a")) { + break lab7; + } + break lab6; + } + $this.cursor = (($this.limit - v_6) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u0131")) { + break lab3; + } + } + cursor$1 = $this.cursor = (($this.limit - v_4) | 0); + c = cursor$1; + c_bra$0 = cursor$1; + adjustment$0 = BaseStemmer$replace_s$LBaseStemmer$IIS($this, cursor$1, cursor$1, "\u0131"); + if (cursor$1 <= $this.bra) { + $this.bra = ($this.bra + adjustment$0) | 0; + } + if (c_bra$0 <= $this.ket) { + $this.ket = ($this.ket + adjustment$0) | 0; + } + $this.cursor = c; + break lab2; + } + $this.cursor = (($this.limit - v_3) | 0); + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + v_7 = (($this.limit - $this.cursor) | 0); + golab9: + while (true) { + v_8 = (($this.limit - $this.cursor) | 0); + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel, 97, 305)) { + break lab10; + } + $this.cursor = (($this.limit - v_8) | 0); + break golab9; + } + cursor$2 = $this.cursor = (($this.limit - v_8) | 0); + if (cursor$2 <= $this.limit_backward) { + break lab8; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + v_9 = (($this.limit - $this.cursor) | 0); + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "e")) { + break lab12; + } + break lab11; + } + $this.cursor = (($this.limit - v_9) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "i")) { + break lab8; + } + } + cursor$3 = $this.cursor = (($this.limit - v_7) | 0); + c = cursor$3; + c_bra$1 = cursor$3; + adjustment$1 = BaseStemmer$replace_s$LBaseStemmer$IIS($this, cursor$3, cursor$3, "i"); + if (cursor$3 <= $this.bra) { + $this.bra = ($this.bra + adjustment$1) | 0; + } + if (c_bra$1 <= $this.ket) { + $this.ket = ($this.ket + adjustment$1) | 0; + } + $this.cursor = c; + break lab2; + } + $this.cursor = (($this.limit - v_3) | 0); + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + v_10 = (($this.limit - $this.cursor) | 0); + golab14: + while (true) { + v_11 = (($this.limit - $this.cursor) | 0); + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel, 97, 305)) { + break lab15; + } + $this.cursor = (($this.limit - v_11) | 0); + break golab14; + } + cursor$4 = $this.cursor = (($this.limit - v_11) | 0); + if (cursor$4 <= $this.limit_backward) { + break lab13; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + lab16 = true; + lab16: + while (lab16 === true) { + lab16 = false; + v_12 = (($this.limit - $this.cursor) | 0); + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "o")) { + break lab17; + } + break lab16; + } + $this.cursor = (($this.limit - v_12) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "u")) { + break lab13; + } + } + cursor$5 = $this.cursor = (($this.limit - v_10) | 0); + c = cursor$5; + c_bra$2 = cursor$5; + adjustment$2 = BaseStemmer$replace_s$LBaseStemmer$IIS($this, cursor$5, cursor$5, "u"); + if (cursor$5 <= $this.bra) { + $this.bra = ($this.bra + adjustment$2) | 0; + } + if (c_bra$2 <= $this.ket) { + $this.ket = ($this.ket + adjustment$2) | 0; + } + $this.cursor = c; + break lab2; + } + cursor$7 = $this.cursor = (((limit$0 = $this.limit) - v_3) | 0); + v_13 = ((limit$0 - cursor$7) | 0); + golab18: + while (true) { + v_14 = (($this.limit - $this.cursor) | 0); + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel, 97, 305)) { + break lab19; + } + $this.cursor = (($this.limit - v_14) | 0); + break golab18; + } + cursor$6 = $this.cursor = (($this.limit - v_14) | 0); + if (cursor$6 <= $this.limit_backward) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + } + lab20 = true; + lab20: + while (lab20 === true) { + lab20 = false; + v_15 = (($this.limit - $this.cursor) | 0); + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u00F6")) { + break lab21; + } + break lab20; + } + $this.cursor = (($this.limit - v_15) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u00FC")) { + return false; + } + } + cursor$8 = $this.cursor = (($this.limit - v_13) | 0); + c = cursor$8; + c_bra$3 = cursor$8; + adjustment$3 = BaseStemmer$replace_s$LBaseStemmer$IIS($this, cursor$8, cursor$8, "\u00FC"); + if (cursor$8 <= $this.bra) { + $this.bra = ($this.bra + adjustment$3) | 0; + } + if (c_bra$3 <= $this.ket) { + $this.ket = ($this.ket + adjustment$3) | 0; + } + $this.cursor = c; + } + return true; +}; + +TurkishStemmer.r_append_U_to_stems_ending_with_d_or_g$LTurkishStemmer$ = TurkishStemmer$r_append_U_to_stems_ending_with_d_or_g$LTurkishStemmer$; + +TurkishStemmer.prototype.r_more_than_one_syllable_word$ = function () { + var v_1; + var v_3; + var v_2; + var lab1; + var lab3; + var $__jsx_postinc_t; + v_1 = this.cursor; + v_2 = 2; +replab0: + while (true) { + v_3 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, TurkishStemmer.g_vowel, 97, 305)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + v_2--; + continue replab0; + } + this.cursor = v_3; + break replab0; + } + if (v_2 > 0) { + return false; + } + this.cursor = v_1; + return true; +}; + +TurkishStemmer.prototype.r_more_than_one_syllable_word = TurkishStemmer.prototype.r_more_than_one_syllable_word$; + +function TurkishStemmer$r_more_than_one_syllable_word$LTurkishStemmer$($this) { + var v_1; + var v_3; + var v_2; + var lab1; + var lab3; + var $__jsx_postinc_t; + v_1 = $this.cursor; + v_2 = 2; +replab0: + while (true) { + v_3 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, TurkishStemmer.g_vowel, 97, 305)) { + break lab3; + } + break golab2; + } + if ($this.cursor >= $this.limit) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + v_2--; + continue replab0; + } + $this.cursor = v_3; + break replab0; + } + if (v_2 > 0) { + return false; + } + $this.cursor = v_1; + return true; +}; + +TurkishStemmer.r_more_than_one_syllable_word$LTurkishStemmer$ = TurkishStemmer$r_more_than_one_syllable_word$LTurkishStemmer$; + +TurkishStemmer.prototype.r_is_reserved_word$ = function () { + var v_1; + var v_2; + var v_4; + var lab0; + var lab1; + var lab3; + var lab5; + var I_strlen$0; + var cursor$0; + var I_strlen$1; + var $__jsx_postinc_t; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 2, "ad")) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + I_strlen$0 = this.I_strlen = 2; + if (! (I_strlen$0 === this.limit)) { + break lab1; + } + this.cursor = v_2; + break lab0; + } + cursor$0 = this.cursor = v_1; + v_4 = cursor$0; + golab4: + while (true) { + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 5, "soyad")) { + break lab5; + } + break golab4; + } + if (this.cursor >= this.limit) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + I_strlen$1 = this.I_strlen = 5; + if (! (I_strlen$1 === this.limit)) { + return false; + } + this.cursor = v_4; + } + return true; +}; + +TurkishStemmer.prototype.r_is_reserved_word = TurkishStemmer.prototype.r_is_reserved_word$; + +function TurkishStemmer$r_is_reserved_word$LTurkishStemmer$($this) { + var v_1; + var v_2; + var v_4; + var lab0; + var lab1; + var lab3; + var lab5; + var I_strlen$0; + var cursor$0; + var I_strlen$1; + var $__jsx_postinc_t; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = $this.cursor; + golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 2, "ad")) { + break lab3; + } + break golab2; + } + if ($this.cursor >= $this.limit) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + I_strlen$0 = $this.I_strlen = 2; + if (! (I_strlen$0 === $this.limit)) { + break lab1; + } + $this.cursor = v_2; + break lab0; + } + cursor$0 = $this.cursor = v_1; + v_4 = cursor$0; + golab4: + while (true) { + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 5, "soyad")) { + break lab5; + } + break golab4; + } + if ($this.cursor >= $this.limit) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + I_strlen$1 = $this.I_strlen = 5; + if (! (I_strlen$1 === $this.limit)) { + return false; + } + $this.cursor = v_4; + } + return true; +}; + +TurkishStemmer.r_is_reserved_word$LTurkishStemmer$ = TurkishStemmer$r_is_reserved_word$LTurkishStemmer$; + +TurkishStemmer.prototype.r_postlude$ = function () { + var v_1; + var v_2; + var lab0; + var lab1; + var lab2; + var cursor$0; + var limit$0; + var cursor$1; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! TurkishStemmer$r_is_reserved_word$LTurkishStemmer$(this)) { + break lab0; + } + return false; + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = ((limit$0 - cursor$1) | 0); + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! TurkishStemmer$r_append_U_to_stems_ending_with_d_or_g$LTurkishStemmer$(this)) { + break lab1; + } + } + this.cursor = ((this.limit - v_2) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! TurkishStemmer$r_post_process_last_consonants$LTurkishStemmer$(this)) { + break lab2; + } + } + this.cursor = this.limit_backward; + return true; +}; + +TurkishStemmer.prototype.r_postlude = TurkishStemmer.prototype.r_postlude$; + +function TurkishStemmer$r_postlude$LTurkishStemmer$($this) { + var v_1; + var v_2; + var lab0; + var lab1; + var lab2; + var cursor$0; + var limit$0; + var cursor$1; + v_1 = $this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! TurkishStemmer$r_is_reserved_word$LTurkishStemmer$($this)) { + break lab0; + } + return false; + } + cursor$0 = $this.cursor = v_1; + $this.limit_backward = cursor$0; + cursor$1 = $this.cursor = limit$0 = $this.limit; + v_2 = ((limit$0 - cursor$1) | 0); + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! TurkishStemmer$r_append_U_to_stems_ending_with_d_or_g$LTurkishStemmer$($this)) { + break lab1; + } + } + $this.cursor = (($this.limit - v_2) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! TurkishStemmer$r_post_process_last_consonants$LTurkishStemmer$($this)) { + break lab2; + } + } + $this.cursor = $this.limit_backward; + return true; +}; + +TurkishStemmer.r_postlude$LTurkishStemmer$ = TurkishStemmer$r_postlude$LTurkishStemmer$; + +TurkishStemmer.prototype.stem$ = function () { + var v_1; + var lab0; + var lab1; + var limit$0; + var cursor$0; + if (! TurkishStemmer$r_more_than_one_syllable_word$LTurkishStemmer$(this)) { + return false; + } + this.limit_backward = this.cursor; + cursor$0 = this.cursor = limit$0 = this.limit; + v_1 = ((limit$0 - cursor$0) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! TurkishStemmer$r_stem_nominal_verb_suffixes$LTurkishStemmer$(this)) { + break lab0; + } + } + this.cursor = ((this.limit - v_1) | 0); + if (! this.B_continue_stemming_noun_suffixes) { + return false; + } + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! TurkishStemmer$r_stem_noun_suffixes$LTurkishStemmer$(this)) { + break lab1; + } + } + this.cursor = this.limit_backward; + return (! TurkishStemmer$r_postlude$LTurkishStemmer$(this) ? false : true); +}; + +TurkishStemmer.prototype.stem = TurkishStemmer.prototype.stem$; + +TurkishStemmer.prototype.equals$X = function (o) { + return o instanceof TurkishStemmer; +}; + +TurkishStemmer.prototype.equals = TurkishStemmer.prototype.equals$X; + +function TurkishStemmer$equals$LTurkishStemmer$X($this, o) { + return o instanceof TurkishStemmer; +}; + +TurkishStemmer.equals$LTurkishStemmer$X = TurkishStemmer$equals$LTurkishStemmer$X; + +TurkishStemmer.prototype.hashCode$ = function () { + var classname; + var hash; + var i; + var char; + classname = "TurkishStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +TurkishStemmer.prototype.hashCode = TurkishStemmer.prototype.hashCode$; + +function TurkishStemmer$hashCode$LTurkishStemmer$($this) { + var classname; + var hash; + var i; + var char; + classname = "TurkishStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +TurkishStemmer.hashCode$LTurkishStemmer$ = TurkishStemmer$hashCode$LTurkishStemmer$; + +TurkishStemmer.serialVersionUID = 1; +$__jsx_lazy_init(TurkishStemmer, "methodObject", function () { + return new TurkishStemmer(); +}); +$__jsx_lazy_init(TurkishStemmer, "a_0", function () { + return [ new Among("m", -1, -1), new Among("n", -1, -1), new Among("miz", -1, -1), new Among("niz", -1, -1), new Among("muz", -1, -1), new Among("nuz", -1, -1), new Among("m\u00FCz", -1, -1), new Among("n\u00FCz", -1, -1), new Among("m\u0131z", -1, -1), new Among("n\u0131z", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_1", function () { + return [ new Among("leri", -1, -1), new Among("lar\u0131", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_2", function () { + return [ new Among("ni", -1, -1), new Among("nu", -1, -1), new Among("n\u00FC", -1, -1), new Among("n\u0131", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_3", function () { + return [ new Among("in", -1, -1), new Among("un", -1, -1), new Among("\u00FCn", -1, -1), new Among("\u0131n", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_4", function () { + return [ new Among("a", -1, -1), new Among("e", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_5", function () { + return [ new Among("na", -1, -1), new Among("ne", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_6", function () { + return [ new Among("da", -1, -1), new Among("ta", -1, -1), new Among("de", -1, -1), new Among("te", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_7", function () { + return [ new Among("nda", -1, -1), new Among("nde", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_8", function () { + return [ new Among("dan", -1, -1), new Among("tan", -1, -1), new Among("den", -1, -1), new Among("ten", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_9", function () { + return [ new Among("ndan", -1, -1), new Among("nden", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_10", function () { + return [ new Among("la", -1, -1), new Among("le", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_11", function () { + return [ new Among("ca", -1, -1), new Among("ce", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_12", function () { + return [ new Among("im", -1, -1), new Among("um", -1, -1), new Among("\u00FCm", -1, -1), new Among("\u0131m", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_13", function () { + return [ new Among("sin", -1, -1), new Among("sun", -1, -1), new Among("s\u00FCn", -1, -1), new Among("s\u0131n", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_14", function () { + return [ new Among("iz", -1, -1), new Among("uz", -1, -1), new Among("\u00FCz", -1, -1), new Among("\u0131z", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_15", function () { + return [ new Among("siniz", -1, -1), new Among("sunuz", -1, -1), new Among("s\u00FCn\u00FCz", -1, -1), new Among("s\u0131n\u0131z", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_16", function () { + return [ new Among("lar", -1, -1), new Among("ler", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_17", function () { + return [ new Among("niz", -1, -1), new Among("nuz", -1, -1), new Among("n\u00FCz", -1, -1), new Among("n\u0131z", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_18", function () { + return [ new Among("dir", -1, -1), new Among("tir", -1, -1), new Among("dur", -1, -1), new Among("tur", -1, -1), new Among("d\u00FCr", -1, -1), new Among("t\u00FCr", -1, -1), new Among("d\u0131r", -1, -1), new Among("t\u0131r", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_19", function () { + return [ new Among("cas\u0131na", -1, -1), new Among("cesine", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_20", function () { + return [ new Among("di", -1, -1), new Among("ti", -1, -1), new Among("dik", -1, -1), new Among("tik", -1, -1), new Among("duk", -1, -1), new Among("tuk", -1, -1), new Among("d\u00FCk", -1, -1), new Among("t\u00FCk", -1, -1), new Among("d\u0131k", -1, -1), new Among("t\u0131k", -1, -1), new Among("dim", -1, -1), new Among("tim", -1, -1), new Among("dum", -1, -1), new Among("tum", -1, -1), new Among("d\u00FCm", -1, -1), new Among("t\u00FCm", -1, -1), new Among("d\u0131m", -1, -1), new Among("t\u0131m", -1, -1), new Among("din", -1, -1), new Among("tin", -1, -1), new Among("dun", -1, -1), new Among("tun", -1, -1), new Among("d\u00FCn", -1, -1), new Among("t\u00FCn", -1, -1), new Among("d\u0131n", -1, -1), new Among("t\u0131n", -1, -1), new Among("du", -1, -1), new Among("tu", -1, -1), new Among("d\u00FC", -1, -1), new Among("t\u00FC", -1, -1), new Among("d\u0131", -1, -1), new Among("t\u0131", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_21", function () { + return [ new Among("sa", -1, -1), new Among("se", -1, -1), new Among("sak", -1, -1), new Among("sek", -1, -1), new Among("sam", -1, -1), new Among("sem", -1, -1), new Among("san", -1, -1), new Among("sen", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_22", function () { + return [ new Among("mi\u015F", -1, -1), new Among("mu\u015F", -1, -1), new Among("m\u00FC\u015F", -1, -1), new Among("m\u0131\u015F", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_23", function () { + return [ new Among("b", -1, 1), new Among("c", -1, 2), new Among("d", -1, 3), new Among("\u011F", -1, 4) ]; +}); +TurkishStemmer.g_vowel = [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 0, 1 ]; +TurkishStemmer.g_U = [ 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1 ]; +TurkishStemmer.g_vowel1 = [ 1, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ]; +TurkishStemmer.g_vowel2 = [ 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130 ]; +TurkishStemmer.g_vowel3 = [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ]; +TurkishStemmer.g_vowel4 = [ 17 ]; +TurkishStemmer.g_vowel5 = [ 65 ]; +TurkishStemmer.g_vowel6 = [ 65 ]; + +var $__jsx_classMap = { + "src/among.jsx": { + Among: Among, + Among$SII: Among, + Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$0 + }, + "src/stemmer.jsx": { + Stemmer: Stemmer, + Stemmer$: Stemmer + }, + "src/base-stemmer.jsx": { + BaseStemmer: BaseStemmer, + BaseStemmer$: BaseStemmer + }, + "src/turkish-stemmer.jsx": { + TurkishStemmer: TurkishStemmer, + TurkishStemmer$: TurkishStemmer + } +}; + + +})(JSX); + +var Among = JSX.require("src/among.jsx").Among; +var Among$SII = JSX.require("src/among.jsx").Among$SII; +var Stemmer = JSX.require("src/stemmer.jsx").Stemmer; +var BaseStemmer = JSX.require("src/base-stemmer.jsx").BaseStemmer; +var TurkishStemmer = JSX.require("src/turkish-stemmer.jsx").TurkishStemmer; diff --git a/sphinx/sphinx/search/pt.py b/sphinx/sphinx/search/pt.py new file mode 100644 index 0000000..2538511 --- /dev/null +++ b/sphinx/sphinx/search/pt.py @@ -0,0 +1,275 @@ +""" + sphinx.search.pt + ~~~~~~~~~~~~~~~~ + + Portuguese search language: includes the JS Portuguese stemmer. + + :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + + +portuguese_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/portuguese/stop.txt +de | of, from +a | the; to, at; her +o | the; him +que | who, that +e | and +do | de + o +da | de + a +em | in +um | a +para | for + | é from SER +com | with +não | not, no +uma | a +os | the; them +no | em + o +se | himself etc +na | em + a +por | for +mais | more +as | the; them +dos | de + os +como | as, like +mas | but + | foi from SER +ao | a + o +ele | he +das | de + as + | tem from TER +à | a + a +seu | his +sua | her +ou | or + | ser from SER +quando | when +muito | much + | há from HAV +nos | em + os; us +já | already, now + | está from EST +eu | I +também | also +só | only, just +pelo | per + o +pela | per + a +até | up to +isso | that +ela | he +entre | between + | era from SER +depois | after +sem | without +mesmo | same +aos | a + os + | ter from TER +seus | his +quem | whom +nas | em + as +me | me +esse | that +eles | they + | estão from EST +você | you + | tinha from TER + | foram from SER +essa | that +num | em + um +nem | nor +suas | her +meu | my +às | a + as +minha | my + | têm from TER +numa | em + uma +pelos | per + os +elas | they + | havia from HAV + | seja from SER +qual | which + | será from SER +nós | we + | tenho from TER +lhe | to him, her +deles | of them +essas | those +esses | those +pelas | per + as +este | this + | fosse from SER +dele | of him + + | other words. There are many contractions such as naquele = em+aquele, + | mo = me+o, but they are rare. + | Indefinite article plural forms are also rare. + +tu | thou +te | thee +vocês | you (plural) +vos | you +lhes | to them +meus | my +minhas +teu | thy +tua +teus +tuas +nosso | our +nossa +nossos +nossas + +dela | of her +delas | of them + +esta | this +estes | these +estas | these +aquele | that +aquela | that +aqueles | those +aquelas | those +isto | this +aquilo | that + + | forms of estar, to be (not including the infinitive): +estou +está +estamos +estão +estive +esteve +estivemos +estiveram +estava +estávamos +estavam +estivera +estivéramos +esteja +estejamos +estejam +estivesse +estivéssemos +estivessem +estiver +estivermos +estiverem + + | forms of haver, to have (not including the infinitive): +hei +há +havemos +hão +houve +houvemos +houveram +houvera +houvéramos +haja +hajamos +hajam +houvesse +houvéssemos +houvessem +houver +houvermos +houverem +houverei +houverá +houveremos +houverão +houveria +houveríamos +houveriam + + | forms of ser, to be (not including the infinitive): +sou +somos +são +era +éramos +eram +fui +foi +fomos +foram +fora +fôramos +seja +sejamos +sejam +fosse +fôssemos +fossem +for +formos +forem +serei +será +seremos +serão +seria +seríamos +seriam + + | forms of ter, to have (not including the infinitive): +tenho +tem +temos +tém +tinha +tínhamos +tinham +tive +teve +tivemos +tiveram +tivera +tivéramos +tenha +tenhamos +tenham +tivesse +tivéssemos +tivessem +tiver +tivermos +tiverem +terei +terá +teremos +terão +teria +teríamos +teriam +''') + +js_stemmer = """ + +var JSX={};(function(j){function l(b,e){var a=function(){};a.prototype=e.prototype;var c=new a;for(var d in b){b[d].prototype=c}}function I(c,b){for(var a in b.prototype)if(b.prototype.hasOwnProperty(a))c.prototype[a]=b.prototype[a]}function h(a,b,d){function c(a,b,c){delete a[b];a[b]=c;return c}Object.defineProperty(a,b,{get:function(){return c(a,b,d())},set:function(d){c(a,b,d)},enumerable:true,configurable:true})}function J(a,b,c){return a[b]=a[b]/c|0}var p=parseInt;var z=parseFloat;function K(a){return a!==a}var x=isFinite;var w=encodeURIComponent;var u=decodeURIComponent;var t=encodeURI;var s=decodeURI;var A=Object.prototype.toString;var q=Object.prototype.hasOwnProperty;function k(){}j.require=function(b){var a=o[b];return a!==undefined?a:null};j.profilerIsRunning=function(){return k.getResults!=null};j.getProfileResults=function(){return(k.getResults||function(){return{}})()};j.postProfileResults=function(a,b){if(k.postResults==null)throw new Error('profiler has not been turned on');return k.postResults(a,b)};j.resetProfileResults=function(){if(k.resetResults==null)throw new Error('profiler has not been turned on');return k.resetResults()};j.DEBUG=false;function r(){};l([r],Error);function a(a,b,c){this.F=a.length;this.K=a;this.L=b;this.I=c;this.H=null;this.P=null};l([a],Object);function n(){};l([n],Object);function i(){var a;var b;var c;this.G={};a=this.E='';b=this._=0;c=this.A=a.length;this.D=0;this.B=b;this.C=c};l([i],n);function v(a,b){a.E=b.E;a._=b._;a.A=b.A;a.D=b.D;a.B=b.B;a.C=b.C};function f(b,d,c,e){var a;if(b._>=b.A){return false}a=b.E.charCodeAt(b._);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._++;return true};function g(a,d,c,e){var b;if(a._>=a.A){return false}b=a.E.charCodeAt(a._);if(b>e||b<c){a._++;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._++;return true}return false};function d(a,b,d){var c;if(a._-a.D<b){return false}if(a.E.slice((c=a._)-b,c)!==d){return false}a._-=b;return true};function m(f,m,p){var b;var d;var e;var n;var g;var k;var l;var i;var h;var c;var a;var j;var o;b=0;d=p;e=f._;n=f.A;g=0;k=0;l=false;while(true){i=b+(d-b>>>1);h=0;c=g<k?g:k;a=m[i];for(j=c;j<a.F;j++){if(e+c===n){h=-1;break}h=f.E.charCodeAt(e+c)-a.K.charCodeAt(j);if(h!==0){break}c++}if(h<0){d=i;k=c}else{b=i;g=c}if(d-b<=1){if(b>0){break}if(d===b){break}if(l){break}l=true}}while(true){a=m[b];if(g>=a.F){f._=e+a.F|0;if(a.H==null){return a.I}o=a.H(a.P);f._=e+a.F|0;if(o){return a.I}}b=a.L;if(b<0){return 0}}return-1};function e(d,m,p){var b;var g;var e;var n;var f;var k;var l;var i;var h;var c;var a;var j;var o;b=0;g=p;e=d._;n=d.D;f=0;k=0;l=false;while(true){i=b+(g-b>>1);h=0;c=f<k?f:k;a=m[i];for(j=a.F-1-c;j>=0;j--){if(e-c===n){h=-1;break}h=d.E.charCodeAt(e-1-c)-a.K.charCodeAt(j);if(h!==0){break}c++}if(h<0){g=i;k=c}else{b=i;f=c}if(g-b<=1){if(b>0){break}if(g===b){break}if(l){break}l=true}}while(true){a=m[b];if(f>=a.F){d._=e-a.F|0;if(a.H==null){return a.I}o=a.H(d);d._=e-a.F|0;if(o){return a.I}}b=a.L;if(b<0){return 0}}return-1};function B(a,b,d,e){var c;c=e.length-(d-b);a.E=a.E.slice(0,b)+e+a.E.slice(d);a.A+=c|0;if(a._>=d){a._+=c|0}else if(a._>b){a._=b}return c|0};function c(a,f){var b;var c;var d;var e;b=false;if((c=a.B)<0||c>(d=a.C)||d>(e=a.A)||e>a.E.length?false:true){B(a,a.B,a.C,f);b=true}return b};i.prototype.J=function(){return false};i.prototype.a=function(b){var a;var c;var d;var e;a=this.G['.'+b];if(a==null){c=this.E=b;d=this._=0;e=this.A=c.length;this.D=0;this.B=d;this.C=e;this.J();a=this.E;this.G['.'+b]=a}return a};i.prototype.stemWord=i.prototype.a;i.prototype.b=function(e){var d;var b;var c;var a;var f;var g;var h;d=[];for(b=0;b<e.length;b++){c=e[b];a=this.G['.'+c];if(a==null){f=this.E=c;g=this._=0;h=this.A=f.length;this.D=0;this.B=g;this.C=h;this.J();a=this.E;this.G['.'+c]=a}d.push(a)}return d};i.prototype.stemWords=i.prototype.b;function b(){i.call(this);this.I_p2=0;this.I_p1=0;this.I_pV=0};l([b],i);b.prototype.M=function(a){this.I_p2=a.I_p2;this.I_p1=a.I_p1;this.I_pV=a.I_pV;v(this,a)};b.prototype.copy_from=b.prototype.M;b.prototype.V=function(){var a;var e;var d;b:while(true){e=this._;d=true;a:while(d===true){d=false;this.B=this._;a=m(this,b.a_0,3);if(a===0){break a}this.C=this._;switch(a){case 0:break a;case 1:if(!c(this,'a~')){return false}break;case 2:if(!c(this,'o~')){return false}break;case 3:if(this._>=this.A){break a}this._++;break}continue b}this._=e;break b}return true};b.prototype.r_prelude=b.prototype.V;function E(a){var d;var f;var e;b:while(true){f=a._;e=true;a:while(e===true){e=false;a.B=a._;d=m(a,b.a_0,3);if(d===0){break a}a.C=a._;switch(d){case 0:break a;case 1:if(!c(a,'a~')){return false}break;case 2:if(!c(a,'o~')){return false}break;case 3:if(a._>=a.A){break a}a._++;break}continue b}a._=f;break b}return true};b.prototype.T=function(){var u;var w;var x;var y;var t;var l;var d;var e;var h;var i;var c;var j;var k;var a;var m;var n;var o;var p;var q;var r;var s;var v;this.I_pV=s=this.A;this.I_p1=s;this.I_p2=s;u=this._;l=true;a:while(l===true){l=false;d=true;g:while(d===true){d=false;w=this._;e=true;b:while(e===true){e=false;if(!f(this,b.g_v,97,250)){break b}h=true;f:while(h===true){h=false;x=this._;i=true;c:while(i===true){i=false;if(!g(this,b.g_v,97,250)){break c}d:while(true){c=true;e:while(c===true){c=false;if(!f(this,b.g_v,97,250)){break e}break d}if(this._>=this.A){break c}this._++}break f}this._=x;if(!f(this,b.g_v,97,250)){break b}c:while(true){j=true;d:while(j===true){j=false;if(!g(this,b.g_v,97,250)){break d}break c}if(this._>=this.A){break b}this._++}}break g}this._=w;if(!g(this,b.g_v,97,250)){break a}k=true;c:while(k===true){k=false;y=this._;a=true;b:while(a===true){a=false;if(!g(this,b.g_v,97,250)){break b}e:while(true){m=true;d:while(m===true){m=false;if(!f(this,b.g_v,97,250)){break d}break e}if(this._>=this.A){break b}this._++}break c}this._=y;if(!f(this,b.g_v,97,250)){break a}if(this._>=this.A){break a}this._++}}this.I_pV=this._}v=this._=u;t=v;n=true;a:while(n===true){n=false;b:while(true){o=true;c:while(o===true){o=false;if(!f(this,b.g_v,97,250)){break c}break b}if(this._>=this.A){break a}this._++}b:while(true){p=true;c:while(p===true){p=false;if(!g(this,b.g_v,97,250)){break c}break b}if(this._>=this.A){break a}this._++}this.I_p1=this._;b:while(true){q=true;c:while(q===true){q=false;if(!f(this,b.g_v,97,250)){break c}break b}if(this._>=this.A){break a}this._++}c:while(true){r=true;b:while(r===true){r=false;if(!g(this,b.g_v,97,250)){break b}break c}if(this._>=this.A){break a}this._++}this.I_p2=this._}this._=t;return true};b.prototype.r_mark_regions=b.prototype.T;function F(a){var x;var y;var z;var u;var v;var l;var d;var e;var h;var i;var j;var k;var c;var m;var n;var o;var p;var q;var r;var s;var t;var w;a.I_pV=t=a.A;a.I_p1=t;a.I_p2=t;x=a._;l=true;a:while(l===true){l=false;d=true;g:while(d===true){d=false;y=a._;e=true;b:while(e===true){e=false;if(!f(a,b.g_v,97,250)){break b}h=true;f:while(h===true){h=false;z=a._;i=true;c:while(i===true){i=false;if(!g(a,b.g_v,97,250)){break c}d:while(true){j=true;e:while(j===true){j=false;if(!f(a,b.g_v,97,250)){break e}break d}if(a._>=a.A){break c}a._++}break f}a._=z;if(!f(a,b.g_v,97,250)){break b}c:while(true){k=true;d:while(k===true){k=false;if(!g(a,b.g_v,97,250)){break d}break c}if(a._>=a.A){break b}a._++}}break g}a._=y;if(!g(a,b.g_v,97,250)){break a}c=true;c:while(c===true){c=false;u=a._;m=true;b:while(m===true){m=false;if(!g(a,b.g_v,97,250)){break b}e:while(true){n=true;d:while(n===true){n=false;if(!f(a,b.g_v,97,250)){break d}break e}if(a._>=a.A){break b}a._++}break c}a._=u;if(!f(a,b.g_v,97,250)){break a}if(a._>=a.A){break a}a._++}}a.I_pV=a._}w=a._=x;v=w;o=true;a:while(o===true){o=false;b:while(true){p=true;c:while(p===true){p=false;if(!f(a,b.g_v,97,250)){break c}break b}if(a._>=a.A){break a}a._++}b:while(true){q=true;c:while(q===true){q=false;if(!g(a,b.g_v,97,250)){break c}break b}if(a._>=a.A){break a}a._++}a.I_p1=a._;b:while(true){r=true;c:while(r===true){r=false;if(!f(a,b.g_v,97,250)){break c}break b}if(a._>=a.A){break a}a._++}c:while(true){s=true;b:while(s===true){s=false;if(!g(a,b.g_v,97,250)){break b}break c}if(a._>=a.A){break a}a._++}a.I_p2=a._}a._=v;return true};b.prototype.U=function(){var a;var e;var d;b:while(true){e=this._;d=true;a:while(d===true){d=false;this.B=this._;a=m(this,b.a_1,3);if(a===0){break a}this.C=this._;switch(a){case 0:break a;case 1:if(!c(this,'ã')){return false}break;case 2:if(!c(this,'õ')){return false}break;case 3:if(this._>=this.A){break a}this._++;break}continue b}this._=e;break b}return true};b.prototype.r_postlude=b.prototype.U;function G(a){var d;var f;var e;b:while(true){f=a._;e=true;a:while(e===true){e=false;a.B=a._;d=m(a,b.a_1,3);if(d===0){break a}a.C=a._;switch(d){case 0:break a;case 1:if(!c(a,'ã')){return false}break;case 2:if(!c(a,'õ')){return false}break;case 3:if(a._>=a.A){break a}a._++;break}continue b}a._=f;break b}return true};b.prototype.S=function(){return!(this.I_pV<=this._)?false:true};b.prototype.r_RV=b.prototype.S;b.prototype.Q=function(){return!(this.I_p1<=this._)?false:true};b.prototype.r_R1=b.prototype.Q;b.prototype.R=function(){return!(this.I_p2<=this._)?false:true};b.prototype.r_R2=b.prototype.R;b.prototype.Y=function(){var a;var f;var g;var h;var j;var i;var k;var l;var m;var o;var p;var n;this.C=this._;a=e(this,b.a_5,45);if(a===0){return false}this.B=this._;switch(a){case 0:return false;case 1:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'')){return false}break;case 2:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'log')){return false}break;case 3:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'u')){return false}break;case 4:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'ente')){return false}break;case 5:if(!(!(this.I_p1<=this._)?false:true)){return false}if(!c(this,'')){return false}f=this.A-this._;i=true;a:while(i===true){i=false;this.C=this._;a=e(this,b.a_2,4);if(a===0){this._=this.A-f;break a}this.B=o=this._;if(!(!(this.I_p2<=o)?false:true)){this._=this.A-f;break a}if(!c(this,'')){return false}switch(a){case 0:this._=this.A-f;break a;case 1:this.C=this._;if(!d(this,2,'at')){this._=this.A-f;break a}this.B=p=this._;if(!(!(this.I_p2<=p)?false:true)){this._=this.A-f;break a}if(!c(this,'')){return false}break}}break;case 6:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'')){return false}g=this.A-this._;k=true;a:while(k===true){k=false;this.C=this._;a=e(this,b.a_3,3);if(a===0){this._=this.A-g;break a}this.B=this._;switch(a){case 0:this._=this.A-g;break a;case 1:if(!(!(this.I_p2<=this._)?false:true)){this._=this.A-g;break a}if(!c(this,'')){return false}break}}break;case 7:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'')){return false}h=this.A-this._;l=true;a:while(l===true){l=false;this.C=this._;a=e(this,b.a_4,3);if(a===0){this._=this.A-h;break a}this.B=this._;switch(a){case 0:this._=this.A-h;break a;case 1:if(!(!(this.I_p2<=this._)?false:true)){this._=this.A-h;break a}if(!c(this,'')){return false}break}}break;case 8:if(!(!(this.I_p2<=this._)?false:true)){return false}if(!c(this,'')){return false}j=this.A-this._;m=true;a:while(m===true){m=false;this.C=this._;if(!d(this,2,'at')){this._=this.A-j;break a}this.B=n=this._;if(!(!(this.I_p2<=n)?false:true)){this._=this.A-j;break a}if(!c(this,'')){return false}}break;case 9:if(!(!(this.I_pV<=this._)?false:true)){return false}if(!d(this,1,'e')){return false}if(!c(this,'ir')){return false}break}return true};b.prototype.r_standard_suffix=b.prototype.Y;function H(a){var f;var g;var h;var i;var k;var j;var l;var m;var n;var p;var q;var o;a.C=a._;f=e(a,b.a_5,45);if(f===0){return false}a.B=a._;switch(f){case 0:return false;case 1:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'')){return false}break;case 2:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'log')){return false}break;case 3:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'u')){return false}break;case 4:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'ente')){return false}break;case 5:if(!(!(a.I_p1<=a._)?false:true)){return false}if(!c(a,'')){return false}g=a.A-a._;j=true;a:while(j===true){j=false;a.C=a._;f=e(a,b.a_2,4);if(f===0){a._=a.A-g;break a}a.B=p=a._;if(!(!(a.I_p2<=p)?false:true)){a._=a.A-g;break a}if(!c(a,'')){return false}switch(f){case 0:a._=a.A-g;break a;case 1:a.C=a._;if(!d(a,2,'at')){a._=a.A-g;break a}a.B=q=a._;if(!(!(a.I_p2<=q)?false:true)){a._=a.A-g;break a}if(!c(a,'')){return false}break}}break;case 6:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'')){return false}h=a.A-a._;l=true;a:while(l===true){l=false;a.C=a._;f=e(a,b.a_3,3);if(f===0){a._=a.A-h;break a}a.B=a._;switch(f){case 0:a._=a.A-h;break a;case 1:if(!(!(a.I_p2<=a._)?false:true)){a._=a.A-h;break a}if(!c(a,'')){return false}break}}break;case 7:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'')){return false}i=a.A-a._;m=true;a:while(m===true){m=false;a.C=a._;f=e(a,b.a_4,3);if(f===0){a._=a.A-i;break a}a.B=a._;switch(f){case 0:a._=a.A-i;break a;case 1:if(!(!(a.I_p2<=a._)?false:true)){a._=a.A-i;break a}if(!c(a,'')){return false}break}}break;case 8:if(!(!(a.I_p2<=a._)?false:true)){return false}if(!c(a,'')){return false}k=a.A-a._;n=true;a:while(n===true){n=false;a.C=a._;if(!d(a,2,'at')){a._=a.A-k;break a}a.B=o=a._;if(!(!(a.I_p2<=o)?false:true)){a._=a.A-k;break a}if(!c(a,'')){return false}}break;case 9:if(!(!(a.I_pV<=a._)?false:true)){return false}if(!d(a,1,'e')){return false}if(!c(a,'ir')){return false}break}return true};b.prototype.Z=function(){var d;var f;var a;var g;var h;var i;f=this.A-(g=this._);if(g<this.I_pV){return false}h=this._=this.I_pV;a=this.D;this.D=h;i=this._=this.A-f;this.C=i;d=e(this,b.a_6,120);if(d===0){this.D=a;return false}this.B=this._;switch(d){case 0:this.D=a;return false;case 1:if(!c(this,'')){return false}break}this.D=a;return true};b.prototype.r_verb_suffix=b.prototype.Z;function D(a){var f;var g;var d;var h;var i;var j;g=a.A-(h=a._);if(h<a.I_pV){return false}i=a._=a.I_pV;d=a.D;a.D=i;j=a._=a.A-g;a.C=j;f=e(a,b.a_6,120);if(f===0){a.D=d;return false}a.B=a._;switch(f){case 0:a.D=d;return false;case 1:if(!c(a,'')){return false}break}a.D=d;return true};b.prototype.X=function(){var a;this.C=this._;a=e(this,b.a_7,7);if(a===0){return false}this.B=this._;switch(a){case 0:return false;case 1:if(!(!(this.I_pV<=this._)?false:true)){return false}if(!c(this,'')){return false}break}return true};b.prototype.r_residual_suffix=b.prototype.X;function C(a){var d;a.C=a._;d=e(a,b.a_7,7);if(d===0){return false}a.B=a._;switch(d){case 0:return false;case 1:if(!(!(a.I_pV<=a._)?false:true)){return false}if(!c(a,'')){return false}break}return true};b.prototype.W=function(){var a;var h;var i;var j;var f;var g;var k;var l;this.C=this._;a=e(this,b.a_8,4);if(a===0){return false}this.B=this._;switch(a){case 0:return false;case 1:if(!(!(this.I_pV<=this._)?false:true)){return false}if(!c(this,'')){return false}this.C=this._;f=true;b:while(f===true){f=false;h=this.A-this._;g=true;a:while(g===true){g=false;if(!d(this,1,'u')){break a}this.B=k=this._;i=this.A-k;if(!d(this,1,'g')){break a}this._=this.A-i;break b}this._=this.A-h;if(!d(this,1,'i')){return false}this.B=l=this._;j=this.A-l;if(!d(this,1,'c')){return false}this._=this.A-j}if(!(!(this.I_pV<=this._)?false:true)){return false}if(!c(this,'')){return false}break;case 2:if(!c(this,'c')){return false}break}return true};b.prototype.r_residual_form=b.prototype.W;function y(a){var f;var i;var j;var k;var g;var h;var l;var m;a.C=a._;f=e(a,b.a_8,4);if(f===0){return false}a.B=a._;switch(f){case 0:return false;case 1:if(!(!(a.I_pV<=a._)?false:true)){return false}if(!c(a,'')){return false}a.C=a._;g=true;b:while(g===true){g=false;i=a.A-a._;h=true;a:while(h===true){h=false;if(!d(a,1,'u')){break a}a.B=l=a._;j=a.A-l;if(!d(a,1,'g')){break a}a._=a.A-j;break b}a._=a.A-i;if(!d(a,1,'i')){return false}a.B=m=a._;k=a.A-m;if(!d(a,1,'c')){return false}a._=a.A-k}if(!(!(a.I_pV<=a._)?false:true)){return false}if(!c(a,'')){return false}break;case 2:if(!c(a,'c')){return false}break}return true};b.prototype.J=function(){var q;var n;var o;var p;var r;var s;var t;var u;var v;var b;var e;var f;var g;var a;var h;var i;var j;var k;var l;var w;var x;var z;var A;var B;var I;var J;var K;var m;q=this._;b=true;a:while(b===true){b=false;if(!E(this)){break a}}w=this._=q;n=w;e=true;a:while(e===true){e=false;if(!F(this)){break a}}I=this._=n;this.D=I;K=this._=J=this.A;o=J-K;f=true;b:while(f===true){f=false;g=true;c:while(g===true){g=false;p=this.A-this._;a=true;d:while(a===true){a=false;r=this.A-this._;h=true;a:while(h===true){h=false;s=this.A-this._;i=true;e:while(i===true){i=false;if(!H(this)){break e}break a}this._=this.A-s;if(!D(this)){break d}}B=this._=(A=this.A)-r;t=A-B;j=true;a:while(j===true){j=false;this.C=this._;if(!d(this,1,'i')){break a}this.B=x=this._;u=this.A-x;if(!d(this,1,'c')){break a}z=this._=this.A-u;if(!(!(this.I_pV<=z)?false:true)){break a}if(!c(this,'')){return false}}this._=this.A-t;break c}this._=this.A-p;if(!C(this)){break b}}}this._=this.A-o;k=true;a:while(k===true){k=false;if(!y(this)){break a}}m=this._=this.D;v=m;l=true;a:while(l===true){l=false;if(!G(this)){break a}}this._=v;return true};b.prototype.stem=b.prototype.J;b.prototype.N=function(a){return a instanceof b};b.prototype.equals=b.prototype.N;b.prototype.O=function(){var c;var a;var b;var d;c='PortugueseStemmer';a=0;for(b=0;b<c.length;b++){d=c.charCodeAt(b);a=(a<<5)-a+d;a=a&a}return a|0};b.prototype.hashCode=b.prototype.O;b.serialVersionUID=1;h(b,'methodObject',function(){return new b});h(b,'a_0',function(){return[new a('',-1,3),new a('ã',0,1),new a('õ',0,2)]});h(b,'a_1',function(){return[new a('',-1,3),new a('a~',0,1),new a('o~',0,2)]});h(b,'a_2',function(){return[new a('ic',-1,-1),new a('ad',-1,-1),new a('os',-1,-1),new a('iv',-1,1)]});h(b,'a_3',function(){return[new a('ante',-1,1),new a('avel',-1,1),new a('ível',-1,1)]});h(b,'a_4',function(){return[new a('ic',-1,1),new a('abil',-1,1),new a('iv',-1,1)]});h(b,'a_5',function(){return[new a('ica',-1,1),new a('ância',-1,1),new a('ência',-1,4),new a('ira',-1,9),new a('adora',-1,1),new a('osa',-1,1),new a('ista',-1,1),new a('iva',-1,8),new a('eza',-1,1),new a('logía',-1,2),new a('idade',-1,7),new a('ante',-1,1),new a('mente',-1,6),new a('amente',12,5),new a('ável',-1,1),new a('ível',-1,1),new a('ución',-1,3),new a('ico',-1,1),new a('ismo',-1,1),new a('oso',-1,1),new a('amento',-1,1),new a('imento',-1,1),new a('ivo',-1,8),new a('aça~o',-1,1),new a('ador',-1,1),new a('icas',-1,1),new a('ências',-1,4),new a('iras',-1,9),new a('adoras',-1,1),new a('osas',-1,1),new a('istas',-1,1),new a('ivas',-1,8),new a('ezas',-1,1),new a('logías',-1,2),new a('idades',-1,7),new a('uciones',-1,3),new a('adores',-1,1),new a('antes',-1,1),new a('aço~es',-1,1),new a('icos',-1,1),new a('ismos',-1,1),new a('osos',-1,1),new a('amentos',-1,1),new a('imentos',-1,1),new a('ivos',-1,8)]});h(b,'a_6',function(){return[new a('ada',-1,1),new a('ida',-1,1),new a('ia',-1,1),new a('aria',2,1),new a('eria',2,1),new a('iria',2,1),new a('ara',-1,1),new a('era',-1,1),new a('ira',-1,1),new a('ava',-1,1),new a('asse',-1,1),new a('esse',-1,1),new a('isse',-1,1),new a('aste',-1,1),new a('este',-1,1),new a('iste',-1,1),new a('ei',-1,1),new a('arei',16,1),new a('erei',16,1),new a('irei',16,1),new a('am',-1,1),new a('iam',20,1),new a('ariam',21,1),new a('eriam',21,1),new a('iriam',21,1),new a('aram',20,1),new a('eram',20,1),new a('iram',20,1),new a('avam',20,1),new a('em',-1,1),new a('arem',29,1),new a('erem',29,1),new a('irem',29,1),new a('assem',29,1),new a('essem',29,1),new a('issem',29,1),new a('ado',-1,1),new a('ido',-1,1),new a('ando',-1,1),new a('endo',-1,1),new a('indo',-1,1),new a('ara~o',-1,1),new a('era~o',-1,1),new a('ira~o',-1,1),new a('ar',-1,1),new a('er',-1,1),new a('ir',-1,1),new a('as',-1,1),new a('adas',47,1),new a('idas',47,1),new a('ias',47,1),new a('arias',50,1),new a('erias',50,1),new a('irias',50,1),new a('aras',47,1),new a('eras',47,1),new a('iras',47,1),new a('avas',47,1),new a('es',-1,1),new a('ardes',58,1),new a('erdes',58,1),new a('irdes',58,1),new a('ares',58,1),new a('eres',58,1),new a('ires',58,1),new a('asses',58,1),new a('esses',58,1),new a('isses',58,1),new a('astes',58,1),new a('estes',58,1),new a('istes',58,1),new a('is',-1,1),new a('ais',71,1),new a('eis',71,1),new a('areis',73,1),new a('ereis',73,1),new a('ireis',73,1),new a('áreis',73,1),new a('éreis',73,1),new a('íreis',73,1),new a('ásseis',73,1),new a('ésseis',73,1),new a('ísseis',73,1),new a('áveis',73,1),new a('íeis',73,1),new a('aríeis',84,1),new a('eríeis',84,1),new a('iríeis',84,1),new a('ados',-1,1),new a('idos',-1,1),new a('amos',-1,1),new a('áramos',90,1),new a('éramos',90,1),new a('íramos',90,1),new a('ávamos',90,1),new a('íamos',90,1),new a('aríamos',95,1),new a('eríamos',95,1),new a('iríamos',95,1),new a('emos',-1,1),new a('aremos',99,1),new a('eremos',99,1),new a('iremos',99,1),new a('ássemos',99,1),new a('êssemos',99,1),new a('íssemos',99,1),new a('imos',-1,1),new a('armos',-1,1),new a('ermos',-1,1),new a('irmos',-1,1),new a('ámos',-1,1),new a('arás',-1,1),new a('erás',-1,1),new a('irás',-1,1),new a('eu',-1,1),new a('iu',-1,1),new a('ou',-1,1),new a('ará',-1,1),new a('erá',-1,1),new a('irá',-1,1)]});h(b,'a_7',function(){return[new a('a',-1,1),new a('i',-1,1),new a('o',-1,1),new a('os',-1,1),new a('á',-1,1),new a('í',-1,1),new a('ó',-1,1)]});h(b,'a_8',function(){return[new a('e',-1,1),new a('ç',-1,2),new a('é',-1,1),new a('ê',-1,1)]});h(b,'g_v',function(){return[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,3,19,12,2]});var o={'src/stemmer.jsx':{Stemmer:n},'src/portuguese-stemmer.jsx':{PortugueseStemmer:b}}}(JSX)) +var Stemmer = JSX.require("src/portuguese-stemmer.jsx").PortugueseStemmer; +""" + + +class SearchPortuguese(SearchLanguage): + lang = 'pt' + language_name = 'Portuguese' + js_stemmer_rawcode = 'portuguese-stemmer.js' + js_stemmer_code = js_stemmer + stopwords = portuguese_stopwords + + def init(self, options: Dict) -> None: + self.stemmer = snowballstemmer.stemmer('portuguese') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/sphinx/search/ro.py b/sphinx/sphinx/search/ro.py new file mode 100644 index 0000000..cfae772 --- /dev/null +++ b/sphinx/sphinx/search/ro.py @@ -0,0 +1,35 @@ +""" + sphinx.search.ro + ~~~~~~~~~~~~~~~~ + + Romanian search language: includes the JS Romanian stemmer. + + :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Dict, Set + +import snowballstemmer + +from sphinx.search import SearchLanguage + + +js_stemmer = """ +var JSX={};(function(j){function l(b,e){var a=function(){};a.prototype=e.prototype;var c=new a;for(var d in b){b[d].prototype=c}}function L(c,b){for(var a in b.prototype)if(b.prototype.hasOwnProperty(a))c.prototype[a]=b.prototype[a]}function h(a,b,d){function c(a,b,c){delete a[b];a[b]=c;return c}Object.defineProperty(a,b,{get:function(){return c(a,b,d())},set:function(d){c(a,b,d)},enumerable:true,configurable:true})}function M(a,b,c){return a[b]=a[b]/c|0}var E=parseInt;var C=parseFloat;function N(a){return a!==a}var A=isFinite;var z=encodeURIComponent;var y=decodeURIComponent;var x=encodeURI;var w=decodeURI;var u=Object.prototype.toString;var D=Object.prototype.hasOwnProperty;function k(){}j.require=function(b){var a=r[b];return a!==undefined?a:null};j.profilerIsRunning=function(){return k.getResults!=null};j.getProfileResults=function(){return(k.getResults||function(){return{}})()};j.postProfileResults=function(a,b){if(k.postResults==null)throw new Error('profiler has not been turned on');return k.postResults(a,b)};j.resetProfileResults=function(){if(k.resetResults==null)throw new Error('profiler has not been turned on');return k.resetResults()};j.DEBUG=false;function t(){};l([t],Error);function a(a,b,c){this.F=a.length;this.K=a;this.L=b;this.I=c;this.H=null;this.P=null};l([a],Object);function n(){};l([n],Object);function g(){var a;var b;var c;this.G={};a=this.E='';b=this._=0;c=this.A=a.length;this.D=0;this.B=b;this.C=c};l([g],n);function v(a,b){a.E=b.E;a._=b._;a.A=b.A;a.D=b.D;a.B=b.B;a.C=b.C};function d(b,d,c,e){var a;if(b._>=b.A){return false}a=b.E.charCodeAt(b._);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._++;return true};function e(a,d,c,e){var b;if(a._>=a.A){return false}b=a.E.charCodeAt(a._);if(b>e||b<c){a._++;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._++;return true}return false};function p(a,d,c,e){var b;if(a._<=a.D){return false}b=a.E.charCodeAt(a._-1);if(b>e||b<c){a._--;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._--;return true}return false};function m(a,b,d){var c;if(a.A-a._<b){return false}if(a.E.slice(c=a._,c+b)!==d){return false}a._+=b;return true};function i(a,b,d){var c;if(a._-a.D<b){return false}if(a.E.slice((c=a._)-b,c)!==d){return false}a._-=b;return true};function q(f,m,p){var b;var d;var e;var n;var g;var k;var l;var i;var h;var c;var a;var j;var o;b=0;d=p;e=f._;n=f.A;g=0;k=0;l=false;while(true){i=b+(d-b>>>1);h=0;c=g<k?g:k;a=m[i];for(j=c;j<a.F;j++){if(e+c===n){h=-1;break}h=f.E.charCodeAt(e+c)-a.K.charCodeAt(j);if(h!==0){break}c++}if(h<0){d=i;k=c}else{b=i;g=c}if(d-b<=1){if(b>0){break}if(d===b){break}if(l){break}l=true}}while(true){a=m[b];if(g>=a.F){f._=e+a.F|0;if(a.H==null){return a.I}o=a.H(a.P);f._=e+a.F|0;if(o){return a.I}}b=a.L;if(b<0){return 0}}return-1};function f(d,m,p){var b;var g;var e;var n;var f;var k;var l;var i;var h;var c;var a;var j;var o;b=0;g=p;e=d._;n=d.D;f=0;k=0;l=false;while(true){i=b+(g-b>>1);h=0;c=f<k?f:k;a=m[i];for(j=a.F-1-c;j>=0;j--){if(e-c===n){h=-1;break}h=d.E.charCodeAt(e-1-c)-a.K.charCodeAt(j);if(h!==0){break}c++}if(h<0){g=i;k=c}else{b=i;f=c}if(g-b<=1){if(b>0){break}if(g===b){break}if(l){break}l=true}}while(true){a=m[b];if(f>=a.F){d._=e-a.F|0;if(a.H==null){return a.I}o=a.H(d);d._=e-a.F|0;if(o){return a.I}}b=a.L;if(b<0){return 0}}return-1};function s(a,b,d,e){var c;c=e.length-(d-b);a.E=a.E.slice(0,b)+e+a.E.slice(d);a.A+=c|0;if(a._>=d){a._+=c|0}else if(a._>b){a._=b}return c|0};function c(a,f){var b;var c;var d;var e;b=false;if((c=a.B)<0||c>(d=a.C)||d>(e=a.A)||e>a.E.length?false:true){s(a,a.B,a.C,f);b=true}return b};g.prototype.J=function(){return false};g.prototype.b=function(b){var a;var c;var d;var e;a=this.G['.'+b];if(a==null){c=this.E=b;d=this._=0;e=this.A=c.length;this.D=0;this.B=d;this.C=e;this.J();a=this.E;this.G['.'+b]=a}return a};g.prototype.stemWord=g.prototype.b;g.prototype.c=function(e){var d;var b;var c;var a;var f;var g;var h;d=[];for(b=0;b<e.length;b++){c=e[b];a=this.G['.'+c];if(a==null){f=this.E=c;g=this._=0;h=this.A=f.length;this.D=0;this.B=g;this.C=h;this.J();a=this.E;this.G['.'+c]=a}d.push(a)}return d};g.prototype.stemWords=g.prototype.c;function b(){g.call(this);this.B_standard_suffix_removed=false;this.I_p2=0;this.I_p1=0;this.I_pV=0};l([b],g);b.prototype.M=function(a){this.B_standard_suffix_removed=a.B_standard_suffix_removed;this.I_p2=a.I_p2;this.I_p1=a.I_p1;this.I_pV=a.I_pV;v(this,a)};b.prototype.copy_from=b.prototype.M;b.prototype.W=function(){var i;var a;var j;var e;var f;var g;var h;var k;b:while(true){i=this._;e=true;d:while(e===true){e=false;e:while(true){a=this._;f=true;a:while(f===true){f=false;if(!d(this,b.g_v,97,259)){break a}this.B=this._;g=true;f:while(g===true){g=false;j=this._;h=true;c:while(h===true){h=false;if(!m(this,1,'u')){break c}this.C=this._;if(!d(this,b.g_v,97,259)){break c}if(!c(this,'U')){return false}break f}this._=j;if(!m(this,1,'i')){break a}this.C=this._;if(!d(this,b.g_v,97,259)){break a}if(!c(this,'I')){return false}}this._=a;break e}k=this._=a;if(k>=this.A){break d}this._++}continue b}this._=i;break b}return true};b.prototype.r_prelude=b.prototype.W;function G(a){var j;var e;var k;var f;var g;var h;var i;var l;b:while(true){j=a._;f=true;d:while(f===true){f=false;e:while(true){e=a._;g=true;a:while(g===true){g=false;if(!d(a,b.g_v,97,259)){break a}a.B=a._;h=true;f:while(h===true){h=false;k=a._;i=true;c:while(i===true){i=false;if(!m(a,1,'u')){break c}a.C=a._;if(!d(a,b.g_v,97,259)){break c}if(!c(a,'U')){return false}break f}a._=k;if(!m(a,1,'i')){break a}a.C=a._;if(!d(a,b.g_v,97,259)){break a}if(!c(a,'I')){return false}}a._=e;break e}l=a._=e;if(l>=a.A){break d}a._++}continue b}a._=j;break b}return true};b.prototype.U=function(){var u;var w;var x;var y;var t;var l;var f;var g;var h;var i;var c;var j;var k;var a;var m;var n;var o;var p;var q;var r;var s;var v;this.I_pV=s=this.A;this.I_p1=s;this.I_p2=s;u=this._;l=true;a:while(l===true){l=false;f=true;g:while(f===true){f=false;w=this._;g=true;b:while(g===true){g=false;if(!d(this,b.g_v,97,259)){break b}h=true;f:while(h===true){h=false;x=this._;i=true;c:while(i===true){i=false;if(!e(this,b.g_v,97,259)){break c}d:while(true){c=true;e:while(c===true){c=false;if(!d(this,b.g_v,97,259)){break e}break d}if(this._>=this.A){break c}this._++}break f}this._=x;if(!d(this,b.g_v,97,259)){break b}c:while(true){j=true;d:while(j===true){j=false;if(!e(this,b.g_v,97,259)){break d}break c}if(this._>=this.A){break b}this._++}}break g}this._=w;if(!e(this,b.g_v,97,259)){break a}k=true;c:while(k===true){k=false;y=this._;a=true;b:while(a===true){a=false;if(!e(this,b.g_v,97,259)){break b}e:while(true){m=true;d:while(m===true){m=false;if(!d(this,b.g_v,97,259)){break d}break e}if(this._>=this.A){break b}this._++}break c}this._=y;if(!d(this,b.g_v,97,259)){break a}if(this._>=this.A){break a}this._++}}this.I_pV=this._}v=this._=u;t=v;n=true;a:while(n===true){n=false;b:while(true){o=true;c:while(o===true){o=false;if(!d(this,b.g_v,97,259)){break c}break b}if(this._>=this.A){break a}this._++}b:while(true){p=true;c:while(p===true){p=false;if(!e(this,b.g_v,97,259)){break c}break b}if(this._>=this.A){break a}this._++}this.I_p1=this._;b:while(true){q=true;c:while(q===true){q=false;if(!d(this,b.g_v,97,259)){break c}break b}if(this._>=this.A){break a}this._++}c:while(true){r=true;b:while(r===true){r=false;if(!e(this,b.g_v,97,259)){break b}break c}if(this._>=this.A){break a}this._++}this.I_p2=this._}this._=t;return true};b.prototype.r_mark_regions=b.prototype.U;function H(a){var x;var y;var z;var u;var v;var l;var f;var g;var h;var i;var j;var k;var c;var m;var n;var o;var p;var q;var r;var s;var t;var w;a.I_pV=t=a.A;a.I_p1=t;a.I_p2=t;x=a._;l=true;a:while(l===true){l=false;f=true;g:while(f===true){f=false;y=a._;g=true;b:while(g===true){g=false;if(!d(a,b.g_v,97,259)){break b}h=true;f:while(h===true){h=false;z=a._;i=true;c:while(i===true){i=false;if(!e(a,b.g_v,97,259)){break c}d:while(true){j=true;e:while(j===true){j=false;if(!d(a,b.g_v,97,259)){break e}break d}if(a._>=a.A){break c}a._++}break f}a._=z;if(!d(a,b.g_v,97,259)){break b}c:while(true){k=true;d:while(k===true){k=false;if(!e(a,b.g_v,97,259)){break d}break c}if(a._>=a.A){break b}a._++}}break g}a._=y;if(!e(a,b.g_v,97,259)){break a}c=true;c:while(c===true){c=false;u=a._;m=true;b:while(m===true){m=false;if(!e(a,b.g_v,97,259)){break b}e:while(true){n=true;d:while(n===true){n=false;if(!d(a,b.g_v,97,259)){break d}break e}if(a._>=a.A){break b}a._++}break c}a._=u;if(!d(a,b.g_v,97,259)){break a}if(a._>=a.A){break a}a._++}}a.I_pV=a._}w=a._=x;v=w;o=true;a:while(o===true){o=false;b:while(true){p=true;c:while(p===true){p=false;if(!d(a,b.g_v,97,259)){break c}break b}if(a._>=a.A){break a}a._++}b:while(true){q=true;c:while(q===true){q=false;if(!e(a,b.g_v,97,259)){break c}break b}if(a._>=a.A){break a}a._++}a.I_p1=a._;b:while(true){r=true;c:while(r===true){r=false;if(!d(a,b.g_v,97,259)){break c}break b}if(a._>=a.A){break a}a._++}c:while(true){s=true;b:while(s===true){s=false;if(!e(a,b.g_v,97,259)){break b}break c}if(a._>=a.A){break a}a._++}a.I_p2=a._}a._=v;return true};b.prototype.V=function(){var a;var e;var d;b:while(true){e=this._;d=true;a:while(d===true){d=false;this.B=this._;a=q(this,b.a_0,3);if(a===0){break a}this.C=this._;switch(a){case 0:break a;case 1:if(!c(this,'i')){return false}break;case 2:if(!c(this,'u')){return false}break;case 3:if(this._>=this.A){break a}this._++;break}continue b}this._=e;break b}return true};b.prototype.r_postlude=b.prototype.V;function I(a){var d;var f;var e;b:while(true){f=a._;e=true;a:while(e===true){e=false;a.B=a._;d=q(a,b.a_0,3);if(d===0){break a}a.C=a._;switch(d){case 0:break a;case 1:if(!c(a,'i')){return false}break;case 2:if(!c(a,'u')){return false}break;case 3:if(a._>=a.A){break a}a._++;break}continue b}a._=f;break b}return true};b.prototype.S=function(){return!(this.I_pV<=this._)?false:true};b.prototype.r_RV=b.prototype.S;b.prototype.Q=function(){return!(this.I_p1<=this._)?false:true};b.prototype.r_R1=b.prototype.Q;b.prototype.R=function(){return!(this.I_p2<=this._)?false:true};b.prototype.r_R2=b.prototype.R;b.prototype.Y=function(){var a;var e;var d;var g;this.C=this._;a=f(this,b.a_1,16);if(a===0){return false}this.B=g=this._;if(!(!(this.I_p1<=g)?false:true)){return false}switch(a){case 0:return false;case 1:if(!c(this,'')){return false}break;case 2:if(!c(this,'a')){return false}break;case 3:if(!c(this,'e')){return false}break;case 4:if(!c(this,'i')){return false}break;case 5:e=this.A-this._;d=true;a:while(d===true){d=false;if(!i(this,2,'ab')){break a}return false}this._=this.A-e;if(!c(this,'i')){return false}break;case 6:if(!c(this,'at')){return false}break;case 7:if(!c(this,'aţi')){return false}break}return true};b.prototype.r_step_0=b.prototype.Y;function J(a){var d;var g;var e;var h;a.C=a._;d=f(a,b.a_1,16);if(d===0){return false}a.B=h=a._;if(!(!(a.I_p1<=h)?false:true)){return false}switch(d){case 0:return false;case 1:if(!c(a,'')){return false}break;case 2:if(!c(a,'a')){return false}break;case 3:if(!c(a,'e')){return false}break;case 4:if(!c(a,'i')){return false}break;case 5:g=a.A-a._;e=true;a:while(e===true){e=false;if(!i(a,2,'ab')){break a}return false}a._=a.A-g;if(!c(a,'i')){return false}break;case 6:if(!c(a,'at')){return false}break;case 7:if(!c(a,'aţi')){return false}break}return true};b.prototype.T=function(){var a;var d;var e;var g;d=this.A-(e=this._);this.C=e;a=f(this,b.a_2,46);if(a===0){return false}this.B=g=this._;if(!(!(this.I_p1<=g)?false:true)){return false}switch(a){case 0:return false;case 1:if(!c(this,'abil')){return false}break;case 2:if(!c(this,'ibil')){return false}break;case 3:if(!c(this,'iv')){return false}break;case 4:if(!c(this,'ic')){return false}break;case 5:if(!c(this,'at')){return false}break;case 6:if(!c(this,'it')){return false}break}this.B_standard_suffix_removed=true;this._=this.A-d;return true};b.prototype.r_combo_suffix=b.prototype.T;function o(a){var d;var e;var g;var h;e=a.A-(g=a._);a.C=g;d=f(a,b.a_2,46);if(d===0){return false}a.B=h=a._;if(!(!(a.I_p1<=h)?false:true)){return false}switch(d){case 0:return false;case 1:if(!c(a,'abil')){return false}break;case 2:if(!c(a,'ibil')){return false}break;case 3:if(!c(a,'iv')){return false}break;case 4:if(!c(a,'ic')){return false}break;case 5:if(!c(a,'at')){return false}break;case 6:if(!c(a,'it')){return false}break}a.B_standard_suffix_removed=true;a._=a.A-e;return true};b.prototype.X=function(){var a;var e;var d;var g;this.B_standard_suffix_removed=false;a:while(true){e=this.A-this._;d=true;b:while(d===true){d=false;if(!o(this)){break b}continue a}this._=this.A-e;break a}this.C=this._;a=f(this,b.a_3,62);if(a===0){return false}this.B=g=this._;if(!(!(this.I_p2<=g)?false:true)){return false}switch(a){case 0:return false;case 1:if(!c(this,'')){return false}break;case 2:if(!i(this,1,'ţ')){return false}this.B=this._;if(!c(this,'t')){return false}break;case 3:if(!c(this,'ist')){return false}break}this.B_standard_suffix_removed=true;return true};b.prototype.r_standard_suffix=b.prototype.X;function K(a){var d;var g;var e;var h;a.B_standard_suffix_removed=false;a:while(true){g=a.A-a._;e=true;b:while(e===true){e=false;if(!o(a)){break b}continue a}a._=a.A-g;break a}a.C=a._;d=f(a,b.a_3,62);if(d===0){return false}a.B=h=a._;if(!(!(a.I_p2<=h)?false:true)){return false}switch(d){case 0:return false;case 1:if(!c(a,'')){return false}break;case 2:if(!i(a,1,'ţ')){return false}a.B=a._;if(!c(a,'t')){return false}break;case 3:if(!c(a,'ist')){return false}break}a.B_standard_suffix_removed=true;return true};b.prototype.Z=function(){var d;var h;var a;var j;var e;var g;var k;var l;var m;h=this.A-(k=this._);if(k<this.I_pV){return false}l=this._=this.I_pV;a=this.D;this.D=l;m=this._=this.A-h;this.C=m;d=f(this,b.a_4,94);if(d===0){this.D=a;return false}this.B=this._;switch(d){case 0:this.D=a;return false;case 1:e=true;a:while(e===true){e=false;j=this.A-this._;g=true;b:while(g===true){g=false;if(!p(this,b.g_v,97,259)){break b}break a}this._=this.A-j;if(!i(this,1,'u')){this.D=a;return false}}if(!c(this,'')){return false}break;case 2:if(!c(this,'')){return false}break}this.D=a;return true};b.prototype.r_verb_suffix=b.prototype.Z;function F(a){var e;var l;var d;var j;var g;var h;var m;var n;var k;l=a.A-(m=a._);if(m<a.I_pV){return false}n=a._=a.I_pV;d=a.D;a.D=n;k=a._=a.A-l;a.C=k;e=f(a,b.a_4,94);if(e===0){a.D=d;return false}a.B=a._;switch(e){case 0:a.D=d;return false;case 1:g=true;a:while(g===true){g=false;j=a.A-a._;h=true;b:while(h===true){h=false;if(!p(a,b.g_v,97,259)){break b}break a}a._=a.A-j;if(!i(a,1,'u')){a.D=d;return false}}if(!c(a,'')){return false}break;case 2:if(!c(a,'')){return false}break}a.D=d;return true};b.prototype.a=function(){var a;var d;this.C=this._;a=f(this,b.a_5,5);if(a===0){return false}this.B=d=this._;if(!(!(this.I_pV<=d)?false:true)){return false}switch(a){case 0:return false;case 1:if(!c(this,'')){return false}break}return true};b.prototype.r_vowel_suffix=b.prototype.a;function B(a){var d;var e;a.C=a._;d=f(a,b.a_5,5);if(d===0){return false}a.B=e=a._;if(!(!(a.I_pV<=e)?false:true)){return false}switch(d){case 0:return false;case 1:if(!c(a,'')){return false}break}return true};b.prototype.J=function(){var n;var j;var k;var l;var m;var o;var p;var b;var c;var d;var e;var f;var a;var g;var h;var i;var r;var s;var t;var u;var v;var w;var x;var y;var q;n=this._;b=true;a:while(b===true){b=false;if(!G(this)){break a}}r=this._=n;j=r;c=true;a:while(c===true){c=false;if(!H(this)){break a}}s=this._=j;this.D=s;u=this._=t=this.A;k=t-u;d=true;a:while(d===true){d=false;if(!J(this)){break a}}w=this._=(v=this.A)-k;l=v-w;e=true;a:while(e===true){e=false;if(!K(this)){break a}}y=this._=(x=this.A)-l;m=x-y;f=true;a:while(f===true){f=false;a=true;b:while(a===true){a=false;o=this.A-this._;g=true;c:while(g===true){g=false;if(!this.B_standard_suffix_removed){break c}break b}this._=this.A-o;if(!F(this)){break a}}}this._=this.A-m;h=true;a:while(h===true){h=false;if(!B(this)){break a}}q=this._=this.D;p=q;i=true;a:while(i===true){i=false;if(!I(this)){break a}}this._=p;return true};b.prototype.stem=b.prototype.J;b.prototype.N=function(a){return a instanceof b};b.prototype.equals=b.prototype.N;b.prototype.O=function(){var c;var a;var b;var d;c='RomanianStemmer';a=0;for(b=0;b<c.length;b++){d=c.charCodeAt(b);a=(a<<5)-a+d;a=a&a}return a|0};b.prototype.hashCode=b.prototype.O;b.serialVersionUID=1;h(b,'methodObject',function(){return new b});h(b,'a_0',function(){return[new a('',-1,3),new a('I',0,1),new a('U',0,2)]});h(b,'a_1',function(){return[new a('ea',-1,3),new a('aţia',-1,7),new a('aua',-1,2),new a('iua',-1,4),new a('aţie',-1,7),new a('ele',-1,3),new a('ile',-1,5),new a('iile',6,4),new a('iei',-1,4),new a('atei',-1,6),new a('ii',-1,4),new a('ului',-1,1),new a('ul',-1,1),new a('elor',-1,3),new a('ilor',-1,4),new a('iilor',14,4)]});h(b,'a_2',function(){return[new a('icala',-1,4),new a('iciva',-1,4),new a('ativa',-1,5),new a('itiva',-1,6),new a('icale',-1,4),new a('aţiune',-1,5),new a('iţiune',-1,6),new a('atoare',-1,5),new a('itoare',-1,6),new a('ătoare',-1,5),new a('icitate',-1,4),new a('abilitate',-1,1),new a('ibilitate',-1,2),new a('ivitate',-1,3),new a('icive',-1,4),new a('ative',-1,5),new a('itive',-1,6),new a('icali',-1,4),new a('atori',-1,5),new a('icatori',18,4),new a('itori',-1,6),new a('ători',-1,5),new a('icitati',-1,4),new a('abilitati',-1,1),new a('ivitati',-1,3),new a('icivi',-1,4),new a('ativi',-1,5),new a('itivi',-1,6),new a('icităi',-1,4),new a('abilităi',-1,1),new a('ivităi',-1,3),new a('icităţi',-1,4),new a('abilităţi',-1,1),new a('ivităţi',-1,3),new a('ical',-1,4),new a('ator',-1,5),new a('icator',35,4),new a('itor',-1,6),new a('ător',-1,5),new a('iciv',-1,4),new a('ativ',-1,5),new a('itiv',-1,6),new a('icală',-1,4),new a('icivă',-1,4),new a('ativă',-1,5),new a('itivă',-1,6)]});h(b,'a_3',function(){return[new a('ica',-1,1),new a('abila',-1,1),new a('ibila',-1,1),new a('oasa',-1,1),new a('ata',-1,1),new a('ita',-1,1),new a('anta',-1,1),new a('ista',-1,3),new a('uta',-1,1),new a('iva',-1,1),new a('ic',-1,1),new a('ice',-1,1),new a('abile',-1,1),new a('ibile',-1,1),new a('isme',-1,3),new a('iune',-1,2),new a('oase',-1,1),new a('ate',-1,1),new a('itate',17,1),new a('ite',-1,1),new a('ante',-1,1),new a('iste',-1,3),new a('ute',-1,1),new a('ive',-1,1),new a('ici',-1,1),new a('abili',-1,1),new a('ibili',-1,1),new a('iuni',-1,2),new a('atori',-1,1),new a('osi',-1,1),new a('ati',-1,1),new a('itati',30,1),new a('iti',-1,1),new a('anti',-1,1),new a('isti',-1,3),new a('uti',-1,1),new a('işti',-1,3),new a('ivi',-1,1),new a('ităi',-1,1),new a('oşi',-1,1),new a('ităţi',-1,1),new a('abil',-1,1),new a('ibil',-1,1),new a('ism',-1,3),new a('ator',-1,1),new a('os',-1,1),new a('at',-1,1),new a('it',-1,1),new a('ant',-1,1),new a('ist',-1,3),new a('ut',-1,1),new a('iv',-1,1),new a('ică',-1,1),new a('abilă',-1,1),new a('ibilă',-1,1),new a('oasă',-1,1),new a('ată',-1,1),new a('ită',-1,1),new a('antă',-1,1),new a('istă',-1,3),new a('ută',-1,1),new a('ivă',-1,1)]});h(b,'a_4',function(){return[new a('ea',-1,1),new a('ia',-1,1),new a('esc',-1,1),new a('ăsc',-1,1),new a('ind',-1,1),new a('ând',-1,1),new a('are',-1,1),new a('ere',-1,1),new a('ire',-1,1),new a('âre',-1,1),new a('se',-1,2),new a('ase',10,1),new a('sese',10,2),new a('ise',10,1),new a('use',10,1),new a('âse',10,1),new a('eşte',-1,1),new a('ăşte',-1,1),new a('eze',-1,1),new a('ai',-1,1),new a('eai',19,1),new a('iai',19,1),new a('sei',-1,2),new a('eşti',-1,1),new a('ăşti',-1,1),new a('ui',-1,1),new a('ezi',-1,1),new a('âi',-1,1),new a('aşi',-1,1),new a('seşi',-1,2),new a('aseşi',29,1),new a('seseşi',29,2),new a('iseşi',29,1),new a('useşi',29,1),new a('âseşi',29,1),new a('işi',-1,1),new a('uşi',-1,1),new a('âşi',-1,1),new a('aţi',-1,2),new a('eaţi',38,1),new a('iaţi',38,1),new a('eţi',-1,2),new a('iţi',-1,2),new a('âţi',-1,2),new a('arăţi',-1,1),new a('serăţi',-1,2),new a('aserăţi',45,1),new a('seserăţi',45,2),new a('iserăţi',45,1),new a('userăţi',45,1),new a('âserăţi',45,1),new a('irăţi',-1,1),new a('urăţi',-1,1),new a('ârăţi',-1,1),new a('am',-1,1),new a('eam',54,1),new a('iam',54,1),new a('em',-1,2),new a('asem',57,1),new a('sesem',57,2),new a('isem',57,1),new a('usem',57,1),new a('âsem',57,1),new a('im',-1,2),new a('âm',-1,2),new a('ăm',-1,2),new a('arăm',65,1),new a('serăm',65,2),new a('aserăm',67,1),new a('seserăm',67,2),new a('iserăm',67,1),new a('userăm',67,1),new a('âserăm',67,1),new a('irăm',65,1),new a('urăm',65,1),new a('ârăm',65,1),new a('au',-1,1),new a('eau',76,1),new a('iau',76,1),new a('indu',-1,1),new a('ându',-1,1),new a('ez',-1,1),new a('ească',-1,1),new a('ară',-1,1),new a('seră',-1,2),new a('aseră',84,1),new a('seseră',84,2),new a('iseră',84,1),new a('useră',84,1),new a('âseră',84,1),new a('iră',-1,1),new a('ură',-1,1),new a('âră',-1,1),new a('ează',-1,1)]});h(b,'a_5',function(){return[new a('a',-1,1),new a('e',-1,1),new a('ie',1,1),new a('i',-1,1),new a('ă',-1,1)]});h(b,'g_v',function(){return[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,2,32,0,0,4]});var r={'src/stemmer.jsx':{Stemmer:n},'src/romanian-stemmer.jsx':{RomanianStemmer:b}}}(JSX)) +var Stemmer = JSX.require("src/romanian-stemmer.jsx").RomanianStemmer; +""" + + +class SearchRomanian(SearchLanguage): + lang = 'ro' + language_name = 'Romanian' + js_stemmer_rawcode = 'romanian-stemmer.js' + js_stemmer_code = js_stemmer + stopwords = set() # type: Set[str] + + def init(self, options: Dict) -> None: + self.stemmer = snowballstemmer.stemmer('romanian') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/sphinx/search/ru.py b/sphinx/sphinx/search/ru.py new file mode 100644 index 0000000..9c0e303 --- /dev/null +++ b/sphinx/sphinx/search/ru.py @@ -0,0 +1,264 @@ +""" + sphinx.search.ru + ~~~~~~~~~~~~~~~~ + + Russian search language: includes the JS Russian stemmer. + + :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + + +russian_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/russian/stop.txt +и | and +в | in/into +во | alternative form +не | not +что | what/that +он | he +на | on/onto +я | i +с | from +со | alternative form +как | how +а | milder form of `no' (but) +то | conjunction and form of `that' +все | all +она | she +так | so, thus +его | him +но | but +да | yes/and +ты | thou +к | towards, by +у | around, chez +же | intensifier particle +вы | you +за | beyond, behind +бы | conditional/subj. particle +по | up to, along +только | only +ее | her +мне | to me +было | it was +вот | here is/are, particle +от | away from +меня | me +еще | still, yet, more +нет | no, there isnt/arent +о | about +из | out of +ему | to him +теперь | now +когда | when +даже | even +ну | so, well +вдруг | suddenly +ли | interrogative particle +если | if +уже | already, but homonym of `narrower' +или | or +ни | neither +быть | to be +был | he was +него | prepositional form of его +до | up to +вас | you accusative +нибудь | indef. suffix preceded by hyphen +опять | again +уж | already, but homonym of `adder' +вам | to you +сказал | he said +ведь | particle `after all' +там | there +потом | then +себя | oneself +ничего | nothing +ей | to her +может | usually with `быть' as `maybe' +они | they +тут | here +где | where +есть | there is/are +надо | got to, must +ней | prepositional form of ей +для | for +мы | we +тебя | thee +их | them, their +чем | than +была | she was +сам | self +чтоб | in order to +без | without +будто | as if +человек | man, person, one +чего | genitive form of `what' +раз | once +тоже | also +себе | to oneself +под | beneath +жизнь | life +будет | will be +ж | short form of intensifer particle `же' +тогда | then +кто | who +этот | this +говорил | was saying +того | genitive form of `that' +потому | for that reason +этого | genitive form of `this' +какой | which +совсем | altogether +ним | prepositional form of `его', `они' +здесь | here +этом | prepositional form of `этот' +один | one +почти | almost +мой | my +тем | instrumental/dative plural of `тот', `то' +чтобы | full form of `in order that' +нее | her (acc.) +кажется | it seems +сейчас | now +были | they were +куда | where to +зачем | why +сказать | to say +всех | all (acc., gen. preposn. plural) +никогда | never +сегодня | today +можно | possible, one can +при | by +наконец | finally +два | two +об | alternative form of `о', about +другой | another +хоть | even +после | after +над | above +больше | more +тот | that one (masc.) +через | across, in +эти | these +нас | us +про | about +всего | in all, only, of all +них | prepositional form of `они' (they) +какая | which, feminine +много | lots +разве | interrogative particle +сказала | she said +три | three +эту | this, acc. fem. sing. +моя | my, feminine +впрочем | moreover, besides +хорошо | good +свою | ones own, acc. fem. sing. +этой | oblique form of `эта', fem. `this' +перед | in front of +иногда | sometimes +лучше | better +чуть | a little +том | preposn. form of `that one' +нельзя | one must not +такой | such a one +им | to them +более | more +всегда | always +конечно | of course +всю | acc. fem. sing of `all' +между | between + + + | b: some paradigms + | + | personal pronouns + | + | я меня мне мной [мною] + | ты тебя тебе тобой [тобою] + | он его ему им [него, нему, ним] + | она ее эи ею [нее, нэи, нею] + | оно его ему им [него, нему, ним] + | + | мы нас нам нами + | вы вас вам вами + | они их им ими [них, ним, ними] + | + | себя себе собой [собою] + | + | demonstrative pronouns: этот (this), тот (that) + | + | этот эта это эти + | этого эты это эти + | этого этой этого этих + | этому этой этому этим + | этим этой этим [этою] этими + | этом этой этом этих + | + | тот та то те + | того ту то те + | того той того тех + | тому той тому тем + | тем той тем [тою] теми + | том той том тех + | + | determinative pronouns + | + | (a) весь (all) + | + | весь вся все все + | всего всю все все + | всего всей всего всех + | всему всей всему всем + | всем всей всем [всею] всеми + | всем всей всем всех + | + | (b) сам (himself etc) + | + | сам сама само сами + | самого саму само самих + | самого самой самого самих + | самому самой самому самим + | самим самой самим [самою] самими + | самом самой самом самих + | + | stems of verbs `to be', `to have', `to do' and modal + | + | быть бы буд быв есть суть + | име + | дел + | мог мож мочь + | уме + | хоч хот + | долж + | можн + | нужн + | нельзя +''') + +js_stemmer = """ +var JSX={};(function(h){function j(b,e){var a=function(){};a.prototype=e.prototype;var c=new a;for(var d in b){b[d].prototype=c}}function J(c,b){for(var a in b.prototype)if(b.prototype.hasOwnProperty(a))c.prototype[a]=b.prototype[a]}function f(a,b,d){function c(a,b,c){delete a[b];a[b]=c;return c}Object.defineProperty(a,b,{get:function(){return c(a,b,d())},set:function(d){c(a,b,d)},enumerable:true,configurable:true})}function K(a,b,c){return a[b]=a[b]/c|0}var p=parseInt;var z=parseFloat;function L(a){return a!==a}var x=isFinite;var w=encodeURIComponent;var u=decodeURIComponent;var t=encodeURI;var s=decodeURI;var B=Object.prototype.toString;var q=Object.prototype.hasOwnProperty;function i(){}h.require=function(b){var a=o[b];return a!==undefined?a:null};h.profilerIsRunning=function(){return i.getResults!=null};h.getProfileResults=function(){return(i.getResults||function(){return{}})()};h.postProfileResults=function(a,b){if(i.postResults==null)throw new Error('profiler has not been turned on');return i.postResults(a,b)};h.resetProfileResults=function(){if(i.resetResults==null)throw new Error('profiler has not been turned on');return i.resetResults()};h.DEBUG=false;function r(){};j([r],Error);function a(a,b,c){this.G=a.length;this.X=a;this.a=b;this.J=c;this.I=null;this.b=null};j([a],Object);function m(){};j([m],Object);function g(){var a;var b;var c;this.F={};a=this.D='';b=this._=0;c=this.A=a.length;this.E=0;this.B=b;this.C=c};j([g],m);function v(a,b){a.D=b.D;a._=b._;a.A=b.A;a.E=b.E;a.B=b.B;a.C=b.C};function k(b,d,c,e){var a;if(b._>=b.A){return false}a=b.D.charCodeAt(b._);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._++;return true};function l(a,d,c,e){var b;if(a._>=a.A){return false}b=a.D.charCodeAt(a._);if(b>e||b<c){a._++;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._++;return true}return false};function d(a,b,d){var c;if(a._-a.E<b){return false}if(a.D.slice((c=a._)-b,c)!==d){return false}a._-=b;return true};function e(d,m,p){var b;var g;var e;var n;var f;var k;var l;var i;var h;var c;var a;var j;var o;b=0;g=p;e=d._;n=d.E;f=0;k=0;l=false;while(true){i=b+(g-b>>1);h=0;c=f<k?f:k;a=m[i];for(j=a.G-1-c;j>=0;j--){if(e-c===n){h=-1;break}h=d.D.charCodeAt(e-1-c)-a.X.charCodeAt(j);if(h!==0){break}c++}if(h<0){g=i;k=c}else{b=i;f=c}if(g-b<=1){if(b>0){break}if(g===b){break}if(l){break}l=true}}while(true){a=m[b];if(f>=a.G){d._=e-a.G|0;if(a.I==null){return a.J}o=a.I(d);d._=e-a.G|0;if(o){return a.J}}b=a.a;if(b<0){return 0}}return-1};function A(a,b,d,e){var c;c=e.length-(d-b);a.D=a.D.slice(0,b)+e+a.D.slice(d);a.A+=c|0;if(a._>=d){a._+=c|0}else if(a._>b){a._=b}return c|0};function c(a,f){var b;var c;var d;var e;b=false;if((c=a.B)<0||c>(d=a.C)||d>(e=a.A)||e>a.D.length?false:true){A(a,a.B,a.C,f);b=true}return b};g.prototype.H=function(){return false};g.prototype.Y=function(b){var a;var c;var d;var e;a=this.F['.'+b];if(a==null){c=this.D=b;d=this._=0;e=this.A=c.length;this.E=0;this.B=d;this.C=e;this.H();a=this.D;this.F['.'+b]=a}return a};g.prototype.stemWord=g.prototype.Y;g.prototype.Z=function(e){var d;var b;var c;var a;var f;var g;var h;d=[];for(b=0;b<e.length;b++){c=e[b];a=this.F['.'+c];if(a==null){f=this.D=c;g=this._=0;h=this.A=f.length;this.E=0;this.B=g;this.C=h;this.H();a=this.D;this.F['.'+c]=a}d.push(a)}return d};g.prototype.stemWords=g.prototype.Z;function b(){g.call(this);this.I_p2=0;this.I_pV=0};j([b],g);b.prototype.K=function(a){this.I_p2=a.I_p2;this.I_pV=a.I_pV;v(this,a)};b.prototype.copy_from=b.prototype.K;b.prototype.R=function(){var g;var a;var c;var d;var e;var f;var h;this.I_pV=h=this.A;this.I_p2=h;g=this._;a=true;a:while(a===true){a=false;b:while(true){c=true;c:while(c===true){c=false;if(!k(this,b.g_v,1072,1103)){break c}break b}if(this._>=this.A){break a}this._++}this.I_pV=this._;b:while(true){d=true;c:while(d===true){d=false;if(!l(this,b.g_v,1072,1103)){break c}break b}if(this._>=this.A){break a}this._++}b:while(true){e=true;c:while(e===true){e=false;if(!k(this,b.g_v,1072,1103)){break c}break b}if(this._>=this.A){break a}this._++}b:while(true){f=true;c:while(f===true){f=false;if(!l(this,b.g_v,1072,1103)){break c}break b}if(this._>=this.A){break a}this._++}this.I_p2=this._}this._=g;return true};b.prototype.r_mark_regions=b.prototype.R;function D(a){var h;var c;var d;var e;var f;var g;var i;a.I_pV=i=a.A;a.I_p2=i;h=a._;c=true;a:while(c===true){c=false;b:while(true){d=true;c:while(d===true){d=false;if(!k(a,b.g_v,1072,1103)){break c}break b}if(a._>=a.A){break a}a._++}a.I_pV=a._;b:while(true){e=true;c:while(e===true){e=false;if(!l(a,b.g_v,1072,1103)){break c}break b}if(a._>=a.A){break a}a._++}b:while(true){f=true;c:while(f===true){f=false;if(!k(a,b.g_v,1072,1103)){break c}break b}if(a._>=a.A){break a}a._++}b:while(true){g=true;c:while(g===true){g=false;if(!l(a,b.g_v,1072,1103)){break c}break b}if(a._>=a.A){break a}a._++}a.I_p2=a._}a._=h;return true};b.prototype.N=function(){return!(this.I_p2<=this._)?false:true};b.prototype.r_R2=b.prototype.N;b.prototype.T=function(){var a;var h;var f;var g;this.C=this._;a=e(this,b.a_0,9);if(a===0){return false}this.B=this._;switch(a){case 0:return false;case 1:f=true;a:while(f===true){f=false;h=this.A-this._;g=true;b:while(g===true){g=false;if(!d(this,1,'а')){break b}break a}this._=this.A-h;if(!d(this,1,'я')){return false}}if(!c(this,'')){return false}break;case 2:if(!c(this,'')){return false}break}return true};b.prototype.r_perfective_gerund=b.prototype.T;function E(a){var f;var i;var g;var h;a.C=a._;f=e(a,b.a_0,9);if(f===0){return false}a.B=a._;switch(f){case 0:return false;case 1:g=true;a:while(g===true){g=false;i=a.A-a._;h=true;b:while(h===true){h=false;if(!d(a,1,'а')){break b}break a}a._=a.A-i;if(!d(a,1,'я')){return false}}if(!c(a,'')){return false}break;case 2:if(!c(a,'')){return false}break}return true};b.prototype.P=function(){var a;this.C=this._;a=e(this,b.a_1,26);if(a===0){return false}this.B=this._;switch(a){case 0:return false;case 1:if(!c(this,'')){return false}break}return true};b.prototype.r_adjective=b.prototype.P;function n(a){var d;a.C=a._;d=e(a,b.a_1,26);if(d===0){return false}a.B=a._;switch(d){case 0:return false;case 1:if(!c(a,'')){return false}break}return true};b.prototype.O=function(){var f;var a;var j;var g;var h;var i;if(!n(this)){return false}a=this.A-this._;g=true;a:while(g===true){g=false;this.C=this._;f=e(this,b.a_2,8);if(f===0){this._=this.A-a;break a}this.B=this._;switch(f){case 0:this._=this.A-a;break a;case 1:h=true;b:while(h===true){h=false;j=this.A-this._;i=true;c:while(i===true){i=false;if(!d(this,1,'а')){break c}break b}this._=this.A-j;if(!d(this,1,'я')){this._=this.A-a;break a}}if(!c(this,'')){return false}break;case 2:if(!c(this,'')){return false}break}}return true};b.prototype.r_adjectival=b.prototype.O;function G(a){var g;var f;var k;var h;var i;var j;if(!n(a)){return false}f=a.A-a._;h=true;a:while(h===true){h=false;a.C=a._;g=e(a,b.a_2,8);if(g===0){a._=a.A-f;break a}a.B=a._;switch(g){case 0:a._=a.A-f;break a;case 1:i=true;b:while(i===true){i=false;k=a.A-a._;j=true;c:while(j===true){j=false;if(!d(a,1,'а')){break c}break b}a._=a.A-k;if(!d(a,1,'я')){a._=a.A-f;break a}}if(!c(a,'')){return false}break;case 2:if(!c(a,'')){return false}break}}return true};b.prototype.U=function(){var a;this.C=this._;a=e(this,b.a_3,2);if(a===0){return false}this.B=this._;switch(a){case 0:return false;case 1:if(!c(this,'')){return false}break}return true};b.prototype.r_reflexive=b.prototype.U;function H(a){var d;a.C=a._;d=e(a,b.a_3,2);if(d===0){return false}a.B=a._;switch(d){case 0:return false;case 1:if(!c(a,'')){return false}break}return true};b.prototype.W=function(){var a;var h;var f;var g;this.C=this._;a=e(this,b.a_4,46);if(a===0){return false}this.B=this._;switch(a){case 0:return false;case 1:f=true;a:while(f===true){f=false;h=this.A-this._;g=true;b:while(g===true){g=false;if(!d(this,1,'а')){break b}break a}this._=this.A-h;if(!d(this,1,'я')){return false}}if(!c(this,'')){return false}break;case 2:if(!c(this,'')){return false}break}return true};b.prototype.r_verb=b.prototype.W;function I(a){var f;var i;var g;var h;a.C=a._;f=e(a,b.a_4,46);if(f===0){return false}a.B=a._;switch(f){case 0:return false;case 1:g=true;a:while(g===true){g=false;i=a.A-a._;h=true;b:while(h===true){h=false;if(!d(a,1,'а')){break b}break a}a._=a.A-i;if(!d(a,1,'я')){return false}}if(!c(a,'')){return false}break;case 2:if(!c(a,'')){return false}break}return true};b.prototype.S=function(){var a;this.C=this._;a=e(this,b.a_5,36);if(a===0){return false}this.B=this._;switch(a){case 0:return false;case 1:if(!c(this,'')){return false}break}return true};b.prototype.r_noun=b.prototype.S;function F(a){var d;a.C=a._;d=e(a,b.a_5,36);if(d===0){return false}a.B=a._;switch(d){case 0:return false;case 1:if(!c(a,'')){return false}break}return true};b.prototype.Q=function(){var a;var d;this.C=this._;a=e(this,b.a_6,2);if(a===0){return false}this.B=d=this._;if(!(!(this.I_p2<=d)?false:true)){return false}switch(a){case 0:return false;case 1:if(!c(this,'')){return false}break}return true};b.prototype.r_derivational=b.prototype.Q;function C(a){var d;var f;a.C=a._;d=e(a,b.a_6,2);if(d===0){return false}a.B=f=a._;if(!(!(a.I_p2<=f)?false:true)){return false}switch(d){case 0:return false;case 1:if(!c(a,'')){return false}break}return true};b.prototype.V=function(){var a;this.C=this._;a=e(this,b.a_7,4);if(a===0){return false}this.B=this._;switch(a){case 0:return false;case 1:if(!c(this,'')){return false}this.C=this._;if(!d(this,1,'н')){return false}this.B=this._;if(!d(this,1,'н')){return false}if(!c(this,'')){return false}break;case 2:if(!d(this,1,'н')){return false}if(!c(this,'')){return false}break;case 3:if(!c(this,'')){return false}break}return true};b.prototype.r_tidy_up=b.prototype.V;function y(a){var f;a.C=a._;f=e(a,b.a_7,4);if(f===0){return false}a.B=a._;switch(f){case 0:return false;case 1:if(!c(a,'')){return false}a.C=a._;if(!d(a,1,'н')){return false}a.B=a._;if(!d(a,1,'н')){return false}if(!c(a,'')){return false}break;case 2:if(!d(a,1,'н')){return false}if(!c(a,'')){return false}break;case 3:if(!c(a,'')){return false}break}return true};b.prototype.H=function(){var s;var v;var w;var A;var p;var q;var i;var t;var u;var e;var f;var g;var h;var a;var j;var b;var k;var l;var m;var n;var x;var z;var o;var B;var J;var K;var L;var M;var N;var O;var r;s=this._;e=true;a:while(e===true){e=false;if(!D(this)){break a}}x=this._=s;this.E=x;o=this._=z=this.A;v=z-o;if(o<this.I_pV){return false}K=this._=this.I_pV;w=this.E;this.E=K;M=this._=(L=this.A)-v;A=L-M;f=true;c:while(f===true){f=false;g=true;b:while(g===true){g=false;p=this.A-this._;h=true;a:while(h===true){h=false;if(!E(this)){break a}break b}J=this._=(B=this.A)-p;q=B-J;a=true;a:while(a===true){a=false;if(!H(this)){this._=this.A-q;break a}}j=true;a:while(j===true){j=false;i=this.A-this._;b=true;d:while(b===true){b=false;if(!G(this)){break d}break a}this._=this.A-i;k=true;d:while(k===true){k=false;if(!I(this)){break d}break a}this._=this.A-i;if(!F(this)){break c}}}}O=this._=(N=this.A)-A;t=N-O;l=true;a:while(l===true){l=false;this.C=this._;if(!d(this,1,'и')){this._=this.A-t;break a}this.B=this._;if(!c(this,'')){return false}}u=this.A-this._;m=true;a:while(m===true){m=false;if(!C(this)){break a}}this._=this.A-u;n=true;a:while(n===true){n=false;if(!y(this)){break a}}r=this.E=w;this._=r;return true};b.prototype.stem=b.prototype.H;b.prototype.L=function(a){return a instanceof b};b.prototype.equals=b.prototype.L;b.prototype.M=function(){var c;var a;var b;var d;c='RussianStemmer';a=0;for(b=0;b<c.length;b++){d=c.charCodeAt(b);a=(a<<5)-a+d;a=a&a}return a|0};b.prototype.hashCode=b.prototype.M;b.serialVersionUID=1;f(b,'methodObject',function(){return new b});f(b,'a_0',function(){return[new a('в',-1,1),new a('ив',0,2),new a('ыв',0,2),new a('вши',-1,1),new a('ивши',3,2),new a('ывши',3,2),new a('вшись',-1,1),new a('ившись',6,2),new a('ывшись',6,2)]});f(b,'a_1',function(){return[new a('ее',-1,1),new a('ие',-1,1),new a('ое',-1,1),new a('ые',-1,1),new a('ими',-1,1),new a('ыми',-1,1),new a('ей',-1,1),new a('ий',-1,1),new a('ой',-1,1),new a('ый',-1,1),new a('ем',-1,1),new a('им',-1,1),new a('ом',-1,1),new a('ым',-1,1),new a('его',-1,1),new a('ого',-1,1),new a('ему',-1,1),new a('ому',-1,1),new a('их',-1,1),new a('ых',-1,1),new a('ею',-1,1),new a('ою',-1,1),new a('ую',-1,1),new a('юю',-1,1),new a('ая',-1,1),new a('яя',-1,1)]});f(b,'a_2',function(){return[new a('ем',-1,1),new a('нн',-1,1),new a('вш',-1,1),new a('ивш',2,2),new a('ывш',2,2),new a('щ',-1,1),new a('ющ',5,1),new a('ующ',6,2)]});f(b,'a_3',function(){return[new a('сь',-1,1),new a('ся',-1,1)]});f(b,'a_4',function(){return[new a('ла',-1,1),new a('ила',0,2),new a('ыла',0,2),new a('на',-1,1),new a('ена',3,2),new a('ете',-1,1),new a('ите',-1,2),new a('йте',-1,1),new a('ейте',7,2),new a('уйте',7,2),new a('ли',-1,1),new a('или',10,2),new a('ыли',10,2),new a('й',-1,1),new a('ей',13,2),new a('уй',13,2),new a('л',-1,1),new a('ил',16,2),new a('ыл',16,2),new a('ем',-1,1),new a('им',-1,2),new a('ым',-1,2),new a('н',-1,1),new a('ен',22,2),new a('ло',-1,1),new a('ило',24,2),new a('ыло',24,2),new a('но',-1,1),new a('ено',27,2),new a('нно',27,1),new a('ет',-1,1),new a('ует',30,2),new a('ит',-1,2),new a('ыт',-1,2),new a('ют',-1,1),new a('уют',34,2),new a('ят',-1,2),new a('ны',-1,1),new a('ены',37,2),new a('ть',-1,1),new a('ить',39,2),new a('ыть',39,2),new a('ешь',-1,1),new a('ишь',-1,2),new a('ю',-1,2),new a('ую',44,2)]});f(b,'a_5',function(){return[new a('а',-1,1),new a('ев',-1,1),new a('ов',-1,1),new a('е',-1,1),new a('ие',3,1),new a('ье',3,1),new a('и',-1,1),new a('еи',6,1),new a('ии',6,1),new a('ами',6,1),new a('ями',6,1),new a('иями',10,1),new a('й',-1,1),new a('ей',12,1),new a('ией',13,1),new a('ий',12,1),new a('ой',12,1),new a('ам',-1,1),new a('ем',-1,1),new a('ием',18,1),new a('ом',-1,1),new a('ям',-1,1),new a('иям',21,1),new a('о',-1,1),new a('у',-1,1),new a('ах',-1,1),new a('ях',-1,1),new a('иях',26,1),new a('ы',-1,1),new a('ь',-1,1),new a('ю',-1,1),new a('ию',30,1),new a('ью',30,1),new a('я',-1,1),new a('ия',33,1),new a('ья',33,1)]});f(b,'a_6',function(){return[new a('ост',-1,1),new a('ость',-1,1)]});f(b,'a_7',function(){return[new a('ейше',-1,1),new a('н',-1,2),new a('ейш',-1,1),new a('ь',-1,3)]});f(b,'g_v',function(){return[33,65,8,232]});var o={'src/stemmer.jsx':{Stemmer:m},'src/russian-stemmer.jsx':{RussianStemmer:b}}}(JSX)) +var Stemmer = JSX.require("src/russian-stemmer.jsx").RussianStemmer; +""" + + +class SearchRussian(SearchLanguage): + lang = 'ru' + language_name = 'Russian' + js_stemmer_rawcode = 'russian-stemmer.js' + js_stemmer_code = js_stemmer + stopwords = russian_stopwords + + def init(self, options: Dict) -> None: + self.stemmer = snowballstemmer.stemmer('russian') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/sphinx/search/sv.py b/sphinx/sphinx/search/sv.py new file mode 100644 index 0000000..4af7f78 --- /dev/null +++ b/sphinx/sphinx/search/sv.py @@ -0,0 +1,153 @@ +""" + sphinx.search.sv + ~~~~~~~~~~~~~~~~ + + Swedish search language: includes the JS Swedish stemmer. + + :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + + +swedish_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/swedish/stop.txt +och | and +det | it, this/that +att | to (with infinitive) +i | in, at +en | a +jag | I +hon | she +som | who, that +han | he +på | on +den | it, this/that +med | with +var | where, each +sig | him(self) etc +för | for +så | so (also: seed) +till | to +är | is +men | but +ett | a +om | if; around, about +hade | had +de | they, these/those +av | of +icke | not, no +mig | me +du | you +henne | her +då | then, when +sin | his +nu | now +har | have +inte | inte någon = no one +hans | his +honom | him +skulle | 'sake' +hennes | her +där | there +min | my +man | one (pronoun) +ej | nor +vid | at, by, on (also: vast) +kunde | could +något | some etc +från | from, off +ut | out +när | when +efter | after, behind +upp | up +vi | we +dem | them +vara | be +vad | what +över | over +än | than +dig | you +kan | can +sina | his +här | here +ha | have +mot | towards +alla | all +under | under (also: wonder) +någon | some etc +eller | or (else) +allt | all +mycket | much +sedan | since +ju | why +denna | this/that +själv | myself, yourself etc +detta | this/that +åt | to +utan | without +varit | was +hur | how +ingen | no +mitt | my +ni | you +bli | to be, become +blev | from bli +oss | us +din | thy +dessa | these/those +några | some etc +deras | their +blir | from bli +mina | my +samma | (the) same +vilken | who, that +er | you, your +sådan | such a +vår | our +blivit | from bli +dess | its +inom | within +mellan | between +sådant | such a +varför | why +varje | each +vilka | who, that +ditt | thy +vem | who +vilket | who, that +sitta | his +sådana | such a +vart | each +dina | thy +vars | whose +vårt | our +våra | our +ert | your +era | your +vilkas | whose +''') + +js_stemmer = """ +var JSX={};(function(e){function i(b,e){var a=function(){};a.prototype=e.prototype;var c=new a;for(var d in b){b[d].prototype=c}}function G(c,b){for(var a in b.prototype)if(b.prototype.hasOwnProperty(a))c.prototype[a]=b.prototype[a]}function h(a,b,d){function c(a,b,c){delete a[b];a[b]=c;return c}Object.defineProperty(a,b,{get:function(){return c(a,b,d())},set:function(d){c(a,b,d)},enumerable:true,configurable:true})}function F(a,b,c){return a[b]=a[b]/c|0}var t=parseInt;var u=parseFloat;function E(a){return a!==a}var x=isFinite;var y=encodeURIComponent;var z=decodeURIComponent;var B=encodeURI;var C=decodeURI;var o=Object.prototype.toString;var p=Object.prototype.hasOwnProperty;function f(){}e.require=function(b){var a=n[b];return a!==undefined?a:null};e.profilerIsRunning=function(){return f.getResults!=null};e.getProfileResults=function(){return(f.getResults||function(){return{}})()};e.postProfileResults=function(a,b){if(f.postResults==null)throw new Error('profiler has not been turned on');return f.postResults(a,b)};e.resetProfileResults=function(){if(f.resetResults==null)throw new Error('profiler has not been turned on');return f.resetResults()};e.DEBUG=false;function r(){};i([r],Error);function a(a,b,c){this.G=a.length;this.R=a;this.U=b;this.J=c;this.I=null;this.V=null};i([a],Object);function j(){};i([j],Object);function d(){var a;var b;var c;this.F={};a=this.C='';b=this._=0;c=this.B=a.length;this.A=0;this.D=b;this.E=c};i([d],j);function v(a,b){a.C=b.C;a._=b._;a.B=b.B;a.A=b.A;a.D=b.D;a.E=b.E};function k(b,d,c,e){var a;if(b._>=b.B){return false}a=b.C.charCodeAt(b._);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._++;return true};function l(b,d,c,e){var a;if(b._<=b.A){return false}a=b.C.charCodeAt(b._-1);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._--;return true};function m(a,d,c,e){var b;if(a._>=a.B){return false}b=a.C.charCodeAt(a._);if(b>e||b<c){a._++;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._++;return true}return false};function g(d,m,p){var b;var g;var e;var n;var f;var k;var l;var i;var h;var c;var a;var j;var o;b=0;g=p;e=d._;n=d.A;f=0;k=0;l=false;while(true){i=b+(g-b>>1);h=0;c=f<k?f:k;a=m[i];for(j=a.G-1-c;j>=0;j--){if(e-c===n){h=-1;break}h=d.C.charCodeAt(e-1-c)-a.R.charCodeAt(j);if(h!==0){break}c++}if(h<0){g=i;k=c}else{b=i;f=c}if(g-b<=1){if(b>0){break}if(g===b){break}if(l){break}l=true}}while(true){a=m[b];if(f>=a.G){d._=e-a.G|0;if(a.I==null){return a.J}o=a.I(d);d._=e-a.G|0;if(o){return a.J}}b=a.U;if(b<0){return 0}}return-1};function A(a,b,d,e){var c;c=e.length-(d-b);a.C=a.C.slice(0,b)+e+a.C.slice(d);a.B+=c|0;if(a._>=d){a._+=c|0}else if(a._>b){a._=b}return c|0};function c(a,f){var b;var c;var d;var e;b=false;if((c=a.D)<0||c>(d=a.E)||d>(e=a.B)||e>a.C.length?false:true){A(a,a.D,a.E,f);b=true}return b};d.prototype.H=function(){return false};d.prototype.S=function(b){var a;var c;var d;var e;a=this.F['.'+b];if(a==null){c=this.C=b;d=this._=0;e=this.B=c.length;this.A=0;this.D=d;this.E=e;this.H();a=this.C;this.F['.'+b]=a}return a};d.prototype.stemWord=d.prototype.S;d.prototype.T=function(e){var d;var b;var c;var a;var f;var g;var h;d=[];for(b=0;b<e.length;b++){c=e[b];a=this.F['.'+c];if(a==null){f=this.C=c;g=this._=0;h=this.B=f.length;this.A=0;this.D=g;this.E=h;this.H();a=this.C;this.F['.'+c]=a}d.push(a)}return d};d.prototype.stemWords=d.prototype.T;function b(){d.call(this);this.I_x=0;this.I_p1=0};i([b],d);b.prototype.K=function(a){this.I_x=a.I_x;this.I_p1=a.I_p1;v(this,a)};b.prototype.copy_from=b.prototype.K;b.prototype.P=function(){var g;var d;var a;var e;var c;var f;var i;var j;var l;var h;this.I_p1=j=this.B;g=i=this._;a=i+3|0;if(0>a||a>j){return false}h=this._=a;this.I_x=h;this._=g;a:while(true){d=this._;e=true;b:while(e===true){e=false;if(!k(this,b.g_v,97,246)){break b}this._=d;break a}l=this._=d;if(l>=this.B){return false}this._++}a:while(true){c=true;b:while(c===true){c=false;if(!m(this,b.g_v,97,246)){break b}break a}if(this._>=this.B){return false}this._++}this.I_p1=this._;f=true;a:while(f===true){f=false;if(!(this.I_p1<this.I_x)){break a}this.I_p1=this.I_x}return true};b.prototype.r_mark_regions=b.prototype.P;function D(a){var h;var e;var c;var f;var d;var g;var j;var l;var n;var i;a.I_p1=l=a.B;h=j=a._;c=j+3|0;if(0>c||c>l){return false}i=a._=c;a.I_x=i;a._=h;a:while(true){e=a._;f=true;b:while(f===true){f=false;if(!k(a,b.g_v,97,246)){break b}a._=e;break a}n=a._=e;if(n>=a.B){return false}a._++}a:while(true){d=true;b:while(d===true){d=false;if(!m(a,b.g_v,97,246)){break b}break a}if(a._>=a.B){return false}a._++}a.I_p1=a._;g=true;a:while(g===true){g=false;if(!(a.I_p1<a.I_x)){break a}a.I_p1=a.I_x}return true};b.prototype.O=function(){var a;var e;var d;var f;var h;var i;e=this.B-(f=this._);if(f<this.I_p1){return false}h=this._=this.I_p1;d=this.A;this.A=h;i=this._=this.B-e;this.E=i;a=g(this,b.a_0,37);if(a===0){this.A=d;return false}this.D=this._;this.A=d;switch(a){case 0:return false;case 1:if(!c(this,'')){return false}break;case 2:if(!l(this,b.g_s_ending,98,121)){return false}if(!c(this,'')){return false}break}return true};b.prototype.r_main_suffix=b.prototype.O;function w(a){var d;var f;var e;var h;var i;var j;f=a.B-(h=a._);if(h<a.I_p1){return false}i=a._=a.I_p1;e=a.A;a.A=i;j=a._=a.B-f;a.E=j;d=g(a,b.a_0,37);if(d===0){a.A=e;return false}a.D=a._;a.A=e;switch(d){case 0:return false;case 1:if(!c(a,'')){return false}break;case 2:if(!l(a,b.g_s_ending,98,121)){return false}if(!c(a,'')){return false}break}return true};b.prototype.N=function(){var e;var a;var f;var h;var i;var j;var k;var d;e=this.B-(h=this._);if(h<this.I_p1){return false}i=this._=this.I_p1;a=this.A;this.A=i;k=this._=(j=this.B)-e;f=j-k;if(g(this,b.a_1,7)===0){this.A=a;return false}d=this._=this.B-f;this.E=d;if(d<=this.A){this.A=a;return false}this._--;this.D=this._;if(!c(this,'')){return false}this.A=a;return true};b.prototype.r_consonant_pair=b.prototype.N;function s(a){var f;var d;var h;var i;var j;var k;var l;var e;f=a.B-(i=a._);if(i<a.I_p1){return false}j=a._=a.I_p1;d=a.A;a.A=j;l=a._=(k=a.B)-f;h=k-l;if(g(a,b.a_1,7)===0){a.A=d;return false}e=a._=a.B-h;a.E=e;if(e<=a.A){a.A=d;return false}a._--;a.D=a._;if(!c(a,'')){return false}a.A=d;return true};b.prototype.Q=function(){var d;var e;var a;var f;var h;var i;e=this.B-(f=this._);if(f<this.I_p1){return false}h=this._=this.I_p1;a=this.A;this.A=h;i=this._=this.B-e;this.E=i;d=g(this,b.a_2,5);if(d===0){this.A=a;return false}this.D=this._;switch(d){case 0:this.A=a;return false;case 1:if(!c(this,'')){return false}break;case 2:if(!c(this,'lös')){return false}break;case 3:if(!c(this,'full')){return false}break}this.A=a;return true};b.prototype.r_other_suffix=b.prototype.Q;function q(a){var e;var f;var d;var h;var i;var j;f=a.B-(h=a._);if(h<a.I_p1){return false}i=a._=a.I_p1;d=a.A;a.A=i;j=a._=a.B-f;a.E=j;e=g(a,b.a_2,5);if(e===0){a.A=d;return false}a.D=a._;switch(e){case 0:a.A=d;return false;case 1:if(!c(a,'')){return false}break;case 2:if(!c(a,'lös')){return false}break;case 3:if(!c(a,'full')){return false}break}a.A=d;return true};b.prototype.H=function(){var g;var f;var h;var b;var c;var a;var d;var i;var j;var k;var l;var e;g=this._;b=true;a:while(b===true){b=false;if(!D(this)){break a}}i=this._=g;this.A=i;k=this._=j=this.B;f=j-k;c=true;a:while(c===true){c=false;if(!w(this)){break a}}e=this._=(l=this.B)-f;h=l-e;a=true;a:while(a===true){a=false;if(!s(this)){break a}}this._=this.B-h;d=true;a:while(d===true){d=false;if(!q(this)){break a}}this._=this.A;return true};b.prototype.stem=b.prototype.H;b.prototype.L=function(a){return a instanceof b};b.prototype.equals=b.prototype.L;b.prototype.M=function(){var c;var a;var b;var d;c='SwedishStemmer';a=0;for(b=0;b<c.length;b++){d=c.charCodeAt(b);a=(a<<5)-a+d;a=a&a}return a|0};b.prototype.hashCode=b.prototype.M;b.serialVersionUID=1;h(b,'methodObject',function(){return new b});h(b,'a_0',function(){return[new a('a',-1,1),new a('arna',0,1),new a('erna',0,1),new a('heterna',2,1),new a('orna',0,1),new a('ad',-1,1),new a('e',-1,1),new a('ade',6,1),new a('ande',6,1),new a('arne',6,1),new a('are',6,1),new a('aste',6,1),new a('en',-1,1),new a('anden',12,1),new a('aren',12,1),new a('heten',12,1),new a('ern',-1,1),new a('ar',-1,1),new a('er',-1,1),new a('heter',18,1),new a('or',-1,1),new a('s',-1,2),new a('as',21,1),new a('arnas',22,1),new a('ernas',22,1),new a('ornas',22,1),new a('es',21,1),new a('ades',26,1),new a('andes',26,1),new a('ens',21,1),new a('arens',29,1),new a('hetens',29,1),new a('erns',21,1),new a('at',-1,1),new a('andet',-1,1),new a('het',-1,1),new a('ast',-1,1)]});h(b,'a_1',function(){return[new a('dd',-1,-1),new a('gd',-1,-1),new a('nn',-1,-1),new a('dt',-1,-1),new a('gt',-1,-1),new a('kt',-1,-1),new a('tt',-1,-1)]});h(b,'a_2',function(){return[new a('ig',-1,1),new a('lig',0,1),new a('els',-1,1),new a('fullt',-1,3),new a('löst',-1,2)]});h(b,'g_v',function(){return[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,24,0,32]});h(b,'g_s_ending',function(){return[119,127,149]});var n={'src/stemmer.jsx':{Stemmer:j},'src/swedish-stemmer.jsx':{SwedishStemmer:b}}}(JSX)) +var Stemmer = JSX.require("src/swedish-stemmer.jsx").SwedishStemmer; +""" + + +class SearchSwedish(SearchLanguage): + lang = 'sv' + language_name = 'Swedish' + js_stemmer_rawcode = 'swedish-stemmer.js' + js_stemmer_code = js_stemmer + stopwords = swedish_stopwords + + def init(self, options: Dict) -> None: + self.stemmer = snowballstemmer.stemmer('swedish') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/sphinx/search/tr.py b/sphinx/sphinx/search/tr.py new file mode 100644 index 0000000..8db42f6 --- /dev/null +++ b/sphinx/sphinx/search/tr.py @@ -0,0 +1,35 @@ +""" + sphinx.search.tr + ~~~~~~~~~~~~~~~~ + + Turkish search language: includes the JS Turkish stemmer. + + :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from typing import Dict, Set + +import snowballstemmer + +from sphinx.search import SearchLanguage + + +js_stemmer = """ +var JSX={};(function(q){function r(b,e){var a=function(){};a.prototype=e.prototype;var c=new a;for(var d in b){b[d].prototype=c}}function Q(c,b){for(var a in b.prototype)if(b.prototype.hasOwnProperty(a))c.prototype[a]=b.prototype[a]}function j(a,b,d){function c(a,b,c){delete a[b];a[b]=c;return c}Object.defineProperty(a,b,{get:function(){return c(a,b,d())},set:function(d){c(a,b,d)},enumerable:true,configurable:true})}function R(a,b,c){return a[b]=a[b]/c|0}var M=parseInt;var K=parseFloat;function P(a){return a!==a}var A=isFinite;var G=encodeURIComponent;var F=decodeURIComponent;var E=encodeURI;var D=decodeURI;var C=Object.prototype.toString;var H=Object.prototype.hasOwnProperty;function p(){}q.require=function(b){var a=y[b];return a!==undefined?a:null};q.profilerIsRunning=function(){return p.getResults!=null};q.getProfileResults=function(){return(p.getResults||function(){return{}})()};q.postProfileResults=function(a,b){if(p.postResults==null)throw new Error('profiler has not been turned on');return p.postResults(a,b)};q.resetProfileResults=function(){if(p.resetResults==null)throw new Error('profiler has not been turned on');return p.resetResults()};q.DEBUG=false;function I(){};r([I],Error);function d(a,b,c){this.G=a.length;this.A_=a;this.D_=b;this.J=c;this.I=null;this.E_=null};r([d],Object);function u(){};r([u],Object);function m(){var a;var b;var c;this.F={};a=this.E='';b=this._=0;c=this.A=a.length;this.D=0;this.B=b;this.C=c};r([m],u);function B(a,b){a.E=b.E;a._=b._;a.A=b.A;a.D=b.D;a.B=b.B;a.C=b.C};function v(b,d,c,e){var a;if(b._>=b.A){return false}a=b.E.charCodeAt(b._);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._++;return true};function f(b,d,c,e){var a;if(b._<=b.D){return false}a=b.E.charCodeAt(b._-1);if(a>e||a<c){return false}a-=c;if((d[a>>>3]&1<<(a&7))===0){return false}b._--;return true};function t(a,d,c,e){var b;if(a._<=a.D){return false}b=a.E.charCodeAt(a._-1);if(b>e||b<c){a._--;return true}b-=c;if((d[b>>>3]&1<<(b&7))===0){a._--;return true}return false};function s(a,b,d){var c;if(a.A-a._<b){return false}if(a.E.slice(c=a._,c+b)!==d){return false}a._+=b;return true};function g(a,b,d){var c;if(a._-a.D<b){return false}if(a.E.slice((c=a._)-b,c)!==d){return false}a._-=b;return true};function b(d,m,p){var b;var g;var e;var n;var f;var k;var l;var i;var h;var c;var a;var j;var o;b=0;g=p;e=d._;n=d.D;f=0;k=0;l=false;while(true){i=b+(g-b>>1);h=0;c=f<k?f:k;a=m[i];for(j=a.G-1-c;j>=0;j--){if(e-c===n){h=-1;break}h=d.E.charCodeAt(e-1-c)-a.A_.charCodeAt(j);if(h!==0){break}c++}if(h<0){g=i;k=c}else{b=i;f=c}if(g-b<=1){if(b>0){break}if(g===b){break}if(l){break}l=true}}while(true){a=m[b];if(f>=a.G){d._=e-a.G|0;if(a.I==null){return a.J}o=a.I(d);d._=e-a.G|0;if(o){return a.J}}b=a.D_;if(b<0){return 0}}return-1};function n(a,b,d,e){var c;c=e.length-(d-b);a.E=a.E.slice(0,b)+e+a.E.slice(d);a.A+=c|0;if(a._>=d){a._+=c|0}else if(a._>b){a._=b}return c|0};function e(a,f){var b;var c;var d;var e;b=false;if((c=a.B)<0||c>(d=a.C)||d>(e=a.A)||e>a.E.length?false:true){n(a,a.B,a.C,f);b=true}return b};m.prototype.H=function(){return false};m.prototype.B_=function(b){var a;var c;var d;var e;a=this.F['.'+b];if(a==null){c=this.E=b;d=this._=0;e=this.A=c.length;this.D=0;this.B=d;this.C=e;this.H();a=this.E;this.F['.'+b]=a}return a};m.prototype.stemWord=m.prototype.B_;m.prototype.C_=function(e){var d;var b;var c;var a;var f;var g;var h;d=[];for(b=0;b<e.length;b++){c=e[b];a=this.F['.'+c];if(a==null){f=this.E=c;g=this._=0;h=this.A=f.length;this.D=0;this.B=g;this.C=h;this.H();a=this.E;this.F['.'+c]=a}d.push(a)}return d};m.prototype.stemWords=m.prototype.C_;function a(){m.call(this);this.B_continue_stemming_noun_suffixes=false;this.I_strlen=0};r([a],m);a.prototype.K=function(a){this.B_continue_stemming_noun_suffixes=a.B_continue_stemming_noun_suffixes;this.I_strlen=a.I_strlen;B(this,a)};a.prototype.copy_from=a.prototype.K;a.prototype.O=function(){var E;var q;var b;var e;var h;var i;var j;var k;var l;var m;var n;var o;var p;var c;var r;var s;var t;var u;var d;var v;var w;var x;var y;var z;var A;var B;var C;var D;var G;var H;var I;var J;var K;var L;var M;var N;var F;E=this.A-this._;b:while(true){q=this.A-this._;o=true;a:while(o===true){o=false;if(!f(this,a.g_vowel,97,305)){break a}this._=this.A-q;break b}G=this._=this.A-q;if(G<=this.D){return false}this._--}p=true;a:while(p===true){p=false;b=this.A-this._;c=true;b:while(c===true){c=false;if(!g(this,1,'a')){break b}c:while(true){e=this.A-this._;r=true;d:while(r===true){r=false;if(!f(this,a.g_vowel1,97,305)){break d}this._=this.A-e;break c}H=this._=this.A-e;if(H<=this.D){break b}this._--}break a}this._=this.A-b;s=true;b:while(s===true){s=false;if(!g(this,1,'e')){break b}c:while(true){h=this.A-this._;t=true;d:while(t===true){t=false;if(!f(this,a.g_vowel2,101,252)){break d}this._=this.A-h;break c}I=this._=this.A-h;if(I<=this.D){break b}this._--}break a}this._=this.A-b;u=true;b:while(u===true){u=false;if(!g(this,1,'ı')){break b}c:while(true){i=this.A-this._;d=true;d:while(d===true){d=false;if(!f(this,a.g_vowel3,97,305)){break d}this._=this.A-i;break c}J=this._=this.A-i;if(J<=this.D){break b}this._--}break a}this._=this.A-b;v=true;b:while(v===true){v=false;if(!g(this,1,'i')){break b}c:while(true){j=this.A-this._;w=true;d:while(w===true){w=false;if(!f(this,a.g_vowel4,101,105)){break d}this._=this.A-j;break c}K=this._=this.A-j;if(K<=this.D){break b}this._--}break a}this._=this.A-b;x=true;b:while(x===true){x=false;if(!g(this,1,'o')){break b}c:while(true){k=this.A-this._;y=true;d:while(y===true){y=false;if(!f(this,a.g_vowel5,111,117)){break d}this._=this.A-k;break c}L=this._=this.A-k;if(L<=this.D){break b}this._--}break a}this._=this.A-b;z=true;b:while(z===true){z=false;if(!g(this,1,'ö')){break b}c:while(true){l=this.A-this._;A=true;d:while(A===true){A=false;if(!f(this,a.g_vowel6,246,252)){break d}this._=this.A-l;break c}M=this._=this.A-l;if(M<=this.D){break b}this._--}break a}this._=this.A-b;B=true;b:while(B===true){B=false;if(!g(this,1,'u')){break b}c:while(true){m=this.A-this._;C=true;d:while(C===true){C=false;if(!f(this,a.g_vowel5,111,117)){break d}this._=this.A-m;break c}N=this._=this.A-m;if(N<=this.D){break b}this._--}break a}this._=this.A-b;if(!g(this,1,'ü')){return false}b:while(true){n=this.A-this._;D=true;c:while(D===true){D=false;if(!f(this,a.g_vowel6,246,252)){break c}this._=this.A-n;break b}F=this._=this.A-n;if(F<=this.D){return false}this._--}}this._=this.A-E;return true};a.prototype.r_check_vowel_harmony=a.prototype.O;function c(b){var F;var r;var c;var e;var h;var i;var j;var k;var l;var m;var n;var o;var p;var q;var d;var s;var t;var u;var v;var w;var x;var y;var z;var A;var B;var C;var D;var E;var H;var I;var J;var K;var L;var M;var N;var O;var G;F=b.A-b._;b:while(true){r=b.A-b._;o=true;a:while(o===true){o=false;if(!f(b,a.g_vowel,97,305)){break a}b._=b.A-r;break b}H=b._=b.A-r;if(H<=b.D){return false}b._--}p=true;a:while(p===true){p=false;c=b.A-b._;q=true;b:while(q===true){q=false;if(!g(b,1,'a')){break b}c:while(true){e=b.A-b._;d=true;d:while(d===true){d=false;if(!f(b,a.g_vowel1,97,305)){break d}b._=b.A-e;break c}I=b._=b.A-e;if(I<=b.D){break b}b._--}break a}b._=b.A-c;s=true;b:while(s===true){s=false;if(!g(b,1,'e')){break b}c:while(true){h=b.A-b._;t=true;d:while(t===true){t=false;if(!f(b,a.g_vowel2,101,252)){break d}b._=b.A-h;break c}J=b._=b.A-h;if(J<=b.D){break b}b._--}break a}b._=b.A-c;u=true;b:while(u===true){u=false;if(!g(b,1,'ı')){break b}c:while(true){i=b.A-b._;v=true;d:while(v===true){v=false;if(!f(b,a.g_vowel3,97,305)){break d}b._=b.A-i;break c}K=b._=b.A-i;if(K<=b.D){break b}b._--}break a}b._=b.A-c;w=true;b:while(w===true){w=false;if(!g(b,1,'i')){break b}c:while(true){j=b.A-b._;x=true;d:while(x===true){x=false;if(!f(b,a.g_vowel4,101,105)){break d}b._=b.A-j;break c}L=b._=b.A-j;if(L<=b.D){break b}b._--}break a}b._=b.A-c;y=true;b:while(y===true){y=false;if(!g(b,1,'o')){break b}c:while(true){k=b.A-b._;z=true;d:while(z===true){z=false;if(!f(b,a.g_vowel5,111,117)){break d}b._=b.A-k;break c}M=b._=b.A-k;if(M<=b.D){break b}b._--}break a}b._=b.A-c;A=true;b:while(A===true){A=false;if(!g(b,1,'ö')){break b}c:while(true){l=b.A-b._;B=true;d:while(B===true){B=false;if(!f(b,a.g_vowel6,246,252)){break d}b._=b.A-l;break c}N=b._=b.A-l;if(N<=b.D){break b}b._--}break a}b._=b.A-c;C=true;b:while(C===true){C=false;if(!g(b,1,'u')){break b}c:while(true){m=b.A-b._;D=true;d:while(D===true){D=false;if(!f(b,a.g_vowel5,111,117)){break d}b._=b.A-m;break c}O=b._=b.A-m;if(O<=b.D){break b}b._--}break a}b._=b.A-c;if(!g(b,1,'ü')){return false}b:while(true){n=b.A-b._;E=true;c:while(E===true){E=false;if(!f(b,a.g_vowel6,246,252)){break c}b._=b.A-n;break b}G=b._=b.A-n;if(G<=b.D){return false}b._--}}b._=b.A-F;return true};a.prototype.j=function(){var k;var h;var l;var i;var m;var j;var b;var e;var d;var n;var o;var p;var q;var c;b=true;b:while(b===true){b=false;k=this.A-this._;e=true;a:while(e===true){e=false;h=this.A-this._;if(!g(this,1,'n')){break a}n=this._=this.A-h;if(n<=this.D){break a}this._--;l=this.A-this._;if(!f(this,a.g_vowel,97,305)){break a}this._=this.A-l;break b}p=this._=(o=this.A)-k;i=o-p;d=true;a:while(d===true){d=false;m=this.A-this._;if(!g(this,1,'n')){break a}this._=this.A-m;return false}c=this._=(q=this.A)-i;j=q-c;if(c<=this.D){return false}this._--;if(!f(this,a.g_vowel,97,305)){return false}this._=this.A-j}return true};a.prototype.r_mark_suffix_with_optional_n_consonant=a.prototype.j;function o(b){var i;var m;var l;var j;var n;var k;var c;var e;var d;var o;var p;var q;var r;var h;c=true;b:while(c===true){c=false;i=b.A-b._;e=true;a:while(e===true){e=false;m=b.A-b._;if(!g(b,1,'n')){break a}o=b._=b.A-m;if(o<=b.D){break a}b._--;l=b.A-b._;if(!f(b,a.g_vowel,97,305)){break a}b._=b.A-l;break b}q=b._=(p=b.A)-i;j=p-q;d=true;a:while(d===true){d=false;n=b.A-b._;if(!g(b,1,'n')){break a}b._=b.A-n;return false}h=b._=(r=b.A)-j;k=r-h;if(h<=b.D){return false}b._--;if(!f(b,a.g_vowel,97,305)){return false}b._=b.A-k}return true};a.prototype.k=function(){var k;var h;var l;var i;var m;var j;var b;var e;var d;var n;var o;var p;var q;var c;b=true;b:while(b===true){b=false;k=this.A-this._;e=true;a:while(e===true){e=false;h=this.A-this._;if(!g(this,1,'s')){break a}n=this._=this.A-h;if(n<=this.D){break a}this._--;l=this.A-this._;if(!f(this,a.g_vowel,97,305)){break a}this._=this.A-l;break b}p=this._=(o=this.A)-k;i=o-p;d=true;a:while(d===true){d=false;m=this.A-this._;if(!g(this,1,'s')){break a}this._=this.A-m;return false}c=this._=(q=this.A)-i;j=q-c;if(c<=this.D){return false}this._--;if(!f(this,a.g_vowel,97,305)){return false}this._=this.A-j}return true};a.prototype.r_mark_suffix_with_optional_s_consonant=a.prototype.k;function l(b){var i;var m;var l;var j;var n;var k;var c;var e;var d;var o;var p;var q;var r;var h;c=true;b:while(c===true){c=false;i=b.A-b._;e=true;a:while(e===true){e=false;m=b.A-b._;if(!g(b,1,'s')){break a}o=b._=b.A-m;if(o<=b.D){break a}b._--;l=b.A-b._;if(!f(b,a.g_vowel,97,305)){break a}b._=b.A-l;break b}q=b._=(p=b.A)-i;j=p-q;d=true;a:while(d===true){d=false;n=b.A-b._;if(!g(b,1,'s')){break a}b._=b.A-n;return false}h=b._=(r=b.A)-j;k=r-h;if(h<=b.D){return false}b._--;if(!f(b,a.g_vowel,97,305)){return false}b._=b.A-k}return true};a.prototype.l=function(){var k;var h;var l;var i;var m;var j;var b;var e;var d;var n;var o;var p;var q;var c;b=true;b:while(b===true){b=false;k=this.A-this._;e=true;a:while(e===true){e=false;h=this.A-this._;if(!g(this,1,'y')){break a}n=this._=this.A-h;if(n<=this.D){break a}this._--;l=this.A-this._;if(!f(this,a.g_vowel,97,305)){break a}this._=this.A-l;break b}p=this._=(o=this.A)-k;i=o-p;d=true;a:while(d===true){d=false;m=this.A-this._;if(!g(this,1,'y')){break a}this._=this.A-m;return false}c=this._=(q=this.A)-i;j=q-c;if(c<=this.D){return false}this._--;if(!f(this,a.g_vowel,97,305)){return false}this._=this.A-j}return true};a.prototype.r_mark_suffix_with_optional_y_consonant=a.prototype.l;function h(b){var i;var m;var l;var j;var n;var k;var c;var e;var d;var o;var p;var q;var r;var h;c=true;b:while(c===true){c=false;i=b.A-b._;e=true;a:while(e===true){e=false;m=b.A-b._;if(!g(b,1,'y')){break a}o=b._=b.A-m;if(o<=b.D){break a}b._--;l=b.A-b._;if(!f(b,a.g_vowel,97,305)){break a}b._=b.A-l;break b}q=b._=(p=b.A)-i;j=p-q;d=true;a:while(d===true){d=false;n=b.A-b._;if(!g(b,1,'y')){break a}b._=b.A-n;return false}h=b._=(r=b.A)-j;k=r-h;if(h<=b.D){return false}b._--;if(!f(b,a.g_vowel,97,305)){return false}b._=b.A-k}return true};a.prototype.i=function(){var j;var g;var k;var h;var l;var i;var b;var e;var d;var m;var n;var o;var p;var c;b=true;b:while(b===true){b=false;j=this.A-this._;e=true;a:while(e===true){e=false;g=this.A-this._;if(!f(this,a.g_U,105,305)){break a}m=this._=this.A-g;if(m<=this.D){break a}this._--;k=this.A-this._;if(!t(this,a.g_vowel,97,305)){break a}this._=this.A-k;break b}o=this._=(n=this.A)-j;h=n-o;d=true;a:while(d===true){d=false;l=this.A-this._;if(!f(this,a.g_U,105,305)){break a}this._=this.A-l;return false}c=this._=(p=this.A)-h;i=p-c;if(c<=this.D){return false}this._--;if(!t(this,a.g_vowel,97,305)){return false}this._=this.A-i}return true};a.prototype.r_mark_suffix_with_optional_U_vowel=a.prototype.i;function k(b){var h;var l;var k;var i;var m;var j;var c;var e;var d;var n;var o;var p;var q;var g;c=true;b:while(c===true){c=false;h=b.A-b._;e=true;a:while(e===true){e=false;l=b.A-b._;if(!f(b,a.g_U,105,305)){break a}n=b._=b.A-l;if(n<=b.D){break a}b._--;k=b.A-b._;if(!t(b,a.g_vowel,97,305)){break a}b._=b.A-k;break b}p=b._=(o=b.A)-h;i=o-p;d=true;a:while(d===true){d=false;m=b.A-b._;if(!f(b,a.g_U,105,305)){break a}b._=b.A-m;return false}g=b._=(q=b.A)-i;j=q-g;if(g<=b.D){return false}b._--;if(!t(b,a.g_vowel,97,305)){return false}b._=b.A-j}return true};a.prototype.e=function(){return b(this,a.a_0,10)===0?false:!k(this)?false:true};a.prototype.r_mark_possessives=a.prototype.e;a.prototype.f=function(){return!c(this)?false:!f(this,a.g_U,105,305)?false:!l(this)?false:true};a.prototype.r_mark_sU=a.prototype.f;a.prototype.W=function(){return b(this,a.a_1,2)===0?false:true};a.prototype.r_mark_lArI=a.prototype.W;a.prototype.o=function(){return!c(this)?false:!f(this,a.g_U,105,305)?false:!h(this)?false:true};a.prototype.r_mark_yU=a.prototype.o;a.prototype.Y=function(){return!c(this)?false:b(this,a.a_2,4)===0?false:true};a.prototype.r_mark_nU=a.prototype.Y;a.prototype.Z=function(){return!c(this)?false:b(this,a.a_3,4)===0?false:!o(this)?false:true};a.prototype.r_mark_nUn=a.prototype.Z;a.prototype.m=function(){return!c(this)?false:b(this,a.a_4,2)===0?false:!h(this)?false:true};a.prototype.r_mark_yA=a.prototype.m;a.prototype.X=function(){return!c(this)?false:b(this,a.a_5,2)===0?false:true};a.prototype.r_mark_nA=a.prototype.X;a.prototype.Q=function(){return!c(this)?false:b(this,a.a_6,4)===0?false:true};a.prototype.r_mark_DA=a.prototype.Q;a.prototype.c=function(){return!c(this)?false:b(this,a.a_7,2)===0?false:true};a.prototype.r_mark_ndA=a.prototype.c;a.prototype.R=function(){return!c(this)?false:b(this,a.a_8,4)===0?false:true};a.prototype.r_mark_DAn=a.prototype.R;a.prototype.d=function(){return!c(this)?false:b(this,a.a_9,2)===0?false:true};a.prototype.r_mark_ndAn=a.prototype.d;a.prototype.s=function(){return!c(this)?false:b(this,a.a_10,2)===0?false:!h(this)?false:true};a.prototype.r_mark_ylA=a.prototype.s;a.prototype.U=function(){return!g(this,2,'ki')?false:true};a.prototype.r_mark_ki=a.prototype.U;a.prototype.b=function(){return!c(this)?false:b(this,a.a_11,2)===0?false:!o(this)?false:true};a.prototype.r_mark_ncA=a.prototype.b;a.prototype.p=function(){return!c(this)?false:b(this,a.a_12,4)===0?false:!h(this)?false:true};a.prototype.r_mark_yUm=a.prototype.p;a.prototype.g=function(){return!c(this)?false:b(this,a.a_13,4)===0?false:true};a.prototype.r_mark_sUn=a.prototype.g;a.prototype.q=function(){return!c(this)?false:b(this,a.a_14,4)===0?false:!h(this)?false:true};a.prototype.r_mark_yUz=a.prototype.q;a.prototype.h=function(){return b(this,a.a_15,4)===0?false:true};a.prototype.r_mark_sUnUz=a.prototype.h;a.prototype.V=function(){return!c(this)?false:b(this,a.a_16,2)===0?false:true};a.prototype.r_mark_lAr=a.prototype.V;a.prototype.a=function(){return!c(this)?false:b(this,a.a_17,4)===0?false:true};a.prototype.r_mark_nUz=a.prototype.a;a.prototype.S=function(){return!c(this)?false:b(this,a.a_18,8)===0?false:true};a.prototype.r_mark_DUr=a.prototype.S;a.prototype.T=function(){return b(this,a.a_19,2)===0?false:true};a.prototype.r_mark_cAsInA=a.prototype.T;a.prototype.n=function(){return!c(this)?false:b(this,a.a_20,32)===0?false:!h(this)?false:true};a.prototype.r_mark_yDU=a.prototype.n;a.prototype.u=function(){return b(this,a.a_21,8)===0?false:!h(this)?false:true};a.prototype.r_mark_ysA=a.prototype.u;a.prototype.t=function(){return!c(this)?false:b(this,a.a_22,4)===0?false:!h(this)?false:true};a.prototype.r_mark_ymUs_=a.prototype.t;a.prototype.r=function(){return!g(this,3,'ken')?false:!h(this)?false:true};a.prototype.r_mark_yken=a.prototype.r;a.prototype.y=function(){var i;var j;var d;var Y;var k;var X;var l;var W;var V;var f;var r;var s;var t;var u;var v;var w;var x;var y;var z;var A;var B;var C;var m;var E;var F;var G;var H;var I;var J;var K;var L;var M;var N;var O;var P;var Q;var R;var S;var T;var U;var p;var o;var D;var n;var q;this.C=this._;this.B_continue_stemming_noun_suffixes=true;r=true;a:while(r===true){r=false;i=this.A-this._;s=true;d:while(s===true){s=false;t=true;b:while(t===true){t=false;j=this.A-this._;u=true;c:while(u===true){u=false;if(!(!c(this)?false:b(this,a.a_22,4)===0?false:!h(this)?false:true)){break c}break b}this._=this.A-j;v=true;c:while(v===true){v=false;if(!(!c(this)?false:b(this,a.a_20,32)===0?false:!h(this)?false:true)){break c}break b}this._=this.A-j;w=true;c:while(w===true){w=false;if(!(b(this,a.a_21,8)===0?false:!h(this)?false:true)){break c}break b}this._=this.A-j;if(!(!g(this,3,'ken')?false:!h(this)?false:true)){break d}}break a}this._=this.A-i;x=true;c:while(x===true){x=false;if(!(b(this,a.a_19,2)===0?false:true)){break c}y=true;b:while(y===true){y=false;d=this.A-this._;z=true;d:while(z===true){z=false;if(!(b(this,a.a_15,4)===0?false:true)){break d}break b}this._=this.A-d;A=true;d:while(A===true){A=false;if(!(!c(this)?false:b(this,a.a_16,2)===0?false:true)){break d}break b}this._=this.A-d;B=true;d:while(B===true){B=false;if(!(!c(this)?false:b(this,a.a_12,4)===0?false:!h(this)?false:true)){break d}break b}this._=this.A-d;C=true;d:while(C===true){C=false;if(!(!c(this)?false:b(this,a.a_13,4)===0?false:true)){break d}break b}this._=this.A-d;m=true;d:while(m===true){m=false;if(!(!c(this)?false:b(this,a.a_14,4)===0?false:!h(this)?false:true)){break d}break b}this._=this.A-d}if(!(!c(this)?false:b(this,a.a_22,4)===0?false:!h(this)?false:true)){break c}break a}this._=this.A-i;E=true;c:while(E===true){E=false;if(!(!c(this)?false:b(this,a.a_16,2)===0?false:true)){break c}this.B=this._;if(!e(this,'')){return false}Y=this.A-this._;F=true;d:while(F===true){F=false;this.C=this._;G=true;b:while(G===true){G=false;k=this.A-this._;H=true;e:while(H===true){H=false;if(!(!c(this)?false:b(this,a.a_18,8)===0?false:true)){break e}break b}this._=this.A-k;I=true;e:while(I===true){I=false;if(!(!c(this)?false:b(this,a.a_20,32)===0?false:!h(this)?false:true)){break e}break b}this._=this.A-k;J=true;e:while(J===true){J=false;if(!(b(this,a.a_21,8)===0?false:!h(this)?false:true)){break e}break b}this._=this.A-k;if(!(!c(this)?false:b(this,a.a_22,4)===0?false:!h(this)?false:true)){this._=this.A-Y;break d}}}this.B_continue_stemming_noun_suffixes=false;break a}this._=this.A-i;K=true;b:while(K===true){K=false;if(!(!c(this)?false:b(this,a.a_17,4)===0?false:true)){break b}L=true;c:while(L===true){L=false;X=this.A-this._;M=true;d:while(M===true){M=false;if(!(!c(this)?false:b(this,a.a_20,32)===0?false:!h(this)?false:true)){break d}break c}this._=this.A-X;if(!(b(this,a.a_21,8)===0?false:!h(this)?false:true)){break b}}break a}this._=this.A-i;N=true;c:while(N===true){N=false;O=true;b:while(O===true){O=false;l=this.A-this._;P=true;d:while(P===true){P=false;if(!(b(this,a.a_15,4)===0?false:true)){break d}break b}this._=this.A-l;Q=true;d:while(Q===true){Q=false;if(!(!c(this)?false:b(this,a.a_14,4)===0?false:!h(this)?false:true)){break d}break b}this._=this.A-l;R=true;d:while(R===true){R=false;if(!(!c(this)?false:b(this,a.a_13,4)===0?false:true)){break d}break b}this._=this.A-l;if(!(!c(this)?false:b(this,a.a_12,4)===0?false:!h(this)?false:true)){break c}}this.B=this._;if(!e(this,'')){return false}W=this.A-this._;S=true;b:while(S===true){S=false;this.C=this._;if(!(!c(this)?false:b(this,a.a_22,4)===0?false:!h(this)?false:true)){this._=this.A-W;break b}}break a}this._=this.A-i;if(!(!c(this)?false:b(this,a.a_18,8)===0?false:true)){return false}this.B=this._;if(!e(this,'')){return false}V=this.A-this._;T=true;d:while(T===true){T=false;this.C=this._;U=true;b:while(U===true){U=false;f=this.A-this._;p=true;c:while(p===true){p=false;if(!(b(this,a.a_15,4)===0?false:true)){break c}break b}this._=this.A-f;o=true;c:while(o===true){o=false;if(!(!c(this)?false:b(this,a.a_16,2)===0?false:true)){break c}break b}this._=this.A-f;D=true;c:while(D===true){D=false;if(!(!c(this)?false:b(this,a.a_12,4)===0?false:!h(this)?false:true)){break c}break b}this._=this.A-f;n=true;c:while(n===true){n=false;if(!(!c(this)?false:b(this,a.a_13,4)===0?false:true)){break c}break b}this._=this.A-f;q=true;c:while(q===true){q=false;if(!(!c(this)?false:b(this,a.a_14,4)===0?false:!h(this)?false:true)){break c}break b}this._=this.A-f}if(!(!c(this)?false:b(this,a.a_22,4)===0?false:!h(this)?false:true)){this._=this.A-V;break d}}}this.B=this._;return!e(this,'')?false:true};a.prototype.r_stem_nominal_verb_suffixes=a.prototype.y;function J(d){var f;var k;var i;var Z;var l;var Y;var m;var X;var W;var j;var s;var t;var u;var v;var w;var x;var y;var z;var A;var B;var C;var n;var E;var F;var G;var H;var I;var J;var K;var L;var M;var N;var O;var P;var Q;var R;var S;var T;var U;var V;var q;var p;var D;var o;var r;d.C=d._;d.B_continue_stemming_noun_suffixes=true;s=true;a:while(s===true){s=false;f=d.A-d._;t=true;d:while(t===true){t=false;u=true;b:while(u===true){u=false;k=d.A-d._;v=true;c:while(v===true){v=false;if(!(!c(d)?false:b(d,a.a_22,4)===0?false:!h(d)?false:true)){break c}break b}d._=d.A-k;w=true;c:while(w===true){w=false;if(!(!c(d)?false:b(d,a.a_20,32)===0?false:!h(d)?false:true)){break c}break b}d._=d.A-k;x=true;c:while(x===true){x=false;if(!(b(d,a.a_21,8)===0?false:!h(d)?false:true)){break c}break b}d._=d.A-k;if(!(!g(d,3,'ken')?false:!h(d)?false:true)){break d}}break a}d._=d.A-f;y=true;c:while(y===true){y=false;if(!(b(d,a.a_19,2)===0?false:true)){break c}z=true;b:while(z===true){z=false;i=d.A-d._;A=true;d:while(A===true){A=false;if(!(b(d,a.a_15,4)===0?false:true)){break d}break b}d._=d.A-i;B=true;d:while(B===true){B=false;if(!(!c(d)?false:b(d,a.a_16,2)===0?false:true)){break d}break b}d._=d.A-i;C=true;d:while(C===true){C=false;if(!(!c(d)?false:b(d,a.a_12,4)===0?false:!h(d)?false:true)){break d}break b}d._=d.A-i;n=true;d:while(n===true){n=false;if(!(!c(d)?false:b(d,a.a_13,4)===0?false:true)){break d}break b}d._=d.A-i;E=true;d:while(E===true){E=false;if(!(!c(d)?false:b(d,a.a_14,4)===0?false:!h(d)?false:true)){break d}break b}d._=d.A-i}if(!(!c(d)?false:b(d,a.a_22,4)===0?false:!h(d)?false:true)){break c}break a}d._=d.A-f;F=true;c:while(F===true){F=false;if(!(!c(d)?false:b(d,a.a_16,2)===0?false:true)){break c}d.B=d._;if(!e(d,'')){return false}Z=d.A-d._;G=true;d:while(G===true){G=false;d.C=d._;H=true;b:while(H===true){H=false;l=d.A-d._;I=true;e:while(I===true){I=false;if(!(!c(d)?false:b(d,a.a_18,8)===0?false:true)){break e}break b}d._=d.A-l;J=true;e:while(J===true){J=false;if(!(!c(d)?false:b(d,a.a_20,32)===0?false:!h(d)?false:true)){break e}break b}d._=d.A-l;K=true;e:while(K===true){K=false;if(!(b(d,a.a_21,8)===0?false:!h(d)?false:true)){break e}break b}d._=d.A-l;if(!(!c(d)?false:b(d,a.a_22,4)===0?false:!h(d)?false:true)){d._=d.A-Z;break d}}}d.B_continue_stemming_noun_suffixes=false;break a}d._=d.A-f;L=true;b:while(L===true){L=false;if(!(!c(d)?false:b(d,a.a_17,4)===0?false:true)){break b}M=true;c:while(M===true){M=false;Y=d.A-d._;N=true;d:while(N===true){N=false;if(!(!c(d)?false:b(d,a.a_20,32)===0?false:!h(d)?false:true)){break d}break c}d._=d.A-Y;if(!(b(d,a.a_21,8)===0?false:!h(d)?false:true)){break b}}break a}d._=d.A-f;O=true;c:while(O===true){O=false;P=true;b:while(P===true){P=false;m=d.A-d._;Q=true;d:while(Q===true){Q=false;if(!(b(d,a.a_15,4)===0?false:true)){break d}break b}d._=d.A-m;R=true;d:while(R===true){R=false;if(!(!c(d)?false:b(d,a.a_14,4)===0?false:!h(d)?false:true)){break d}break b}d._=d.A-m;S=true;d:while(S===true){S=false;if(!(!c(d)?false:b(d,a.a_13,4)===0?false:true)){break d}break b}d._=d.A-m;if(!(!c(d)?false:b(d,a.a_12,4)===0?false:!h(d)?false:true)){break c}}d.B=d._;if(!e(d,'')){return false}X=d.A-d._;T=true;b:while(T===true){T=false;d.C=d._;if(!(!c(d)?false:b(d,a.a_22,4)===0?false:!h(d)?false:true)){d._=d.A-X;break b}}break a}d._=d.A-f;if(!(!c(d)?false:b(d,a.a_18,8)===0?false:true)){return false}d.B=d._;if(!e(d,'')){return false}W=d.A-d._;U=true;d:while(U===true){U=false;d.C=d._;V=true;b:while(V===true){V=false;j=d.A-d._;q=true;c:while(q===true){q=false;if(!(b(d,a.a_15,4)===0?false:true)){break c}break b}d._=d.A-j;p=true;c:while(p===true){p=false;if(!(!c(d)?false:b(d,a.a_16,2)===0?false:true)){break c}break b}d._=d.A-j;D=true;c:while(D===true){D=false;if(!(!c(d)?false:b(d,a.a_12,4)===0?false:!h(d)?false:true)){break c}break b}d._=d.A-j;o=true;c:while(o===true){o=false;if(!(!c(d)?false:b(d,a.a_13,4)===0?false:true)){break c}break b}d._=d.A-j;r=true;c:while(r===true){r=false;if(!(!c(d)?false:b(d,a.a_14,4)===0?false:!h(d)?false:true)){break c}break b}d._=d.A-j}if(!(!c(d)?false:b(d,a.a_22,4)===0?false:!h(d)?false:true)){d._=d.A-W;break d}}}d.B=d._;return!e(d,'')?false:true};a.prototype.__=function(){var z;var N;var M;var L;var p;var K;var r;var J;var t;var u;var v;var w;var x;var y;var d;var A;var B;var C;var D;var E;var F;var G;var H;var I;var s;var q;var n;var m;var j;var h;this.C=this._;if(!(!g(this,2,'ki')?false:true)){return false}w=true;b:while(w===true){w=false;z=this.A-this._;x=true;c:while(x===true){x=false;if(!(!c(this)?false:b(this,a.a_6,4)===0?false:true)){break c}this.B=this._;if(!e(this,'')){return false}N=this.A-this._;y=true;f:while(y===true){y=false;this.C=this._;d=true;e:while(d===true){d=false;M=this.A-this._;A=true;d:while(A===true){A=false;if(!(!c(this)?false:b(this,a.a_16,2)===0?false:true)){break d}this.B=this._;if(!e(this,'')){return false}L=this.A-this._;B=true;a:while(B===true){B=false;if(!i(this)){this._=this.A-L;break a}}break e}this._=this.A-M;if(!(b(this,a.a_0,10)===0?false:!k(this)?false:true)){this._=this.A-N;break f}this.B=this._;if(!e(this,'')){return false}p=this.A-this._;C=true;a:while(C===true){C=false;this.C=this._;if(!(!c(this)?false:b(this,a.a_16,2)===0?false:true)){this._=this.A-p;break a}this.B=this._;if(!e(this,'')){return false}if(!i(this)){this._=this.A-p;break a}}}}break b}this._=this.A-z;D=true;d:while(D===true){D=false;if(!(!c(this)?false:b(this,a.a_3,4)===0?false:!o(this)?false:true)){break d}this.B=this._;if(!e(this,'')){return false}K=this.A-this._;E=true;e:while(E===true){E=false;this.C=this._;F=true;a:while(F===true){F=false;r=this.A-this._;G=true;c:while(G===true){G=false;if(!(b(this,a.a_1,2)===0?false:true)){break c}this.B=this._;if(!e(this,'')){return false}break a}this._=this.A-r;H=true;f:while(H===true){H=false;this.C=this._;I=true;g:while(I===true){I=false;J=this.A-this._;s=true;c:while(s===true){s=false;if(!(b(this,a.a_0,10)===0?false:!k(this)?false:true)){break c}break g}this._=this.A-J;if(!(!c(this)?false:!f(this,a.g_U,105,305)?false:!l(this)?false:true)){break f}}this.B=this._;if(!e(this,'')){return false}t=this.A-this._;q=true;c:while(q===true){q=false;this.C=this._;if(!(!c(this)?false:b(this,a.a_16,2)===0?false:true)){this._=this.A-t;break c}this.B=this._;if(!e(this,'')){return false}if(!i(this)){this._=this.A-t;break c}}break a}this._=this.A-r;if(!i(this)){this._=this.A-K;break e}}}break b}this._=this.A-z;if(!(!c(this)?false:b(this,a.a_7,2)===0?false:true)){return false}n=true;a:while(n===true){n=false;u=this.A-this._;m=true;c:while(m===true){m=false;if(!(b(this,a.a_1,2)===0?false:true)){break c}this.B=this._;if(!e(this,'')){return false}break a}this._=this.A-u;j=true;d:while(j===true){j=false;if(!(!c(this)?false:!f(this,a.g_U,105,305)?false:!l(this)?false:true)){break d}this.B=this._;if(!e(this,'')){return false}v=this.A-this._;h=true;c:while(h===true){h=false;this.C=this._;if(!(!c(this)?false:b(this,a.a_16,2)===0?false:true)){this._=this.A-v;break c}this.B=this._;if(!e(this,'')){return false}if(!i(this)){this._=this.A-v;break c}}break a}this._=this.A-u;if(!i(this)){return false}}}return true};a.prototype.r_stem_suffix_chain_before_ki=a.prototype.__;function i(d){var j;var O;var N;var M;var q;var L;var s;var K;var u;var v;var w;var x;var y;var z;var h;var B;var C;var D;var E;var F;var G;var H;var I;var J;var t;var r;var p;var n;var m;var A;d.C=d._;if(!(!g(d,2,'ki')?false:true)){return false}x=true;b:while(x===true){x=false;j=d.A-d._;y=true;c:while(y===true){y=false;if(!(!c(d)?false:b(d,a.a_6,4)===0?false:true)){break c}d.B=d._;if(!e(d,'')){return false}O=d.A-d._;z=true;f:while(z===true){z=false;d.C=d._;h=true;e:while(h===true){h=false;N=d.A-d._;B=true;d:while(B===true){B=false;if(!(!c(d)?false:b(d,a.a_16,2)===0?false:true)){break d}d.B=d._;if(!e(d,'')){return false}M=d.A-d._;C=true;a:while(C===true){C=false;if(!i(d)){d._=d.A-M;break a}}break e}d._=d.A-N;if(!(b(d,a.a_0,10)===0?false:!k(d)?false:true)){d._=d.A-O;break f}d.B=d._;if(!e(d,'')){return false}q=d.A-d._;D=true;a:while(D===true){D=false;d.C=d._;if(!(!c(d)?false:b(d,a.a_16,2)===0?false:true)){d._=d.A-q;break a}d.B=d._;if(!e(d,'')){return false}if(!i(d)){d._=d.A-q;break a}}}}break b}d._=d.A-j;E=true;d:while(E===true){E=false;if(!(!c(d)?false:b(d,a.a_3,4)===0?false:!o(d)?false:true)){break d}d.B=d._;if(!e(d,'')){return false}L=d.A-d._;F=true;e:while(F===true){F=false;d.C=d._;G=true;a:while(G===true){G=false;s=d.A-d._;H=true;c:while(H===true){H=false;if(!(b(d,a.a_1,2)===0?false:true)){break c}d.B=d._;if(!e(d,'')){return false}break a}d._=d.A-s;I=true;f:while(I===true){I=false;d.C=d._;J=true;g:while(J===true){J=false;K=d.A-d._;t=true;c:while(t===true){t=false;if(!(b(d,a.a_0,10)===0?false:!k(d)?false:true)){break c}break g}d._=d.A-K;if(!(!c(d)?false:!f(d,a.g_U,105,305)?false:!l(d)?false:true)){break f}}d.B=d._;if(!e(d,'')){return false}u=d.A-d._;r=true;c:while(r===true){r=false;d.C=d._;if(!(!c(d)?false:b(d,a.a_16,2)===0?false:true)){d._=d.A-u;break c}d.B=d._;if(!e(d,'')){return false}if(!i(d)){d._=d.A-u;break c}}break a}d._=d.A-s;if(!i(d)){d._=d.A-L;break e}}}break b}d._=d.A-j;if(!(!c(d)?false:b(d,a.a_7,2)===0?false:true)){return false}p=true;a:while(p===true){p=false;v=d.A-d._;n=true;c:while(n===true){n=false;if(!(b(d,a.a_1,2)===0?false:true)){break c}d.B=d._;if(!e(d,'')){return false}break a}d._=d.A-v;m=true;d:while(m===true){m=false;if(!(!c(d)?false:!f(d,a.g_U,105,305)?false:!l(d)?false:true)){break d}d.B=d._;if(!e(d,'')){return false}w=d.A-d._;A=true;c:while(A===true){A=false;d.C=d._;if(!(!c(d)?false:b(d,a.a_16,2)===0?false:true)){d._=d.A-w;break c}d.B=d._;if(!e(d,'')){return false}if(!i(d)){d._=d.A-w;break c}}break a}d._=d.A-v;if(!i(d)){return false}}}return true};a.prototype.z=function(){var d;var ar;var S;var j;var av;var m;var aq;var n;var p;var ax;var ay;var q;var ap;var r;var s;var as;var at;var au;var t;var aw;var u;var v;var w;var aA;var aB;var ao;var x;var y;var z;var A;var B;var C;var D;var E;var F;var G;var H;var I;var J;var K;var L;var M;var N;var O;var P;var Q;var R;var g;var T;var U;var V;var W;var X;var Y;var Z;var _;var $;var a0;var a1;var a2;var a3;var a4;var a5;var a6;var a7;var a8;var a9;var aa;var ab;var ac;var ad;var ae;var af;var ag;var ah;var ai;var aj;var ak;var al;var am;var an;var aC;var az;y=true;a:while(y===true){y=false;d=this.A-this._;z=true;b:while(z===true){z=false;this.C=this._;if(!(!c(this)?false:b(this,a.a_16,2)===0?false:true)){break b}this.B=this._;if(!e(this,'')){return false}ar=this.A-this._;A=true;c:while(A===true){A=false;if(!i(this)){this._=this.A-ar;break c}}break a}this._=this.A-d;B=true;g:while(B===true){B=false;this.C=this._;if(!(!c(this)?false:b(this,a.a_11,2)===0?false:!o(this)?false:true)){break g}this.B=this._;if(!e(this,'')){return false}S=this.A-this._;C=true;b:while(C===true){C=false;D=true;c:while(D===true){D=false;j=this.A-this._;E=true;d:while(E===true){E=false;this.C=this._;if(!(b(this,a.a_1,2)===0?false:true)){break d}this.B=this._;if(!e(this,'')){return false}break c}this._=this.A-j;F=true;f:while(F===true){F=false;this.C=this._;G=true;d:while(G===true){G=false;av=this.A-this._;H=true;e:while(H===true){H=false;if(!(b(this,a.a_0,10)===0?false:!k(this)?false:true)){break e}break d}this._=this.A-av;if(!(!c(this)?false:!f(this,a.g_U,105,305)?false:!l(this)?false:true)){break f}}this.B=this._;if(!e(this,'')){return false}m=this.A-this._;I=true;d:while(I===true){I=false;this.C=this._;if(!(!c(this)?false:b(this,a.a_16,2)===0?false:true)){this._=this.A-m;break d}this.B=this._;if(!e(this,'')){return false}if(!i(this)){this._=this.A-m;break d}}break c}aC=this._=this.A-j;this.C=aC;if(!(!c(this)?false:b(this,a.a_16,2)===0?false:true)){this._=this.A-S;break b}this.B=this._;if(!e(this,'')){return false}if(!i(this)){this._=this.A-S;break b}}}break a}this._=this.A-d;J=true;b:while(J===true){J=false;this.C=this._;K=true;d:while(K===true){K=false;aq=this.A-this._;L=true;c:while(L===true){L=false;if(!(!c(this)?false:b(this,a.a_7,2)===0?false:true)){break c}break d}this._=this.A-aq;if(!(!c(this)?false:b(this,a.a_5,2)===0?false:true)){break b}}M=true;c:while(M===true){M=false;n=this.A-this._;N=true;d:while(N===true){N=false;if(!(b(this,a.a_1,2)===0?false:true)){break d}this.B=this._;if(!e(this,'')){return false}break c}this._=this.A-n;O=true;e:while(O===true){O=false;if(!(!c(this)?false:!f(this,a.g_U,105,305)?false:!l(this)?false:true)){break e}this.B=this._;if(!e(this,'')){return false}p=this.A-this._;P=true;d:while(P===true){P=false;this.C=this._;if(!(!c(this)?false:b(this,a.a_16,2)===0?false:true)){this._=this.A-p;break d}this.B=this._;if(!e(this,'')){return false}if(!i(this)){this._=this.A-p;break d}}break c}this._=this.A-n;if(!i(this)){break b}}break a}this._=this.A-d;Q=true;c:while(Q===true){Q=false;this.C=this._;R=true;b:while(R===true){R=false;ax=this.A-this._;g=true;d:while(g===true){g=false;if(!(!c(this)?false:b(this,a.a_9,2)===0?false:true)){break d}break b}this._=this.A-ax;if(!(!c(this)?false:b(this,a.a_2,4)===0?false:true)){break c}}T=true;d:while(T===true){T=false;ay=this.A-this._;U=true;e:while(U===true){U=false;if(!(!c(this)?false:!f(this,a.g_U,105,305)?false:!l(this)?false:true)){break e}this.B=this._;if(!e(this,'')){return false}q=this.A-this._;V=true;b:while(V===true){V=false;this.C=this._;if(!(!c(this)?false:b(this,a.a_16,2)===0?false:true)){this._=this.A-q;break b}this.B=this._;if(!e(this,'')){return false}if(!i(this)){this._=this.A-q;break b}}break d}this._=this.A-ay;if(!(b(this,a.a_1,2)===0?false:true)){break c}}break a}this._=this.A-d;W=true;d:while(W===true){W=false;this.C=this._;if(!(!c(this)?false:b(this,a.a_8,4)===0?false:true)){break d}this.B=this._;if(!e(this,'')){return false}ap=this.A-this._;X=true;e:while(X===true){X=false;this.C=this._;Y=true;c:while(Y===true){Y=false;r=this.A-this._;Z=true;f:while(Z===true){Z=false;if(!(b(this,a.a_0,10)===0?false:!k(this)?false:true)){break f}this.B=this._;if(!e(this,'')){return false}s=this.A-this._;_=true;b:while(_===true){_=false;this.C=this._;if(!(!c(this)?false:b(this,a.a_16,2)===0?false:true)){this._=this.A-s;break b}this.B=this._;if(!e(this,'')){return false}if(!i(this)){this._=this.A-s;break b}}break c}this._=this.A-r;$=true;b:while($===true){$=false;if(!(!c(this)?false:b(this,a.a_16,2)===0?false:true)){break b}this.B=this._;if(!e(this,'')){return false}as=this.A-this._;a0=true;f:while(a0===true){a0=false;if(!i(this)){this._=this.A-as;break f}}break c}this._=this.A-r;if(!i(this)){this._=this.A-ap;break e}}}break a}this._=this.A-d;a1=true;d:while(a1===true){a1=false;this.C=this._;a2=true;b:while(a2===true){a2=false;at=this.A-this._;a3=true;c:while(a3===true){a3=false;if(!(!c(this)?false:b(this,a.a_3,4)===0?false:!o(this)?false:true)){break c}break b}this._=this.A-at;if(!(!c(this)?false:b(this,a.a_10,2)===0?false:!h(this)?false:true)){break d}}this.B=this._;if(!e(this,'')){return false}au=this.A-this._;a4=true;e:while(a4===true){a4=false;a5=true;c:while(a5===true){a5=false;t=this.A-this._;a6=true;b:while(a6===true){a6=false;this.C=this._;if(!(!c(this)?false:b(this,a.a_16,2)===0?false:true)){break b}this.B=this._;if(!e(this,'')){return false}if(!i(this)){break b}break c}this._=this.A-t;a7=true;f:while(a7===true){a7=false;this.C=this._;a8=true;b:while(a8===true){a8=false;aw=this.A-this._;a9=true;g:while(a9===true){a9=false;if(!(b(this,a.a_0,10)===0?false:!k(this)?false:true)){break g}break b}this._=this.A-aw;if(!(!c(this)?false:!f(this,a.g_U,105,305)?false:!l(this)?false:true)){break f}}this.B=this._;if(!e(this,'')){return false}u=this.A-this._;aa=true;b:while(aa===true){aa=false;this.C=this._;if(!(!c(this)?false:b(this,a.a_16,2)===0?false:true)){this._=this.A-u;break b}this.B=this._;if(!e(this,'')){return false}if(!i(this)){this._=this.A-u;break b}}break c}this._=this.A-t;if(!i(this)){this._=this.A-au;break e}}}break a}this._=this.A-d;ab=true;b:while(ab===true){ab=false;this.C=this._;if(!(b(this,a.a_1,2)===0?false:true)){break b}this.B=this._;if(!e(this,'')){return false}break a}this._=this.A-d;ac=true;b:while(ac===true){ac=false;if(!i(this)){break b}break a}this._=this.A-d;ad=true;c:while(ad===true){ad=false;this.C=this._;ae=true;b:while(ae===true){ae=false;v=this.A-this._;af=true;d:while(af===true){af=false;if(!(!c(this)?false:b(this,a.a_6,4)===0?false:true)){break d}break b}this._=this.A-v;ag=true;d:while(ag===true){ag=false;if(!(!c(this)?false:!f(this,a.g_U,105,305)?false:!h(this)?false:true)){break d}break b}this._=this.A-v;if(!(!c(this)?false:b(this,a.a_4,2)===0?false:!h(this)?false:true)){break c}}this.B=this._;if(!e(this,'')){return false}w=this.A-this._;ah=true;b:while(ah===true){ah=false;this.C=this._;ai=true;d:while(ai===true){ai=false;aA=this.A-this._;aj=true;e:while(aj===true){aj=false;if(!(b(this,a.a_0,10)===0?false:!k(this)?false:true)){break e}this.B=this._;if(!e(this,'')){return false}aB=this.A-this._;ak=true;f:while(ak===true){ak=false;this.C=this._;if(!(!c(this)?false:b(this,a.a_16,2)===0?false:true)){this._=this.A-aB;break f}}break d}this._=this.A-aA;if(!(!c(this)?false:b(this,a.a_16,2)===0?false:true)){this._=this.A-w;break b}}this.B=this._;if(!e(this,'')){return false}this.C=this._;if(!i(this)){this._=this.A-w;break b}}break a}az=this._=this.A-d;this.C=az;al=true;b:while(al===true){al=false;ao=this.A-this._;am=true;c:while(am===true){am=false;if(!(b(this,a.a_0,10)===0?false:!k(this)?false:true)){break c}break b}this._=this.A-ao;if(!(!c(this)?false:!f(this,a.g_U,105,305)?false:!l(this)?false:true)){return false}}this.B=this._;if(!e(this,'')){return false}x=this.A-this._;an=true;b:while(an===true){an=false;this.C=this._;if(!(!c(this)?false:b(this,a.a_16,2)===0?false:true)){this._=this.A-x;break b}this.B=this._;if(!e(this,'')){return false}if(!i(this)){this._=this.A-x;break b}}}return true};a.prototype.r_stem_noun_suffixes=a.prototype.z;function L(d){var g;var as;var S;var m;var aw;var n;var ar;var p;var q;var ay;var az;var r;var aq;var s;var t;var at;var au;var av;var u;var ax;var v;var w;var x;var aB;var aC;var ap;var y;var z;var A;var B;var C;var D;var E;var F;var G;var H;var I;var J;var K;var L;var M;var N;var O;var P;var Q;var R;var j;var T;var U;var V;var W;var X;var Y;var Z;var _;var $;var a0;var a1;var a2;var a3;var a4;var a5;var a6;var a7;var a8;var a9;var aa;var ab;var ac;var ad;var ae;var af;var ag;var ah;var ai;var aj;var ak;var al;var am;var an;var ao;var aD;var aA;z=true;a:while(z===true){z=false;g=d.A-d._;A=true;b:while(A===true){A=false;d.C=d._;if(!(!c(d)?false:b(d,a.a_16,2)===0?false:true)){break b}d.B=d._;if(!e(d,'')){return false}as=d.A-d._;B=true;c:while(B===true){B=false;if(!i(d)){d._=d.A-as;break c}}break a}d._=d.A-g;C=true;g:while(C===true){C=false;d.C=d._;if(!(!c(d)?false:b(d,a.a_11,2)===0?false:!o(d)?false:true)){break g}d.B=d._;if(!e(d,'')){return false}S=d.A-d._;D=true;b:while(D===true){D=false;E=true;c:while(E===true){E=false;m=d.A-d._;F=true;d:while(F===true){F=false;d.C=d._;if(!(b(d,a.a_1,2)===0?false:true)){break d}d.B=d._;if(!e(d,'')){return false}break c}d._=d.A-m;G=true;f:while(G===true){G=false;d.C=d._;H=true;d:while(H===true){H=false;aw=d.A-d._;I=true;e:while(I===true){I=false;if(!(b(d,a.a_0,10)===0?false:!k(d)?false:true)){break e}break d}d._=d.A-aw;if(!(!c(d)?false:!f(d,a.g_U,105,305)?false:!l(d)?false:true)){break f}}d.B=d._;if(!e(d,'')){return false}n=d.A-d._;J=true;d:while(J===true){J=false;d.C=d._;if(!(!c(d)?false:b(d,a.a_16,2)===0?false:true)){d._=d.A-n;break d}d.B=d._;if(!e(d,'')){return false}if(!i(d)){d._=d.A-n;break d}}break c}aD=d._=d.A-m;d.C=aD;if(!(!c(d)?false:b(d,a.a_16,2)===0?false:true)){d._=d.A-S;break b}d.B=d._;if(!e(d,'')){return false}if(!i(d)){d._=d.A-S;break b}}}break a}d._=d.A-g;K=true;b:while(K===true){K=false;d.C=d._;L=true;d:while(L===true){L=false;ar=d.A-d._;M=true;c:while(M===true){M=false;if(!(!c(d)?false:b(d,a.a_7,2)===0?false:true)){break c}break d}d._=d.A-ar;if(!(!c(d)?false:b(d,a.a_5,2)===0?false:true)){break b}}N=true;c:while(N===true){N=false;p=d.A-d._;O=true;d:while(O===true){O=false;if(!(b(d,a.a_1,2)===0?false:true)){break d}d.B=d._;if(!e(d,'')){return false}break c}d._=d.A-p;P=true;e:while(P===true){P=false;if(!(!c(d)?false:!f(d,a.g_U,105,305)?false:!l(d)?false:true)){break e}d.B=d._;if(!e(d,'')){return false}q=d.A-d._;Q=true;d:while(Q===true){Q=false;d.C=d._;if(!(!c(d)?false:b(d,a.a_16,2)===0?false:true)){d._=d.A-q;break d}d.B=d._;if(!e(d,'')){return false}if(!i(d)){d._=d.A-q;break d}}break c}d._=d.A-p;if(!i(d)){break b}}break a}d._=d.A-g;R=true;c:while(R===true){R=false;d.C=d._;j=true;b:while(j===true){j=false;ay=d.A-d._;T=true;d:while(T===true){T=false;if(!(!c(d)?false:b(d,a.a_9,2)===0?false:true)){break d}break b}d._=d.A-ay;if(!(!c(d)?false:b(d,a.a_2,4)===0?false:true)){break c}}U=true;d:while(U===true){U=false;az=d.A-d._;V=true;e:while(V===true){V=false;if(!(!c(d)?false:!f(d,a.g_U,105,305)?false:!l(d)?false:true)){break e}d.B=d._;if(!e(d,'')){return false}r=d.A-d._;W=true;b:while(W===true){W=false;d.C=d._;if(!(!c(d)?false:b(d,a.a_16,2)===0?false:true)){d._=d.A-r;break b}d.B=d._;if(!e(d,'')){return false}if(!i(d)){d._=d.A-r;break b}}break d}d._=d.A-az;if(!(b(d,a.a_1,2)===0?false:true)){break c}}break a}d._=d.A-g;X=true;d:while(X===true){X=false;d.C=d._;if(!(!c(d)?false:b(d,a.a_8,4)===0?false:true)){break d}d.B=d._;if(!e(d,'')){return false}aq=d.A-d._;Y=true;e:while(Y===true){Y=false;d.C=d._;Z=true;c:while(Z===true){Z=false;s=d.A-d._;_=true;f:while(_===true){_=false;if(!(b(d,a.a_0,10)===0?false:!k(d)?false:true)){break f}d.B=d._;if(!e(d,'')){return false}t=d.A-d._;$=true;b:while($===true){$=false;d.C=d._;if(!(!c(d)?false:b(d,a.a_16,2)===0?false:true)){d._=d.A-t;break b}d.B=d._;if(!e(d,'')){return false}if(!i(d)){d._=d.A-t;break b}}break c}d._=d.A-s;a0=true;b:while(a0===true){a0=false;if(!(!c(d)?false:b(d,a.a_16,2)===0?false:true)){break b}d.B=d._;if(!e(d,'')){return false}at=d.A-d._;a1=true;f:while(a1===true){a1=false;if(!i(d)){d._=d.A-at;break f}}break c}d._=d.A-s;if(!i(d)){d._=d.A-aq;break e}}}break a}d._=d.A-g;a2=true;d:while(a2===true){a2=false;d.C=d._;a3=true;b:while(a3===true){a3=false;au=d.A-d._;a4=true;c:while(a4===true){a4=false;if(!(!c(d)?false:b(d,a.a_3,4)===0?false:!o(d)?false:true)){break c}break b}d._=d.A-au;if(!(!c(d)?false:b(d,a.a_10,2)===0?false:!h(d)?false:true)){break d}}d.B=d._;if(!e(d,'')){return false}av=d.A-d._;a5=true;e:while(a5===true){a5=false;a6=true;c:while(a6===true){a6=false;u=d.A-d._;a7=true;b:while(a7===true){a7=false;d.C=d._;if(!(!c(d)?false:b(d,a.a_16,2)===0?false:true)){break b}d.B=d._;if(!e(d,'')){return false}if(!i(d)){break b}break c}d._=d.A-u;a8=true;f:while(a8===true){a8=false;d.C=d._;a9=true;b:while(a9===true){a9=false;ax=d.A-d._;aa=true;g:while(aa===true){aa=false;if(!(b(d,a.a_0,10)===0?false:!k(d)?false:true)){break g}break b}d._=d.A-ax;if(!(!c(d)?false:!f(d,a.g_U,105,305)?false:!l(d)?false:true)){break f}}d.B=d._;if(!e(d,'')){return false}v=d.A-d._;ab=true;b:while(ab===true){ab=false;d.C=d._;if(!(!c(d)?false:b(d,a.a_16,2)===0?false:true)){d._=d.A-v;break b}d.B=d._;if(!e(d,'')){return false}if(!i(d)){d._=d.A-v;break b}}break c}d._=d.A-u;if(!i(d)){d._=d.A-av;break e}}}break a}d._=d.A-g;ac=true;b:while(ac===true){ac=false;d.C=d._;if(!(b(d,a.a_1,2)===0?false:true)){break b}d.B=d._;if(!e(d,'')){return false}break a}d._=d.A-g;ad=true;b:while(ad===true){ad=false;if(!i(d)){break b}break a}d._=d.A-g;ae=true;c:while(ae===true){ae=false;d.C=d._;af=true;b:while(af===true){af=false;w=d.A-d._;ag=true;d:while(ag===true){ag=false;if(!(!c(d)?false:b(d,a.a_6,4)===0?false:true)){break d}break b}d._=d.A-w;ah=true;d:while(ah===true){ah=false;if(!(!c(d)?false:!f(d,a.g_U,105,305)?false:!h(d)?false:true)){break d}break b}d._=d.A-w;if(!(!c(d)?false:b(d,a.a_4,2)===0?false:!h(d)?false:true)){break c}}d.B=d._;if(!e(d,'')){return false}x=d.A-d._;ai=true;b:while(ai===true){ai=false;d.C=d._;aj=true;d:while(aj===true){aj=false;aB=d.A-d._;ak=true;e:while(ak===true){ak=false;if(!(b(d,a.a_0,10)===0?false:!k(d)?false:true)){break e}d.B=d._;if(!e(d,'')){return false}aC=d.A-d._;al=true;f:while(al===true){al=false;d.C=d._;if(!(!c(d)?false:b(d,a.a_16,2)===0?false:true)){d._=d.A-aC;break f}}break d}d._=d.A-aB;if(!(!c(d)?false:b(d,a.a_16,2)===0?false:true)){d._=d.A-x;break b}}d.B=d._;if(!e(d,'')){return false}d.C=d._;if(!i(d)){d._=d.A-x;break b}}break a}aA=d._=d.A-g;d.C=aA;am=true;b:while(am===true){am=false;ap=d.A-d._;an=true;c:while(an===true){an=false;if(!(b(d,a.a_0,10)===0?false:!k(d)?false:true)){break c}break b}d._=d.A-ap;if(!(!c(d)?false:!f(d,a.g_U,105,305)?false:!l(d)?false:true)){return false}}d.B=d._;if(!e(d,'')){return false}y=d.A-d._;ao=true;b:while(ao===true){ao=false;d.C=d._;if(!(!c(d)?false:b(d,a.a_16,2)===0?false:true)){d._=d.A-y;break b}d.B=d._;if(!e(d,'')){return false}if(!i(d)){d._=d.A-y;break b}}}return true};a.prototype.w=function(){var c;this.C=this._;c=b(this,a.a_23,4);if(c===0){return false}this.B=this._;switch(c){case 0:return false;case 1:if(!e(this,'p')){return false}break;case 2:if(!e(this,'ç')){return false}break;case 3:if(!e(this,'t')){return false}break;case 4:if(!e(this,'k')){return false}break}return true};a.prototype.r_post_process_last_consonants=a.prototype.w;function w(c){var d;c.C=c._;d=b(c,a.a_23,4);if(d===0){return false}c.B=c._;switch(d){case 0:return false;case 1:if(!e(c,'p')){return false}break;case 2:if(!e(c,'ç')){return false}break;case 3:if(!e(c,'t')){return false}break;case 4:if(!e(c,'k')){return false}break}return true};a.prototype.N=function(){var L;var _;var i;var Y;var B;var W;var K;var l;var S;var Q;var p;var O;var M;var s;var U;var u;var v;var w;var x;var y;var z;var A;var b;var C;var D;var j;var F;var G;var H;var I;var J;var E;var t;var r;var N;var q;var P;var o;var R;var m;var T;var k;var V;var h;var X;var e;var Z;var d;var $;var a0;var a1;var c;L=this.A-this._;u=true;a:while(u===true){u=false;_=this.A-this._;v=true;b:while(v===true){v=false;if(!g(this,1,'d')){break b}break a}this._=this.A-_;if(!g(this,1,'g')){return false}}this._=this.A-L;w=true;a:while(w===true){w=false;i=this.A-this._;x=true;b:while(x===true){x=false;Y=this.A-this._;d:while(true){B=this.A-this._;y=true;c:while(y===true){y=false;if(!f(this,a.g_vowel,97,305)){break c}this._=this.A-B;break d}V=this._=this.A-B;if(V<=this.D){break b}this._--}z=true;c:while(z===true){z=false;W=this.A-this._;A=true;d:while(A===true){A=false;if(!g(this,1,'a')){break d}break c}this._=this.A-W;if(!g(this,1,'ı')){break b}}h=this._=this.A-Y;b=h;N=h;q=n(this,h,h,'ı');if(h<=this.B){this.B+=q|0}if(N<=this.C){this.C+=q|0}this._=b;break a}this._=this.A-i;C=true;b:while(C===true){C=false;K=this.A-this._;c:while(true){l=this.A-this._;D=true;d:while(D===true){D=false;if(!f(this,a.g_vowel,97,305)){break d}this._=this.A-l;break c}X=this._=this.A-l;if(X<=this.D){break b}this._--}j=true;c:while(j===true){j=false;S=this.A-this._;F=true;d:while(F===true){F=false;if(!g(this,1,'e')){break d}break c}this._=this.A-S;if(!g(this,1,'i')){break b}}e=this._=this.A-K;b=e;P=e;o=n(this,e,e,'i');if(e<=this.B){this.B+=o|0}if(P<=this.C){this.C+=o|0}this._=b;break a}this._=this.A-i;G=true;b:while(G===true){G=false;Q=this.A-this._;c:while(true){p=this.A-this._;H=true;d:while(H===true){H=false;if(!f(this,a.g_vowel,97,305)){break d}this._=this.A-p;break c}Z=this._=this.A-p;if(Z<=this.D){break b}this._--}I=true;c:while(I===true){I=false;O=this.A-this._;J=true;d:while(J===true){J=false;if(!g(this,1,'o')){break d}break c}this._=this.A-O;if(!g(this,1,'u')){break b}}d=this._=this.A-Q;b=d;R=d;m=n(this,d,d,'u');if(d<=this.B){this.B+=m|0}if(R<=this.C){this.C+=m|0}this._=b;break a}a1=this._=(a0=this.A)-i;M=a0-a1;b:while(true){s=this.A-this._;E=true;c:while(E===true){E=false;if(!f(this,a.g_vowel,97,305)){break c}this._=this.A-s;break b}$=this._=this.A-s;if($<=this.D){return false}this._--}t=true;b:while(t===true){t=false;U=this.A-this._;r=true;c:while(r===true){r=false;if(!g(this,1,'ö')){break c}break b}this._=this.A-U;if(!g(this,1,'ü')){return false}}c=this._=this.A-M;b=c;T=c;k=n(this,c,c,'ü');if(c<=this.B){this.B+=k|0}if(T<=this.C){this.C+=k|0}this._=b}return true};a.prototype.r_append_U_to_stems_ending_with_d_or_g=a.prototype.N;function z(b){var $;var Z;var j;var X;var F;var L;var T;var m;var R;var P;var q;var N;var V;var t;var M;var v;var w;var x;var y;var z;var A;var B;var c;var D;var E;var C;var G;var H;var I;var J;var K;var u;var s;var r;var O;var p;var Q;var o;var S;var l;var U;var k;var W;var i;var Y;var h;var _;var e;var a0;var a1;var a2;var d;$=b.A-b._;v=true;a:while(v===true){v=false;Z=b.A-b._;w=true;b:while(w===true){w=false;if(!g(b,1,'d')){break b}break a}b._=b.A-Z;if(!g(b,1,'g')){return false}}b._=b.A-$;x=true;a:while(x===true){x=false;j=b.A-b._;y=true;b:while(y===true){y=false;X=b.A-b._;d:while(true){F=b.A-b._;z=true;c:while(z===true){z=false;if(!f(b,a.g_vowel,97,305)){break c}b._=b.A-F;break d}W=b._=b.A-F;if(W<=b.D){break b}b._--}A=true;c:while(A===true){A=false;L=b.A-b._;B=true;d:while(B===true){B=false;if(!g(b,1,'a')){break d}break c}b._=b.A-L;if(!g(b,1,'ı')){break b}}i=b._=b.A-X;c=i;O=i;p=n(b,i,i,'ı');if(i<=b.B){b.B+=p|0}if(O<=b.C){b.C+=p|0}b._=c;break a}b._=b.A-j;D=true;b:while(D===true){D=false;T=b.A-b._;c:while(true){m=b.A-b._;E=true;d:while(E===true){E=false;if(!f(b,a.g_vowel,97,305)){break d}b._=b.A-m;break c}Y=b._=b.A-m;if(Y<=b.D){break b}b._--}C=true;c:while(C===true){C=false;R=b.A-b._;G=true;d:while(G===true){G=false;if(!g(b,1,'e')){break d}break c}b._=b.A-R;if(!g(b,1,'i')){break b}}h=b._=b.A-T;c=h;Q=h;o=n(b,h,h,'i');if(h<=b.B){b.B+=o|0}if(Q<=b.C){b.C+=o|0}b._=c;break a}b._=b.A-j;H=true;b:while(H===true){H=false;P=b.A-b._;c:while(true){q=b.A-b._;I=true;d:while(I===true){I=false;if(!f(b,a.g_vowel,97,305)){break d}b._=b.A-q;break c}_=b._=b.A-q;if(_<=b.D){break b}b._--}J=true;c:while(J===true){J=false;N=b.A-b._;K=true;d:while(K===true){K=false;if(!g(b,1,'o')){break d}break c}b._=b.A-N;if(!g(b,1,'u')){break b}}e=b._=b.A-P;c=e;S=e;l=n(b,e,e,'u');if(e<=b.B){b.B+=l|0}if(S<=b.C){b.C+=l|0}b._=c;break a}a2=b._=(a1=b.A)-j;V=a1-a2;b:while(true){t=b.A-b._;u=true;c:while(u===true){u=false;if(!f(b,a.g_vowel,97,305)){break c}b._=b.A-t;break b}a0=b._=b.A-t;if(a0<=b.D){return false}b._--}s=true;b:while(s===true){s=false;M=b.A-b._;r=true;c:while(r===true){r=false;if(!g(b,1,'ö')){break c}break b}b._=b.A-M;if(!g(b,1,'ü')){return false}}d=b._=b.A-V;c=d;U=d;k=n(b,d,d,'ü');if(d<=b.B){b.B+=k|0}if(U<=b.C){b.C+=k|0}b._=c}return true};a.prototype.v=function(){var e;var f;var b;var c;var d;e=this._;b=2;a:while(true){f=this._;c=true;b:while(c===true){c=false;c:while(true){d=true;d:while(d===true){d=false;if(!v(this,a.g_vowel,97,305)){break d}break c}if(this._>=this.A){break b}this._++}b--;continue a}this._=f;break a}if(b>0){return false}this._=e;return true};a.prototype.r_more_than_one_syllable_word=a.prototype.v;function N(b){var f;var g;var c;var d;var e;f=b._;c=2;a:while(true){g=b._;d=true;b:while(d===true){d=false;c:while(true){e=true;d:while(e===true){e=false;if(!v(b,a.g_vowel,97,305)){break d}break c}if(b._>=b.A){break b}b._++}c--;continue a}b._=g;break a}if(c>0){return false}b._=f;return true};a.prototype.P=function(){var f;var g;var h;var b;var a;var c;var d;var i;var j;var e;b=true;b:while(b===true){b=false;f=this._;a=true;a:while(a===true){a=false;g=this._;c:while(true){c=true;d:while(c===true){c=false;if(!s(this,2,'ad')){break d}break c}if(this._>=this.A){break a}this._++}i=this.I_strlen=2;if(!(i===this.A)){break a}this._=g;break b}j=this._=f;h=j;a:while(true){d=true;c:while(d===true){d=false;if(!s(this,5,'soyad')){break c}break a}if(this._>=this.A){return false}this._++}e=this.I_strlen=5;if(!(e===this.A)){return false}this._=h}return true};a.prototype.r_is_reserved_word=a.prototype.P;function x(a){var g;var h;var i;var c;var b;var d;var e;var j;var k;var f;c=true;b:while(c===true){c=false;g=a._;b=true;a:while(b===true){b=false;h=a._;c:while(true){d=true;d:while(d===true){d=false;if(!s(a,2,'ad')){break d}break c}if(a._>=a.A){break a}a._++}j=a.I_strlen=2;if(!(j===a.A)){break a}a._=h;break b}k=a._=g;i=k;a:while(true){e=true;c:while(e===true){e=false;if(!s(a,5,'soyad')){break c}break a}if(a._>=a.A){return false}a._++}f=a.I_strlen=5;if(!(f===a.A)){return false}a._=i}return true};a.prototype.x=function(){var d;var e;var a;var b;var c;var f;var g;var h;d=this._;a=true;a:while(a===true){a=false;if(!x(this)){break a}return false}f=this._=d;this.D=f;h=this._=g=this.A;e=g-h;b=true;a:while(b===true){b=false;if(!z(this)){break a}}this._=this.A-e;c=true;a:while(c===true){c=false;if(!w(this)){break a}}this._=this.D;return true};a.prototype.r_postlude=a.prototype.x;function O(a){var e;var f;var b;var c;var d;var g;var h;var i;e=a._;b=true;a:while(b===true){b=false;if(!x(a)){break a}return false}g=a._=e;a.D=g;i=a._=h=a.A;f=h-i;c=true;a:while(c===true){c=false;if(!z(a)){break a}}a._=a.A-f;d=true;a:while(d===true){d=false;if(!w(a)){break a}}a._=a.D;return true};a.prototype.H=function(){var c;var a;var b;var d;var e;if(!N(this)){return false}this.D=this._;e=this._=d=this.A;c=d-e;a=true;a:while(a===true){a=false;if(!J(this)){break a}}this._=this.A-c;if(!this.B_continue_stemming_noun_suffixes){return false}b=true;a:while(b===true){b=false;if(!L(this)){break a}}this._=this.D;return!O(this)?false:true};a.prototype.stem=a.prototype.H;a.prototype.L=function(b){return b instanceof a};a.prototype.equals=a.prototype.L;a.prototype.M=function(){var c;var a;var b;var d;c='TurkishStemmer';a=0;for(b=0;b<c.length;b++){d=c.charCodeAt(b);a=(a<<5)-a+d;a=a&a}return a|0};a.prototype.hashCode=a.prototype.M;a.serialVersionUID=1;j(a,'methodObject',function(){return new a});j(a,'a_0',function(){return[new d('m',-1,-1),new d('n',-1,-1),new d('miz',-1,-1),new d('niz',-1,-1),new d('muz',-1,-1),new d('nuz',-1,-1),new d('müz',-1,-1),new d('nüz',-1,-1),new d('mız',-1,-1),new d('nız',-1,-1)]});j(a,'a_1',function(){return[new d('leri',-1,-1),new d('ları',-1,-1)]});j(a,'a_2',function(){return[new d('ni',-1,-1),new d('nu',-1,-1),new d('nü',-1,-1),new d('nı',-1,-1)]});j(a,'a_3',function(){return[new d('in',-1,-1),new d('un',-1,-1),new d('ün',-1,-1),new d('ın',-1,-1)]});j(a,'a_4',function(){return[new d('a',-1,-1),new d('e',-1,-1)]});j(a,'a_5',function(){return[new d('na',-1,-1),new d('ne',-1,-1)]});j(a,'a_6',function(){return[new d('da',-1,-1),new d('ta',-1,-1),new d('de',-1,-1),new d('te',-1,-1)]});j(a,'a_7',function(){return[new d('nda',-1,-1),new d('nde',-1,-1)]});j(a,'a_8',function(){return[new d('dan',-1,-1),new d('tan',-1,-1),new d('den',-1,-1),new d('ten',-1,-1)]});j(a,'a_9',function(){return[new d('ndan',-1,-1),new d('nden',-1,-1)]});j(a,'a_10',function(){return[new d('la',-1,-1),new d('le',-1,-1)]});j(a,'a_11',function(){return[new d('ca',-1,-1),new d('ce',-1,-1)]});j(a,'a_12',function(){return[new d('im',-1,-1),new d('um',-1,-1),new d('üm',-1,-1),new d('ım',-1,-1)]});j(a,'a_13',function(){return[new d('sin',-1,-1),new d('sun',-1,-1),new d('sün',-1,-1),new d('sın',-1,-1)]});j(a,'a_14',function(){return[new d('iz',-1,-1),new d('uz',-1,-1),new d('üz',-1,-1),new d('ız',-1,-1)]});j(a,'a_15',function(){return[new d('siniz',-1,-1),new d('sunuz',-1,-1),new d('sünüz',-1,-1),new d('sınız',-1,-1)]});j(a,'a_16',function(){return[new d('lar',-1,-1),new d('ler',-1,-1)]});j(a,'a_17',function(){return[new d('niz',-1,-1),new d('nuz',-1,-1),new d('nüz',-1,-1),new d('nız',-1,-1)]});j(a,'a_18',function(){return[new d('dir',-1,-1),new d('tir',-1,-1),new d('dur',-1,-1),new d('tur',-1,-1),new d('dür',-1,-1),new d('tür',-1,-1),new d('dır',-1,-1),new d('tır',-1,-1)]});j(a,'a_19',function(){return[new d('casına',-1,-1),new d('cesine',-1,-1)]});j(a,'a_20',function(){return[new d('di',-1,-1),new d('ti',-1,-1),new d('dik',-1,-1),new d('tik',-1,-1),new d('duk',-1,-1),new d('tuk',-1,-1),new d('dük',-1,-1),new d('tük',-1,-1),new d('dık',-1,-1),new d('tık',-1,-1),new d('dim',-1,-1),new d('tim',-1,-1),new d('dum',-1,-1),new d('tum',-1,-1),new d('düm',-1,-1),new d('tüm',-1,-1),new d('dım',-1,-1),new d('tım',-1,-1),new d('din',-1,-1),new d('tin',-1,-1),new d('dun',-1,-1),new d('tun',-1,-1),new d('dün',-1,-1),new d('tün',-1,-1),new d('dın',-1,-1),new d('tın',-1,-1),new d('du',-1,-1),new d('tu',-1,-1),new d('dü',-1,-1),new d('tü',-1,-1),new d('dı',-1,-1),new d('tı',-1,-1)]});j(a,'a_21',function(){return[new d('sa',-1,-1),new d('se',-1,-1),new d('sak',-1,-1),new d('sek',-1,-1),new d('sam',-1,-1),new d('sem',-1,-1),new d('san',-1,-1),new d('sen',-1,-1)]});j(a,'a_22',function(){return[new d('miş',-1,-1),new d('muş',-1,-1),new d('müş',-1,-1),new d('mış',-1,-1)]});j(a,'a_23',function(){return[new d('b',-1,1),new d('c',-1,2),new d('d',-1,3),new d('ğ',-1,4)]});j(a,'g_vowel',function(){return[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,8,0,0,0,0,0,0,1]});j(a,'g_U',function(){return[1,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,1]});j(a,'g_vowel1',function(){return[1,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]});j(a,'g_vowel2',function(){return[17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130]});j(a,'g_vowel3',function(){return[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]});j(a,'g_vowel4',function(){return[17]});j(a,'g_vowel5',function(){return[65]});j(a,'g_vowel6',function(){return[65]});var y={'src/stemmer.jsx':{Stemmer:u},'src/turkish-stemmer.jsx':{TurkishStemmer:a}}}(JSX)) +var Stemmer = JSX.require("src/turkish-stemmer.jsx").TurkishStemmer; +""" + + +class SearchTurkish(SearchLanguage): + lang = 'tr' + language_name = 'Turkish' + js_stemmer_rawcode = 'turkish-stemmer.js' + js_stemmer_code = js_stemmer + stopwords = set() # type: Set[str] + + def init(self, options: Dict) -> None: + self.stemmer = snowballstemmer.stemmer('turkish') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/sphinx/search/zh.py b/sphinx/sphinx/search/zh.py new file mode 100644 index 0000000..48f169a --- /dev/null +++ b/sphinx/sphinx/search/zh.py @@ -0,0 +1,267 @@ +""" + sphinx.search.zh + ~~~~~~~~~~~~~~~~ + + Chinese search language: includes routine to split words. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import os +import re +from typing import Dict, List + +from sphinx.search import SearchLanguage +from sphinx.util.stemmer import get_stemmer + +try: + import jieba + JIEBA = True +except ImportError: + JIEBA = False + +english_stopwords = set(""" +a and are as at +be but by +for +if in into is it +near no not +of on or +such +that the their then there these they this to +was will with +""".split()) + +js_porter_stemmer = """ +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|\ +ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|\ +iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} +""" + + +class SearchChinese(SearchLanguage): + """ + Chinese search implementation + """ + + lang = 'zh' + language_name = 'Chinese' + js_stemmer_code = js_porter_stemmer + stopwords = english_stopwords + latin1_letters = re.compile(r'[a-zA-Z0-9_]+') + latin_terms = [] # type: List[str] + + def init(self, options: Dict) -> None: + if JIEBA: + dict_path = options.get('dict') + if dict_path and os.path.isfile(dict_path): + jieba.load_userdict(dict_path) + + self.stemmer = get_stemmer() + + def split(self, input: str) -> List[str]: + chinese = [] # type: List[str] + if JIEBA: + chinese = list(jieba.cut_for_search(input)) + + latin1 = \ + [term.strip() for term in self.latin1_letters.findall(input)] + self.latin_terms.extend(latin1) + return chinese + latin1 + + def word_filter(self, stemmed_word: str) -> bool: + return len(stemmed_word) > 1 + + def stem(self, word: str) -> str: + # Don't stem Latin words that are long enough to be relevant for search + # if not stemmed, but would be too short after being stemmed + # avoids some issues with acronyms + should_not_be_stemmed = ( + word in self.latin_terms and + len(word) >= 3 and + len(self.stemmer.stem(word.lower())) < 3 + ) + if should_not_be_stemmed: + return word.lower() + return self.stemmer.stem(word.lower()) diff --git a/sphinx/sphinx/setup_command.py b/sphinx/sphinx/setup_command.py new file mode 100644 index 0000000..f551585 --- /dev/null +++ b/sphinx/sphinx/setup_command.py @@ -0,0 +1,207 @@ +""" + sphinx.setup_command + ~~~~~~~~~~~~~~~~~~~~ + + Setuptools/distutils commands to assist the building of sphinx + documentation. + + :author: Sebastian Wiesner + :contact: basti.wiesner@gmx.net + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import os +import sys +from distutils.cmd import Command +from distutils.errors import DistutilsOptionError, DistutilsExecError +from io import StringIO + +from sphinx.application import Sphinx +from sphinx.cmd.build import handle_exception +from sphinx.util.console import nocolor, color_terminal +from sphinx.util.docutils import docutils_namespace, patch_docutils +from sphinx.util.osutil import abspath + +if False: + # For type annotation + from typing import Any, Dict # NOQA + + +class BuildDoc(Command): + """ + Distutils command to build Sphinx documentation. + + The Sphinx build can then be triggered from distutils, and some Sphinx + options can be set in ``setup.py`` or ``setup.cfg`` instead of Sphinx own + configuration file. + + For instance, from `setup.py`:: + + # this is only necessary when not using setuptools/distribute + from sphinx.setup_command import BuildDoc + cmdclass = {'build_sphinx': BuildDoc} + + name = 'My project' + version = '1.2' + release = '1.2.0' + setup( + name=name, + author='Bernard Montgomery', + version=release, + cmdclass=cmdclass, + # these are optional and override conf.py settings + command_options={ + 'build_sphinx': { + 'project': ('setup.py', name), + 'version': ('setup.py', version), + 'release': ('setup.py', release)}}, + ) + + Or add this section in ``setup.cfg``:: + + [build_sphinx] + project = 'My project' + version = 1.2 + release = 1.2.0 + """ + + description = 'Build Sphinx documentation' + user_options = [ + ('fresh-env', 'E', 'discard saved environment'), + ('all-files', 'a', 'build all files'), + ('source-dir=', 's', 'Source directory'), + ('build-dir=', None, 'Build directory'), + ('config-dir=', 'c', 'Location of the configuration directory'), + ('builder=', 'b', 'The builder (or builders) to use. Can be a comma- ' + 'or space-separated list. Defaults to "html"'), + ('warning-is-error', 'W', 'Turn warning into errors'), + ('project=', None, 'The documented project\'s name'), + ('version=', None, 'The short X.Y version'), + ('release=', None, 'The full version, including alpha/beta/rc tags'), + ('today=', None, 'How to format the current date, used as the ' + 'replacement for |today|'), + ('link-index', 'i', 'Link index.html to the master doc'), + ('copyright', None, 'The copyright string'), + ('pdb', None, 'Start pdb on exception'), + ('nitpicky', 'n', 'nit-picky mode, warn about all missing references'), + ('keep-going', None, 'With -W, keep going when getting warnings'), + ] + boolean_options = ['fresh-env', 'all-files', 'warning-is-error', + 'link-index', 'nitpicky'] + + def initialize_options(self): + # type: () -> None + self.fresh_env = self.all_files = False + self.pdb = False + self.source_dir = self.build_dir = None # type: str + self.builder = 'html' + self.warning_is_error = False + self.project = '' + self.version = '' + self.release = '' + self.today = '' + self.config_dir = None # type: str + self.link_index = False + self.copyright = '' + self.verbosity = 0 + self.traceback = False + self.nitpicky = False + self.keep_going = False + + def _guess_source_dir(self): + # type: () -> str + for guess in ('doc', 'docs'): + if not os.path.isdir(guess): + continue + for root, dirnames, filenames in os.walk(guess): + if 'conf.py' in filenames: + return root + return os.curdir + + # Overriding distutils' Command._ensure_stringlike which doesn't support + # unicode, causing finalize_options to fail if invoked again. Workaround + # for https://bugs.python.org/issue19570 + def _ensure_stringlike(self, option, what, default=None): + # type: (str, str, Any) -> Any + val = getattr(self, option) + if val is None: + setattr(self, option, default) + return default + elif not isinstance(val, str): + raise DistutilsOptionError("'%s' must be a %s (got `%s`)" + % (option, what, val)) + return val + + def finalize_options(self): + # type: () -> None + self.ensure_string_list('builder') + + if self.source_dir is None: + self.source_dir = self._guess_source_dir() + self.announce('Using source directory %s' % self.source_dir) + + self.ensure_dirname('source_dir') + + if self.config_dir is None: + self.config_dir = self.source_dir + + if self.build_dir is None: + build = self.get_finalized_command('build') + self.build_dir = os.path.join(abspath(build.build_base), 'sphinx') # type: ignore + + self.doctree_dir = os.path.join(self.build_dir, 'doctrees') + + self.builder_target_dirs = [ + (builder, os.path.join(self.build_dir, builder)) + for builder in self.builder] + + def run(self): + # type: () -> None + if not color_terminal(): + nocolor() + if not self.verbose: # type: ignore + status_stream = StringIO() + else: + status_stream = sys.stdout # type: ignore + confoverrides = {} # type: Dict[str, Any] + if self.project: + confoverrides['project'] = self.project + if self.version: + confoverrides['version'] = self.version + if self.release: + confoverrides['release'] = self.release + if self.today: + confoverrides['today'] = self.today + if self.copyright: + confoverrides['copyright'] = self.copyright + if self.nitpicky: + confoverrides['nitpicky'] = self.nitpicky + + for builder, builder_target_dir in self.builder_target_dirs: + app = None + + try: + confdir = self.config_dir or self.source_dir + with patch_docutils(confdir), docutils_namespace(): + app = Sphinx(self.source_dir, self.config_dir, + builder_target_dir, self.doctree_dir, + builder, confoverrides, status_stream, + freshenv=self.fresh_env, + warningiserror=self.warning_is_error, + keep_going=self.keep_going) + app.build(force_all=self.all_files) + if app.statuscode: + raise DistutilsExecError( + 'caused by %s builder.' % app.builder.name) + except Exception as exc: + handle_exception(app, self, exc, sys.stderr) + if not self.pdb: + raise SystemExit(1) + + if not self.link_index: + continue + + src = app.config.master_doc + app.builder.out_suffix # type: ignore + dst = app.builder.get_outfilename('index') # type: ignore + os.symlink(src, dst) diff --git a/sphinx/sphinx/templates/apidoc/module.rst_t b/sphinx/sphinx/templates/apidoc/module.rst_t new file mode 100644 index 0000000..2490278 --- /dev/null +++ b/sphinx/sphinx/templates/apidoc/module.rst_t @@ -0,0 +1,9 @@ +{%- if show_headings %} +{{- [basename, "module"] | join(' ') | e | heading }} + +{% endif -%} +.. automodule:: {{ qualname }} +{%- for option in automodule_options %} + :{{ option }}: +{%- endfor %} + diff --git a/sphinx/sphinx/templates/apidoc/package.rst_t b/sphinx/sphinx/templates/apidoc/package.rst_t new file mode 100644 index 0000000..8630a87 --- /dev/null +++ b/sphinx/sphinx/templates/apidoc/package.rst_t @@ -0,0 +1,53 @@ +{%- macro automodule(modname, options) -%} +.. automodule:: {{ modname }} +{%- for option in options %} + :{{ option }}: +{%- endfor %} +{%- endmacro %} + +{%- macro toctree(docnames) -%} +.. toctree:: + :maxdepth: {{ maxdepth }} +{% for docname in docnames %} + {{ docname }} +{%- endfor %} +{%- endmacro %} + +{%- if is_namespace %} +{{- [pkgname, "namespace"] | join(" ") | e | heading }} +{% else %} +{{- [pkgname, "package"] | join(" ") | e | heading }} +{% endif %} + +{%- if modulefirst and not is_namespace %} +{{ automodule(pkgname, automodule_options) }} +{% endif %} + +{%- if subpackages %} +Subpackages +----------- + +{{ toctree(subpackages) }} +{% endif %} + +{%- if submodules %} +Submodules +---------- +{% if separatemodules %} +{{ toctree(submodules) }} +{%- else %} +{%- for submodule in submodules %} +{% if show_headings %} +{{- [submodule, "module"] | join(" ") | e | heading(2) }} +{% endif %} +{{ automodule(submodule, automodule_options) }} +{% endfor %} +{%- endif %} +{% endif %} + +{%- if not modulefirst and not is_namespace %} +Module contents +--------------- + +{{ automodule(pkgname, automodule_options) }} +{% endif %} diff --git a/sphinx/sphinx/templates/apidoc/toc.rst_t b/sphinx/sphinx/templates/apidoc/toc.rst_t new file mode 100644 index 0000000..f0877ee --- /dev/null +++ b/sphinx/sphinx/templates/apidoc/toc.rst_t @@ -0,0 +1,8 @@ +{{ header | heading }} + +.. toctree:: + :maxdepth: {{ maxdepth }} +{% for docname in docnames %} + {{ docname }} +{%- endfor %} + diff --git a/sphinx/sphinx/templates/epub3/container.xml b/sphinx/sphinx/templates/epub3/container.xml new file mode 100644 index 0000000..326cf15 --- /dev/null +++ b/sphinx/sphinx/templates/epub3/container.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container"> + <rootfiles> + <rootfile full-path="content.opf" media-type="application/oebps-package+xml"/> + </rootfiles> +</container> diff --git a/sphinx/sphinx/templates/epub3/content.opf_t b/sphinx/sphinx/templates/epub3/content.opf_t new file mode 100644 index 0000000..417888c --- /dev/null +++ b/sphinx/sphinx/templates/epub3/content.opf_t @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<package xmlns="http://www.idpf.org/2007/opf" version="{{ epub_version }}" xml:lang="{{ lang }}" + unique-identifier="{{ uid }}" + prefix="ibooks: http://vocabulary.itunes.apple.com/rdf/ibooks/vocabulary-extensions-1.0/"> + <metadata xmlns:opf="http://www.idpf.org/2007/opf" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <dc:language>{{ lang }}</dc:language> + <dc:title>{{ title }}</dc:title> + <dc:description>{{ description }}</dc:description> + <dc:creator>{{ author }}</dc:creator> + <dc:contributor>{{ contributor }}</dc:contributor> + <dc:publisher>{{ publisher }}</dc:publisher> + <dc:rights>{{ copyright }}</dc:rights> + {%- if epub_version == 3.1 %} + <dc:identifier id="{{ uid }}" opf:scheme="{{ scheme }}">{{ id }}</dc:identifier> + {%- else %} + <dc:identifier id="{{ uid }}">{{ id }}</dc:identifier> + {%- endif %} + <dc:date>{{ date }}</dc:date> + <meta property="dcterms:modified">{{ date }}</meta> + <meta property="ibooks:version">{{ version }}</meta> + <meta property="ibooks:specified-fonts">true</meta> + <meta property="ibooks:binding">true</meta> + <meta property="ibooks:scroll-axis">{{ ibook_scroll_axis }}</meta> + {%- if cover %} + <meta name="cover" content="{{ cover }}"/> + {%- endif %} + </metadata> + <manifest> + <item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml" /> + <item id="nav" href="nav.xhtml" media-type="application/xhtml+xml" properties="nav"/> + {%- for item in manifest_items %} + <item id="{{ item.id }}" href="{{ item.href }}" media-type="{{ item.media_type }}" /> + {%- endfor %} + </manifest> + <spine toc="ncx" page-progression-direction="{{ page_progression_direction }}"> + {%- for spine in spines %} + {%- if spine.linear %} + <itemref idref="{{ spine.idref }}" /> + {%- else %} + <itemref idref="{{ spine.idref }}" linear="no" /> + {%- endif %} + {%- endfor %} + </spine> + <guide> + {%- for guide in guides %} + <reference type="{{ guide.type }}" title="{{ guide.title }}" href="{{ guide.uri }}" /> + {%- endfor %} + </guide> +</package> diff --git a/sphinx/sphinx/templates/epub3/mimetype b/sphinx/sphinx/templates/epub3/mimetype new file mode 100644 index 0000000..57ef03f --- /dev/null +++ b/sphinx/sphinx/templates/epub3/mimetype @@ -0,0 +1 @@ +application/epub+zip \ No newline at end of file diff --git a/sphinx/sphinx/templates/epub3/nav.xhtml_t b/sphinx/sphinx/templates/epub3/nav.xhtml_t new file mode 100644 index 0000000..2a32c20 --- /dev/null +++ b/sphinx/sphinx/templates/epub3/nav.xhtml_t @@ -0,0 +1,26 @@ +{%- macro toctree(navlist) -%} +<ol> +{%- for nav in navlist %} + <li> + <a href="{{ nav.refuri }}">{{ nav.text }}</a> + {%- if nav.children %} +{{ toctree(nav.children)|indent(4, true) }} + {%- endif %} + </li> +{%- endfor %} +</ol> +{%- endmacro -%} +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" + xmlns:epub="http://www.idpf.org/2007/ops" lang="{{ lang }}" xml:lang="{{ lang }}"> + <head> + <title>{{ toc_locale }} + + + + + diff --git a/sphinx/sphinx/templates/epub3/toc.ncx_t b/sphinx/sphinx/templates/epub3/toc.ncx_t new file mode 100644 index 0000000..0ea7ca3 --- /dev/null +++ b/sphinx/sphinx/templates/epub3/toc.ncx_t @@ -0,0 +1,24 @@ +{%- macro navPoints(navlist) %} +{%- for nav in navlist %} + + + {{ nav.text }} + + {{ navPoints(nav.children)|indent(2, true) }} + +{%- endfor %} +{%- endmacro -%} + + + + + + + + + + {{ title }} + + {{ navPoints(navpoints)|indent(4, true) }} + + diff --git a/sphinx/sphinx/templates/gettext/message.pot_t b/sphinx/sphinx/templates/gettext/message.pot_t new file mode 100644 index 0000000..6138f54 --- /dev/null +++ b/sphinx/sphinx/templates/gettext/message.pot_t @@ -0,0 +1,33 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) {{ copyright }} +# This file is distributed under the same license as the {{ project }} package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: {{ project|e }} {{ version|e }}\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: {{ ctime|e }}\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: {{ last_translator|e }}\n" +"Language-Team: {{ language_team|e }}\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +{% for message in messages %} +{% if display_location -%} +{% for source, line in message.locations -%} +#: {{ relpath(source) }}:{{ line }} +{% endfor -%} +{% endif -%} + +{% if display_uuid -%} +{% for uuid in message.uuids -%} +#: {{ uuid }} +{% endfor -%} +{% endif -%} + +msgid "{{ message.text|e }}" +msgstr "" +{% endfor -%} diff --git a/sphinx/sphinx/templates/graphviz/graphviz.css b/sphinx/sphinx/templates/graphviz/graphviz.css new file mode 100644 index 0000000..8ab69e0 --- /dev/null +++ b/sphinx/sphinx/templates/graphviz/graphviz.css @@ -0,0 +1,19 @@ +/* + * graphviz.css + * ~~~~~~~~~~~~ + * + * Sphinx stylesheet -- graphviz extension. + * + * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +img.graphviz { + border: 0; + max-width: 100%; +} + +object.graphviz { + max-width: 100%; +} diff --git a/sphinx/sphinx/templates/htmlhelp/project.hhc b/sphinx/sphinx/templates/htmlhelp/project.hhc new file mode 100644 index 0000000..c1096e7 --- /dev/null +++ b/sphinx/sphinx/templates/htmlhelp/project.hhc @@ -0,0 +1,31 @@ +{%- macro sitemap(name, docname) -%} + + + + +{%- endmacro -%} + + + + + + + + + + + + +
      +
    • + {{ sitemap(short_title, master_doc)|indent(8) }} +
    • + {%- for indexname, indexcls, content, collapse in domain_indices %} +
    • + {{ sitemap(indexcls.localname, indexname)|indent(8) }} +
    • + {%- endfor %} + {{ body|indent(6) }} +
    + + diff --git a/sphinx/sphinx/templates/htmlhelp/project.hhp b/sphinx/sphinx/templates/htmlhelp/project.hhp new file mode 100644 index 0000000..b647b37 --- /dev/null +++ b/sphinx/sphinx/templates/htmlhelp/project.hhp @@ -0,0 +1,21 @@ +[OPTIONS] +Binary TOC=No +Binary Index=No +Compiled file={{ outname }}.chm +Contents file={{ outname }}.hhc +Default Window={{ outname }} +Default topic={{ master_doc }} +Display compile progress=No +Full text search stop list file={{ outname }}.stp +Full-text search=Yes +Index file={{ outname }}.hhk +Language={{ "%#x"|format(lcid) }} +Title={{ title }} + +[WINDOWS] +{{ outname }}="{{ title }}","{{ outname }}.hhc","{{ outname }}.hhk","{{ master_doc }}","{{ master_doc }}",,,,,0x63520,220,0x10384e,[0,0,1024,768],,,,,,,0 + +[FILES] +{%- for filename in files %} +{{ filename }} +{%- endfor %} diff --git a/sphinx/sphinx/templates/htmlhelp/project.stp b/sphinx/sphinx/templates/htmlhelp/project.stp new file mode 100644 index 0000000..bae1f90 --- /dev/null +++ b/sphinx/sphinx/templates/htmlhelp/project.stp @@ -0,0 +1,33 @@ +a +and +are +as +at +be +but +by +for +if +in +into +is +it +near +no +not +of +on +or +such +that +the +their +then +there +these +they +this +to +was +will +with diff --git a/sphinx/sphinx/templates/imgmath/preview.tex_t b/sphinx/sphinx/templates/imgmath/preview.tex_t new file mode 100644 index 0000000..f3fdcda --- /dev/null +++ b/sphinx/sphinx/templates/imgmath/preview.tex_t @@ -0,0 +1,18 @@ +\documentclass[12pt]{article} +\usepackage[utf8]{inputenc} +\usepackage{amsmath} +\usepackage{amsthm} +\usepackage{amssymb} +\usepackage{amsfonts} +\usepackage{anyfontsize} +\usepackage{bm} +\pagestyle{empty} +<%= preamble %> + +\usepackage[active<%= tightpage %>]{preview} + +\begin{document} +\begin{preview} +\fontsize{<%= fontsize %>}{<%= baselineskip %>}\selectfont <%= math %> +\end{preview} +\end{document} diff --git a/sphinx/sphinx/templates/imgmath/template.tex_t b/sphinx/sphinx/templates/imgmath/template.tex_t new file mode 100644 index 0000000..92fa8b0 --- /dev/null +++ b/sphinx/sphinx/templates/imgmath/template.tex_t @@ -0,0 +1,14 @@ +\documentclass[12pt]{article} +\usepackage[utf8]{inputenc} +\usepackage{amsmath} +\usepackage{amsthm} +\usepackage{amssymb} +\usepackage{amsfonts} +\usepackage{anyfontsize} +\usepackage{bm} +\pagestyle{empty} +<%= preamble %> + +\begin{document} +\fontsize{<%= fontsize %>}{<%= baselineskip %>}\selectfont <%= math %> +\end{document} diff --git a/sphinx/sphinx/templates/latex/latex.tex_t b/sphinx/sphinx/templates/latex/latex.tex_t new file mode 100644 index 0000000..a0a5a26 --- /dev/null +++ b/sphinx/sphinx/templates/latex/latex.tex_t @@ -0,0 +1,82 @@ +%% Generated by Sphinx. +\def\sphinxdocclass{<%= docclass %>} +<% if latex_engine == 'lualatex' -%> +\IfFileExists{luatex85.sty} + {\RequirePackage{luatex85}} + {\ifdefined\luatexversion\ifnum\luatexversion>84\relax + \PackageError{sphinx} + {** With this LuaTeX (\the\luatexversion),Sphinx requires luatex85.sty **} + {** Add the LaTeX package luatex85 to your TeX installation, and try again **} + \endinput\fi\fi} +<% endif -%> +\documentclass[<%= papersize %>,<%= pointsize %><%= classoptions %>]{<%= wrapperclass %>} +\ifdefined\pdfpxdimen + \let\sphinxpxdimen\pdfpxdimen\else\newdimen\sphinxpxdimen +\fi \sphinxpxdimen=<%= pxunit %>\relax +<% if use_xindy -%> +%% turn off hyperref patch of \index as sphinx.xdy xindy module takes care of +%% suitable \hyperpage mark-up, working around hyperref-xindy incompatibility +\PassOptionsToPackage{hyperindex=false}{hyperref} +<% endif -%> +<%= passoptionstopackages %> +\PassOptionsToPackage{warn}{textcomp} +<%= inputenc %> +<%= utf8extra %> +<%= cmappkg %> +<%= fontenc %> +<%= amsmath %> +<%= multilingual %> +<%= substitutefont %> +<%= textcyrillic %> +<%= fontpkg %> +<%= textgreek %> +<%= fncychap %> +\usepackage<%= sphinxpkgoptions %>{sphinx} +<%= sphinxsetup %> +<%= fvset %> +<%= geometry %> +<%= extrapackages %> + +<%- for name, option in packages %> +<%- if option %> +\usepackage[<%= option %>]{<%= name %>} +<%- else %> +\usepackage{<%= name %>} +<%- endif %> +<%- endfor %> + +<%= hyperref %> +<%= contentsname %> +\usepackage{sphinxmessages} +<%= tocdepth %> +<%= secnumdepth %> +<%= preamble %> + +\title{<%= title %>} +\date{<%= date %>} +\release{<%= release %>} +\author{<%= author %>} +<%- if logofilename %> +\newcommand{\sphinxlogo}{\sphinxincludegraphics{<%= logofilename %>}\par} +<%- else %> +\newcommand{\sphinxlogo}{\vbox{}} +<%- endif %> +<%- if releasename or release %> +\renewcommand{\releasename}{<%= releasename or _('Release') | e %>} +<%- else %> +\renewcommand{\releasename}{} +<%- endif %> +<%= makeindex %> +\begin{document} +<%= shorthandoff %> +\pagestyle{empty} +<%= maketitle %> +\pagestyle{plain} +<%= tableofcontents %> +\pagestyle{normal} +<%= body %> +<%= atendofbody %> +<%= indices %> +\renewcommand{\indexname}{<%= _('Index') | e %>} +<%= printindex %> +\end{document} diff --git a/sphinx/sphinx/templates/latex/longtable.tex_t b/sphinx/sphinx/templates/latex/longtable.tex_t new file mode 100644 index 0000000..8d4cd74 --- /dev/null +++ b/sphinx/sphinx/templates/latex/longtable.tex_t @@ -0,0 +1,34 @@ +\begin{savenotes}\sphinxatlongtablestart\begin{longtable} +<%- if table.align in ('center', 'default') -%> + [c] +<%- elif table.align == 'left' -%> + [l] +<%- elif table.align == 'right' -%> + [r] +<%- endif -%> +<%= table.get_colspec() %> +<%- if table.caption -%> +\sphinxthelongtablecaptionisattop +\caption{<%= ''.join(table.caption) %>\strut}<%= labels %>\\*[\sphinxlongtablecapskipadjust] +\hline +<% elif labels -%> +\hline\noalign{\phantomsection<%= labels %>}% +<% else -%> +\hline +<% endif -%> +<%= ''.join(table.header) %> +\endfirsthead + +\multicolumn{<%= table.colcount %>}{c}% +{\makebox[0pt]{\sphinxtablecontinued{\tablename\ \thetable{} \textendash{} <%= _('continued from previous page') %>}}}\\ +\hline +<%= ''.join(table.header) %> +\endhead + +\hline +\multicolumn{<%= table.colcount %>}{r}{\makebox[0pt][r]{\sphinxtablecontinued{<%= _('continues on next page') %>}}}\\ +\endfoot + +\endlastfoot +<%= ''.join(table.body) %> +\end{longtable}\sphinxatlongtableend\end{savenotes} diff --git a/sphinx/sphinx/templates/latex/sphinxmessages.sty_t b/sphinx/sphinx/templates/latex/sphinxmessages.sty_t new file mode 100644 index 0000000..ef2750f --- /dev/null +++ b/sphinx/sphinx/templates/latex/sphinxmessages.sty_t @@ -0,0 +1,21 @@ +% +% sphinxmessages.sty +% +% message resources for Sphinx +% +\ProvidesPackage{sphinxmessages}[2019/01/04 v2.0 Localized LaTeX macros (Sphinx team)] + +\renewcommand{\literalblockcontinuedname}{<%= _('continued from previous page') | e %>} +\renewcommand{\literalblockcontinuesname}{<%= _('continues on next page') | e %>} +\renewcommand{\sphinxnonalphabeticalgroupname}{<%= _('Non-alphabetical') | e %>} +\renewcommand{\sphinxsymbolsname}{<%= _('Symbols') | e %>} +\renewcommand{\sphinxnumbersname}{<%= _('Numbers') | e %>} +\def\pageautorefname{<%= _('page') | e %>} + +<%= addtocaptions %>{\renewcommand{\figurename}{<%= figurename[0] | e | eabbr %>}} +\def\fnum@figure{\figurename\thefigure{}<%= figurename[1] | e %>} + +<%= addtocaptions %>{\renewcommand{\tablename}{<%= tablename[0] | e | eabbr %>}} +\def\fnum@table{\tablename\thetable{}<%= tablename[1] | e %>} + +<%= addtocaptions %>{\renewcommand{\literalblockname}{<%= literalblockname[0].strip() %>}} diff --git a/sphinx/sphinx/templates/latex/tabular.tex_t b/sphinx/sphinx/templates/latex/tabular.tex_t new file mode 100644 index 0000000..a0db7fa --- /dev/null +++ b/sphinx/sphinx/templates/latex/tabular.tex_t @@ -0,0 +1,27 @@ +\begin{savenotes}\sphinxattablestart +<% if table.align -%> + <%- if table.align in ('center', 'default') -%> + \centering + <%- elif table.align == 'left' -%> + \raggedright + <%- else -%> + \raggedleft + <%- endif %> +<%- else -%> + \centering +<%- endif %> +<% if table.caption -%> +\sphinxcapstartof{table} +\sphinxthecaptionisattop +\sphinxcaption{<%= ''.join(table.caption) %>}<%= labels %> +\sphinxaftertopcaption +<% elif labels -%> +\phantomsection<%= labels %>\nobreak +<% endif -%> +\begin{tabular}[t]<%= table.get_colspec() -%> +\hline +<%= ''.join(table.header) %> +<%=- ''.join(table.body) %> +\end{tabular} +\par +\sphinxattableend\end{savenotes} diff --git a/sphinx/sphinx/templates/latex/tabulary.tex_t b/sphinx/sphinx/templates/latex/tabulary.tex_t new file mode 100644 index 0000000..3236b79 --- /dev/null +++ b/sphinx/sphinx/templates/latex/tabulary.tex_t @@ -0,0 +1,27 @@ +\begin{savenotes}\sphinxattablestart +<% if table.align -%> + <%- if table.align in ('center', 'default') -%> + \centering + <%- elif table.align == 'left' -%> + \raggedright + <%- else -%> + \raggedleft + <%- endif %> +<%- else -%> + \centering +<%- endif %> +<% if table.caption -%> +\sphinxcapstartof{table} +\sphinxthecaptionisattop +\sphinxcaption{<%= ''.join(table.caption) %>}<%= labels %> +\sphinxaftertopcaption +<% elif labels -%> +\phantomsection<%= labels %>\nobreak +<% endif -%> +\begin{tabulary}{\linewidth}[t]<%= table.get_colspec() -%> +\hline +<%= ''.join(table.header) %> +<%=- ''.join(table.body) %> +\end{tabulary} +\par +\sphinxattableend\end{savenotes} diff --git a/sphinx/sphinx/templates/quickstart/Makefile.new_t b/sphinx/sphinx/templates/quickstart/Makefile.new_t new file mode 100644 index 0000000..1a52757 --- /dev/null +++ b/sphinx/sphinx/templates/quickstart/Makefile.new_t @@ -0,0 +1,21 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = {{ rsrcdir }} +BUILDDIR = {{ rbuilddir }} + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + diff --git a/sphinx/sphinx/templates/quickstart/Makefile_t b/sphinx/sphinx/templates/quickstart/Makefile_t new file mode 100644 index 0000000..7b656df --- /dev/null +++ b/sphinx/sphinx/templates/quickstart/Makefile_t @@ -0,0 +1,97 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +PAPER ?= +SOURCEDIR = {{ rsrcdir }} +BUILDDIR = {{ rbuilddir }} + +# Internal variables. +PAPEROPT_a4 = -D latex_elements.papersize=a4paper +PAPEROPT_letter = -D latex_elements.papersize=letterpaper +# $(O) is meant as a shortcut for $(SPHINXOPTS) +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) $(O) $(SOURCEDIR) +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) $(O) $(SOURCEDIR) + +.PHONY: help +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and an HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " applehelp to make an Apple Help Book" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files (you can set PAPER=a4 or PAPER=letter)" + @echo " latexpdf to make LaTeX files and then PDFs out of them" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " lualatexpdf to make LaTeX files and run them through lualatex" + @echo " xelatexpdf to make LaTeX files and run them through xelatex" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + @echo " coverage to run coverage check of the documentation (if enabled)" + @echo " dummy to check syntax errors of document sources" + +.PHONY: clean +clean: + rm -rf $(BUILDDIR)/* + +.PHONY: latexpdf +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +.PHONY: latexpdfja +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +.PHONY: lualatexpdf +lualatexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through lualatex..." + $(MAKE) PDFLATEX=lualatex -C $(BUILDDIR)/latex all-pdf + @echo "lualatex finished; the PDF files are in $(BUILDDIR)/latex." + +.PHONY: xelatexpdf +xelatexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through xelatex..." + $(MAKE) PDFLATEX=xelatex -C $(BUILDDIR)/latex all-pdf + @echo "xelatex finished; the PDF files are in $(BUILDDIR)/latex." + +.PHONY: info +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +.PHONY: gettext +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + +# Catch-all target: route all unknown targets to Sphinx +.PHONY: Makefile +%: Makefile + $(SPHINXBUILD) -b "$@" $(ALLSPHINXOPTS) "$(BUILDDIR)/$@" + diff --git a/sphinx/sphinx/templates/quickstart/conf.py_t b/sphinx/sphinx/templates/quickstart/conf.py_t new file mode 100644 index 0000000..8a20fc4 --- /dev/null +++ b/sphinx/sphinx/templates/quickstart/conf.py_t @@ -0,0 +1,116 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# 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. +# +{% if append_syspath -%} +import os +import sys +sys.path.insert(0, {{ module_path | repr }}) +{% else -%} +# import os +# import sys +{% if module_path -%} +# sys.path.insert(0, {{ module_path | repr }}) +{% else -%} +# sys.path.insert(0, os.path.abspath('.')) +{% endif -%} +{% endif %} + +# -- Project information ----------------------------------------------------- + +project = {{ project | repr }} +copyright = {{ copyright | repr }} +author = {{ author | repr }} + +{%- if version %} + +# The short X.Y version +version = {{ version | repr }} +{%- endif %} +{%- if release %} + +# The full version, including alpha/beta/rc tags +release = {{ release | repr }} +{%- endif %} + + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ +{%- for ext in extensions %} + '{{ ext }}', +{%- endfor %} +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['{{ dot }}templates'] + +{% if suffix != '.rst' -%} +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = {{ suffix | repr }} + +{% endif -%} +{% if master != 'index' -%} +# The master toctree document. +master_doc = {{ master | repr }} + +{% endif -%} +{% if language -%} +# 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 = {{ language | repr }} + +{% endif -%} +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = [{{ exclude_patterns }}] + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'alabaster' + +# 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 = ['{{ dot }}static'] +{%- if extensions %} + + +# -- Extension configuration ------------------------------------------------- +{%- endif %} +{%- if 'sphinx.ext.intersphinx' in extensions %} + +# -- Options for intersphinx extension --------------------------------------- + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'https://docs.python.org/3/': None} +{%- endif %} +{%- if 'sphinx.ext.todo' in extensions %} + +# -- Options for todo extension ---------------------------------------------- + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True +{%- endif %} diff --git a/sphinx/sphinx/templates/quickstart/make.bat.new_t b/sphinx/sphinx/templates/quickstart/make.bat.new_t new file mode 100644 index 0000000..1bb2f34 --- /dev/null +++ b/sphinx/sphinx/templates/quickstart/make.bat.new_t @@ -0,0 +1,36 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR={{ rsrcdir }} +set BUILDDIR={{ rbuilddir }} + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd + diff --git a/sphinx/sphinx/templates/quickstart/make.bat_t b/sphinx/sphinx/templates/quickstart/make.bat_t new file mode 100644 index 0000000..7745855 --- /dev/null +++ b/sphinx/sphinx/templates/quickstart/make.bat_t @@ -0,0 +1,109 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +pushd %~dp0 + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set BUILDDIR={{ rbuilddir }} +set SOURCEDIR={{ rsrcdir }} +set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% %O% %SOURCEDIR% +set I18NSPHINXOPTS=%SPHINXOPTS% %SOURCEDIR% +if NOT "%PAPER%" == "" ( + set ALLSPHINXOPTS=-D latex_elements.papersize=%PAPER%paper %ALLSPHINXOPTS% + set I18NSPHINXOPTS=-D latex_elements.papersize=%PAPER%paper %I18NSPHINXOPTS% +) + +if "%1" == "" goto help + +if "%1" == "help" ( + :help + echo.Please use `make ^` where ^ is one of + echo. html to make standalone HTML files + echo. dirhtml to make HTML files named index.html in directories + echo. singlehtml to make a single large HTML file + echo. pickle to make pickle files + echo. json to make JSON files + echo. htmlhelp to make HTML files and an HTML help project + echo. qthelp to make HTML files and a qthelp project + echo. devhelp to make HTML files and a Devhelp project + echo. epub to make an epub + echo. latex to make LaTeX files (you can set PAPER=a4 or PAPER=letter) + echo. latexpdf to make LaTeX files and then PDFs out of them + echo. text to make text files + echo. man to make manual pages + echo. texinfo to make Texinfo files + echo. gettext to make PO message catalogs + echo. changes to make an overview over all changed/added/deprecated items + echo. xml to make Docutils-native XML files + echo. pseudoxml to make pseudoxml-XML files for display purposes + echo. linkcheck to check all external links for integrity + echo. doctest to run all doctests embedded in the documentation if enabled + echo. coverage to run coverage check of the documentation if enabled + echo. dummy to check syntax errors of document sources + goto end +) + +if "%1" == "clean" ( + for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i + del /q /s %BUILDDIR%\* + goto end +) + +REM Check if sphinx-build is available and fallback to Python version if any +%SPHINXBUILD% 1>NUL 2>NUL +if errorlevel 9009 goto sphinx_python +goto sphinx_ok + +:sphinx_python + +set SPHINXBUILD=python -m sphinx.__init__ +%SPHINXBUILD% 2> nul +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +:sphinx_ok + +if "%1" == "latexpdf" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf + cd %~dp0 + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdfja" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf-ja + cd %~dp0 + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "gettext" ( + %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale + if errorlevel 1 exit /b 1 + goto end +) + +%SPHINXBUILD% -b %1 %ALLSPHINXOPTS% %BUILDDIR%/%1 +goto end + +:end +popd + diff --git a/sphinx/sphinx/templates/quickstart/master_doc.rst_t b/sphinx/sphinx/templates/quickstart/master_doc.rst_t new file mode 100644 index 0000000..3aa98af --- /dev/null +++ b/sphinx/sphinx/templates/quickstart/master_doc.rst_t @@ -0,0 +1,21 @@ +.. {{ project }} documentation master file, created by + sphinx-quickstart on {{ now }}. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to {{ project }}'s documentation! +==========={{ project_underline }}================= + +.. toctree:: + :maxdepth: {{ mastertocmaxdepth }} + :caption: Contents: + +{{ mastertoctree }} + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/sphinx/sphinx/templates/texinfo/Makefile b/sphinx/sphinx/templates/texinfo/Makefile new file mode 100644 index 0000000..e3b732c --- /dev/null +++ b/sphinx/sphinx/templates/texinfo/Makefile @@ -0,0 +1,57 @@ +# Makefile for Sphinx Texinfo output + +infodir ?= /usr/share/info + +MAKEINFO = makeinfo --no-split +MAKEINFO_html = makeinfo --no-split --html +MAKEINFO_plaintext = makeinfo --no-split --plaintext +TEXI2PDF = texi2pdf --batch --expand +INSTALL_INFO = install-info + +ALLDOCS = $(basename $(wildcard *.texi)) + +all: info +info: $(addsuffix .info,$(ALLDOCS)) +plaintext: $(addsuffix .txt,$(ALLDOCS)) +html: $(addsuffix .html,$(ALLDOCS)) +pdf: $(addsuffix .pdf,$(ALLDOCS)) + +install-info: info + for f in *.info; do \ + mkdir -p $(infodir) && \ + cp "$$f" $(infodir) && \ + $(INSTALL_INFO) --info-dir=$(infodir) "$$f" && \ + \ + FIGURE_DIR="`basename \"$$f\" .info`-figures" && \ + if [ -e "$$FIGURE_DIR" ]; then \ + cp -r "$$FIGURE_DIR" $(infodir) ; \ + fi; \ + done + +uninstall-info: info + for f in *.info; do \ + rm -f "$(infodir)/$$f" ; \ + rm -rf "$(infodir)/`basename '$$f' .info`-figures" && \ + $(INSTALL_INFO) --delete --info-dir=$(infodir) "$$f" ; \ + done + +%.info: %.texi + $(MAKEINFO) -o '$@' '$<' + +%.txt: %.texi + $(MAKEINFO_plaintext) -o '$@' '$<' + +%.html: %.texi + $(MAKEINFO_html) -o '$@' '$<' + +%.pdf: %.texi + -$(TEXI2PDF) '$<' + -$(TEXI2PDF) '$<' + -$(TEXI2PDF) '$<' + +clean: + rm -f *.info *.pdf *.txt *.html + rm -f *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ky *.pg + rm -f *.vr *.tp *.fn *.fns *.def *.defs *.cp *.cps *.ge *.ges *.mo + +.PHONY: all info plaintext html pdf install-info uninstall-info clean diff --git a/sphinx/sphinx/testing/__init__.py b/sphinx/sphinx/testing/__init__.py new file mode 100644 index 0000000..dd9f324 --- /dev/null +++ b/sphinx/sphinx/testing/__init__.py @@ -0,0 +1,14 @@ +""" + sphinx.testing + ~~~~~~~~~~~~~~ + + Sphinx test utilities + + You can require sphinx.testing pytest fixtures in a test module or a conftest + file like this: + + pytest_plugins = 'sphinx.testing.fixtures' + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" diff --git a/sphinx/sphinx/testing/comparer.py b/sphinx/sphinx/testing/comparer.py new file mode 100644 index 0000000..ddd8183 --- /dev/null +++ b/sphinx/sphinx/testing/comparer.py @@ -0,0 +1,103 @@ +""" + sphinx.testing.comparer + ~~~~~~~~~~~~~~~~~~~~~~~ + + Sphinx test comparer for pytest + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" +import difflib +import pathlib +from typing import Any, List, Union + + +class PathComparer: + """ + OS-independent path comparison. + + Windows path sep and posix path sep: + + >>> '\\to\\index' == PathComparer('/to/index') + True + >>> '\\to\\index' == PathComparer('/to/index2') + False + + Windows path with drive letters + + >>> 'C:\\to\\index' == PathComparer('/to/index') + True + >>> 'C:\\to\\index' == PathComparer('C:/to/index') + True + >>> 'C:\\to\\index' == PathComparer('D:/to/index') + False + """ + def __init__(self, path: Union[str, pathlib.Path]): + """ + :param str path: path string, it will be cast as pathlib.Path. + """ + self.path = pathlib.Path(path) + + def __str__(self) -> str: + return self.path.as_posix() + + def __repr__(self) -> str: + return "<{0.__class__.__name__}: '{0}'>".format(self) + + def __eq__(self, other: Union[str, pathlib.Path]) -> bool: # type: ignore + return not bool(self.ldiff(other)) + + def diff(self, other: Union[str, pathlib.Path]) -> List[str]: + """compare self and other. + + When different is not exist, return empty list. + + >>> PathComparer('/to/index').diff('C:\\to\\index') + [] + + When different is exist, return unified diff style list as: + + >>> PathComparer('/to/index').diff('C:\\to\\index2') + [ + '- C:/to/index' + '+ C:/to/index2' + '? +' + ] + """ + return self.ldiff(other) + + def ldiff(self, other: Union[str, pathlib.Path]) -> List[str]: + return self._diff( + self.path, + pathlib.Path(other), + ) + + def rdiff(self, other: Union[str, pathlib.Path]) -> List[str]: + return self._diff( + pathlib.Path(other), + self.path, + ) + + def _diff(self, lhs: pathlib.Path, rhs: pathlib.Path) -> List[str]: + if lhs == rhs: + return [] + + if lhs.drive or rhs.drive: + # If either has a drive letter compare by absolute path + s_path, o_path = lhs.absolute().as_posix(), rhs.absolute().as_posix() + else: + s_path, o_path = lhs.as_posix(), rhs.as_posix() + + if s_path == o_path: + return [] + + return [line.strip() for line in difflib.Differ().compare([s_path], [o_path])] + + +def pytest_assertrepr_compare(op: str, left: Any, right: Any) -> List[str]: + if isinstance(left, PathComparer) and op == "==": + return ['Comparing path:'] + left.ldiff(right) + elif isinstance(right, PathComparer) and op == "==": + return ['Comparing path:'] + right.rdiff(left) + else: + return [] diff --git a/sphinx/sphinx/testing/fixtures.py b/sphinx/sphinx/testing/fixtures.py new file mode 100644 index 0000000..eec3b42 --- /dev/null +++ b/sphinx/sphinx/testing/fixtures.py @@ -0,0 +1,238 @@ +""" + sphinx.testing.fixtures + ~~~~~~~~~~~~~~~~~~~~~~~ + + Sphinx test fixtures for pytest + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import os +import subprocess +import sys +from collections import namedtuple +from io import StringIO +from subprocess import PIPE +from typing import Any, Callable, Dict, Generator, Tuple + +import pytest + +from sphinx.testing import util +from sphinx.testing.util import SphinxTestApp, SphinxTestAppWrapperForSkipBuilding + + +@pytest.fixture(scope='session') +def rootdir() -> str: + return None + + +class SharedResult: + cache = {} # type: Dict[str, Dict[str, str]] + + def store(self, key: str, app_: SphinxTestApp) -> Any: + if key in self.cache: + return + data = { + 'status': app_._status.getvalue(), + 'warning': app_._warning.getvalue(), + } + self.cache[key] = data + + def restore(self, key: str) -> Dict[str, StringIO]: + if key not in self.cache: + return {} + data = self.cache[key] + return { + 'status': StringIO(data['status']), + 'warning': StringIO(data['warning']), + } + + +@pytest.fixture +def app_params(request: Any, test_params: Dict, shared_result: SharedResult, + sphinx_test_tempdir: str, rootdir: str) -> Tuple[Dict, Dict]: + """ + parameters that is specified by 'pytest.mark.sphinx' for + sphinx.application.Sphinx initialization + """ + + # ##### process pytest.mark.sphinx + + if hasattr(request.node, 'iter_markers'): # pytest-3.6.0 or newer + markers = request.node.iter_markers("sphinx") + else: + markers = request.node.get_marker("sphinx") + pargs = {} + kwargs = {} # type: Dict[str, Any] + + if markers is not None: + # to avoid stacking positional args + for info in reversed(list(markers)): + for i, a in enumerate(info.args): + pargs[i] = a + kwargs.update(info.kwargs) + + args = [pargs[i] for i in sorted(pargs.keys())] + + # ##### process pytest.mark.test_params + + if test_params['shared_result']: + if 'srcdir' in kwargs: + raise pytest.Exception('You can not spcify shared_result and ' + 'srcdir in same time.') + kwargs['srcdir'] = test_params['shared_result'] + restore = shared_result.restore(test_params['shared_result']) + kwargs.update(restore) + + # ##### prepare Application params + + testroot = kwargs.pop('testroot', 'root') + kwargs['srcdir'] = srcdir = sphinx_test_tempdir / kwargs.get('srcdir', testroot) + + # special support for sphinx/tests + if rootdir and not srcdir.exists(): + testroot_path = rootdir / ('test-' + testroot) + testroot_path.copytree(srcdir) + + return namedtuple('app_params', 'args,kwargs')(args, kwargs) # type: ignore + + +@pytest.fixture +def test_params(request: Any) -> Dict: + """ + test parameters that is specified by 'pytest.mark.test_params' + + :param Union[str] shared_result: + If the value is provided, app._status and app._warning objects will be + shared in the parametrized test functions and/or test functions that + have same 'shared_result' value. + **NOTE**: You can not specify shared_result and srcdir in same time. + """ + if hasattr(request.node, 'get_closest_marker'): # pytest-3.6.0 or newer + env = request.node.get_closest_marker('test_params') + else: + env = request.node.get_marker('test_params') + kwargs = env.kwargs if env else {} + result = { + 'shared_result': None, + } + result.update(kwargs) + + if (result['shared_result'] and not isinstance(result['shared_result'], str)): + raise pytest.Exception('You can only provide a string type of value ' + 'for "shared_result" ') + return result + + +@pytest.fixture(scope='function') +def app(test_params: Dict, app_params: Tuple[Dict, Dict], make_app: Callable, + shared_result: SharedResult) -> Generator[SphinxTestApp, None, None]: + """ + provides sphinx.application.Sphinx object + """ + args, kwargs = app_params + app_ = make_app(*args, **kwargs) + yield app_ + + print('# testroot:', kwargs.get('testroot', 'root')) + print('# builder:', app_.builder.name) + print('# srcdir:', app_.srcdir) + print('# outdir:', app_.outdir) + print('# status:', '\n' + app_._status.getvalue()) + print('# warning:', '\n' + app_._warning.getvalue()) + + if test_params['shared_result']: + shared_result.store(test_params['shared_result'], app_) + + +@pytest.fixture(scope='function') +def status(app: SphinxTestApp) -> StringIO: + """ + compat for testing with previous @with_app decorator + """ + return app._status + + +@pytest.fixture(scope='function') +def warning(app: SphinxTestApp) -> StringIO: + """ + compat for testing with previous @with_app decorator + """ + return app._warning + + +@pytest.fixture() +def make_app(test_params: Dict, monkeypatch: Any) -> Generator[Callable, None, None]: + """ + provides make_app function to initialize SphinxTestApp instance. + if you want to initialize 'app' in your test function. please use this + instead of using SphinxTestApp class directory. + """ + monkeypatch.setattr('sphinx.application.abspath', lambda x: x) + + apps = [] + syspath = sys.path[:] + + def make(*args, **kwargs): + status, warning = StringIO(), StringIO() + kwargs.setdefault('status', status) + kwargs.setdefault('warning', warning) + app_ = SphinxTestApp(*args, **kwargs) # type: Any + apps.append(app_) + if test_params['shared_result']: + app_ = SphinxTestAppWrapperForSkipBuilding(app_) + return app_ + yield make + + sys.path[:] = syspath + for app_ in reversed(apps): # clean up applications from the new ones + app_.cleanup() + + +@pytest.fixture +def shared_result() -> SharedResult: + return SharedResult() + + +@pytest.fixture(scope='module', autouse=True) +def _shared_result_cache() -> None: + SharedResult.cache.clear() + + +@pytest.fixture +def if_graphviz_found(app: SphinxTestApp) -> None: + """ + The test will be skipped when using 'if_graphviz_found' fixture and graphviz + dot command is not found. + """ + graphviz_dot = getattr(app.config, 'graphviz_dot', '') + try: + if graphviz_dot: + subprocess.run([graphviz_dot, '-V'], stdout=PIPE, stderr=PIPE) # show version + return + except OSError: # No such file or directory + pass + + pytest.skip('graphviz "dot" is not available') + + +@pytest.fixture(scope='session') +def sphinx_test_tempdir(tmpdir_factory: Any) -> "util.path": + """ + temporary directory that wrapped with `path` class. + """ + tmpdir = os.environ.get('SPHINX_TEST_TEMPDIR') # RemovedInSphinx40Warning + if tmpdir is None: + tmpdir = tmpdir_factory.getbasetemp() + + return util.path(tmpdir).abspath() + + +@pytest.fixture +def tempdir(tmpdir: str) -> "util.path": + """ + temporary directory that wrapped with `path` class. + this fixture is for compat with old test implementation. + """ + return util.path(tmpdir) diff --git a/sphinx/sphinx/testing/path.py b/sphinx/sphinx/testing/path.py new file mode 100644 index 0000000..4c3702e --- /dev/null +++ b/sphinx/sphinx/testing/path.py @@ -0,0 +1,215 @@ +""" + sphinx.testing.path + ~~~~~~~~~~~~~~~~~~~ + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import builtins +import os +import shutil +import sys +import warnings +from typing import Any, Callable, IO, List + +from sphinx.deprecation import RemovedInSphinx50Warning + + +FILESYSTEMENCODING = sys.getfilesystemencoding() or sys.getdefaultencoding() + + +class path(str): + """ + Represents a path which behaves like a string. + """ + + @property + def parent(self) -> "path": + """ + The name of the directory the file or directory is in. + """ + return self.__class__(os.path.dirname(self)) + + def basename(self) -> str: + return os.path.basename(self) + + def abspath(self) -> "path": + """ + Returns the absolute path. + """ + return self.__class__(os.path.abspath(self)) + + def isabs(self) -> bool: + """ + Returns ``True`` if the path is absolute. + """ + return os.path.isabs(self) + + def isdir(self) -> bool: + """ + Returns ``True`` if the path is a directory. + """ + return os.path.isdir(self) + + def isfile(self) -> bool: + """ + Returns ``True`` if the path is a file. + """ + return os.path.isfile(self) + + def islink(self) -> bool: + """ + Returns ``True`` if the path is a symbolic link. + """ + return os.path.islink(self) + + def ismount(self) -> bool: + """ + Returns ``True`` if the path is a mount point. + """ + return os.path.ismount(self) + + def rmtree(self, ignore_errors: bool = False, onerror: Callable = None) -> None: + """ + Removes the file or directory and any files or directories it may + contain. + + :param ignore_errors: + If ``True`` errors are silently ignored, otherwise an exception + is raised in case an error occurs. + + :param onerror: + A callback which gets called with the arguments `func`, `path` and + `exc_info`. `func` is one of :func:`os.listdir`, :func:`os.remove` + or :func:`os.rmdir`. `path` is the argument to the function which + caused it to fail and `exc_info` is a tuple as returned by + :func:`sys.exc_info`. + """ + shutil.rmtree(self, ignore_errors=ignore_errors, onerror=onerror) + + def copytree(self, destination: str, symlinks: bool = False) -> None: + """ + Recursively copy a directory to the given `destination`. If the given + `destination` does not exist it will be created. + + :param symlinks: + If ``True`` symbolic links in the source tree result in symbolic + links in the destination tree otherwise the contents of the files + pointed to by the symbolic links are copied. + """ + shutil.copytree(self, destination, symlinks=symlinks) + + def movetree(self, destination: str) -> None: + """ + Recursively move the file or directory to the given `destination` + similar to the Unix "mv" command. + + If the `destination` is a file it may be overwritten depending on the + :func:`os.rename` semantics. + """ + shutil.move(self, destination) + + move = movetree + + def unlink(self) -> None: + """ + Removes a file. + """ + os.unlink(self) + + def stat(self) -> Any: + """ + Returns a stat of the file. + """ + return os.stat(self) + + def utime(self, arg: Any) -> None: + os.utime(self, arg) + + def open(self, mode: str = 'r', **kwargs: Any) -> IO: + return open(self, mode, **kwargs) + + def write_text(self, text: str, encoding: str = 'utf-8', **kwargs: Any) -> None: + """ + Writes the given `text` to the file. + """ + with open(self, 'w', encoding=encoding, **kwargs) as f: + f.write(text) + + def text(self, encoding: str = 'utf-8', **kwargs: Any) -> str: + """ + Returns the text in the file. + """ + warnings.warn('Path.text() is deprecated. Please use read_text() instead.', + RemovedInSphinx50Warning, stacklevel=2) + return self.read_text(encoding, **kwargs) + + def read_text(self, encoding: str = 'utf-8', **kwargs: Any) -> str: + """ + Returns the text in the file. + """ + with open(self, encoding=encoding, **kwargs) as f: + return f.read() + + def bytes(self) -> builtins.bytes: + """ + Returns the bytes in the file. + """ + warnings.warn('Path.bytes() is deprecated. Please use read_bytes() instead.', + RemovedInSphinx50Warning, stacklevel=2) + return self.read_bytes() + + def read_bytes(self) -> builtins.bytes: + """ + Returns the bytes in the file. + """ + with open(self, mode='rb') as f: + return f.read() + + def write_bytes(self, bytes: str, append: bool = False) -> None: + """ + Writes the given `bytes` to the file. + + :param append: + If ``True`` given `bytes` are added at the end of the file. + """ + if append: + mode = 'ab' + else: + mode = 'wb' + with open(self, mode=mode) as f: + f.write(bytes) + + def exists(self) -> bool: + """ + Returns ``True`` if the path exist. + """ + return os.path.exists(self) + + def lexists(self) -> bool: + """ + Returns ``True`` if the path exists unless it is a broken symbolic + link. + """ + return os.path.lexists(self) + + def makedirs(self, mode: int = 0o777, exist_ok: bool = False) -> None: + """ + Recursively create directories. + """ + os.makedirs(self, mode, exist_ok=exist_ok) + + def joinpath(self, *args: Any) -> "path": + """ + Joins the path with the argument given and returns the result. + """ + return self.__class__(os.path.join(self, *map(self.__class__, args))) + + def listdir(self) -> List[str]: + return os.listdir(self) + + __div__ = __truediv__ = joinpath + + def __repr__(self) -> str: + return '%s(%s)' % (self.__class__.__name__, super().__repr__()) diff --git a/sphinx/sphinx/testing/restructuredtext.py b/sphinx/sphinx/testing/restructuredtext.py new file mode 100644 index 0000000..b25d7f9 --- /dev/null +++ b/sphinx/sphinx/testing/restructuredtext.py @@ -0,0 +1,35 @@ +""" + sphinx.testing.restructuredtext + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from os import path + +from docutils import nodes +from docutils.core import publish_doctree + +from sphinx.application import Sphinx +from sphinx.io import SphinxStandaloneReader +from sphinx.parsers import RSTParser +from sphinx.util.docutils import sphinx_domains + + +def parse(app: Sphinx, text: str, docname: str = 'index') -> nodes.document: + """Parse a string as reStructuredText with Sphinx application.""" + try: + app.env.temp_data['docname'] = docname + reader = SphinxStandaloneReader() + reader.setup(app) + parser = RSTParser() + parser.set_application(app) + with sphinx_domains(app.env): + return publish_doctree(text, path.join(app.srcdir, docname + '.rst'), + reader=reader, + parser=parser, + settings_overrides={'env': app.env, + 'gettext_compact': True}) + finally: + app.env.temp_data.pop('docname', None) diff --git a/sphinx/sphinx/testing/util.py b/sphinx/sphinx/testing/util.py new file mode 100644 index 0000000..450241f --- /dev/null +++ b/sphinx/sphinx/testing/util.py @@ -0,0 +1,197 @@ +""" + sphinx.testing.util + ~~~~~~~~~~~~~~~~~~~ + + Sphinx test suite utilities + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" +import os +import re +import sys +import warnings +from io import StringIO +from typing import Any, Dict, Generator, IO, List, Pattern +from xml.etree import ElementTree + +from docutils import nodes +from docutils.nodes import Node +from docutils.parsers.rst import directives, roles + +from sphinx import application, locale +from sphinx.builders.latex import LaTeXBuilder +from sphinx.deprecation import RemovedInSphinx40Warning +from sphinx.pycode import ModuleAnalyzer +from sphinx.testing.path import path +from sphinx.util.osutil import relpath + + +__all__ = [ + 'Struct', + 'SphinxTestApp', 'SphinxTestAppWrapperForSkipBuilding', + 'remove_unicode_literals', +] + + +def assert_re_search(regex: Pattern, text: str, flags: int = 0) -> None: + if not re.search(regex, text, flags): + assert False, '%r did not match %r' % (regex, text) + + +def assert_not_re_search(regex: Pattern, text: str, flags: int = 0) -> None: + if re.search(regex, text, flags): + assert False, '%r did match %r' % (regex, text) + + +def assert_startswith(thing: str, prefix: str) -> None: + if not thing.startswith(prefix): + assert False, '%r does not start with %r' % (thing, prefix) + + +def assert_node(node: Node, cls: Any = None, xpath: str = "", **kwargs: Any) -> None: + if cls: + if isinstance(cls, list): + assert_node(node, cls[0], xpath=xpath, **kwargs) + if cls[1:]: + if isinstance(cls[1], tuple): + assert_node(node, cls[1], xpath=xpath, **kwargs) + else: + assert isinstance(node, nodes.Element), \ + 'The node%s does not have any children' % xpath + assert len(node) == 1, \ + 'The node%s has %d child nodes, not one' % (xpath, len(node)) + assert_node(node[0], cls[1:], xpath=xpath + "[0]", **kwargs) + elif isinstance(cls, tuple): + assert isinstance(node, (list, nodes.Element)), \ + 'The node%s does not have any items' % xpath + assert len(node) == len(cls), \ + 'The node%s has %d child nodes, not %r' % (xpath, len(node), len(cls)) + for i, nodecls in enumerate(cls): + path = xpath + "[%d]" % i + assert_node(node[i], nodecls, xpath=path, **kwargs) + elif isinstance(cls, str): + assert node == cls, 'The node %r is not %r: %r' % (xpath, cls, node) + else: + assert isinstance(node, cls), \ + 'The node%s is not subclass of %r: %r' % (xpath, cls, node) + + if kwargs: + assert isinstance(node, nodes.Element), \ + 'The node%s does not have any attributes' % xpath + + for key, value in kwargs.items(): + assert key in node, \ + 'The node%s does not have %r attribute: %r' % (xpath, key, node) + assert node[key] == value, \ + 'The node%s[%s] is not %r: %r' % (xpath, key, value, node[key]) + + +def etree_parse(path: str) -> Any: + with warnings.catch_warnings(record=False): + warnings.filterwarnings("ignore", category=DeprecationWarning) + return ElementTree.parse(path) + + +class Struct: + def __init__(self, **kwargs: Any) -> None: + self.__dict__.update(kwargs) + + +class SphinxTestApp(application.Sphinx): + """ + A subclass of :class:`Sphinx` that runs on the test root, with some + better default values for the initialization parameters. + """ + _status = None # type: StringIO + _warning = None # type: StringIO + + def __init__(self, buildername: str = 'html', srcdir: path = None, freshenv: bool = False, + confoverrides: Dict = None, status: IO = None, warning: IO = None, + tags: List[str] = None, docutilsconf: str = None) -> None: + + if docutilsconf is not None: + (srcdir / 'docutils.conf').write_text(docutilsconf) + + builddir = srcdir / '_build' + confdir = srcdir + outdir = builddir.joinpath(buildername) + outdir.makedirs(exist_ok=True) + doctreedir = builddir.joinpath('doctrees') + doctreedir.makedirs(exist_ok=True) + if confoverrides is None: + confoverrides = {} + warningiserror = False + + self._saved_path = sys.path[:] + self._saved_directives = directives._directives.copy() # type: ignore + self._saved_roles = roles._roles.copy() # type: ignore + + self._saved_nodeclasses = {v for v in dir(nodes.GenericNodeVisitor) + if v.startswith('visit_')} + + try: + super().__init__(srcdir, confdir, outdir, doctreedir, + buildername, confoverrides, status, warning, + freshenv, warningiserror, tags) + except Exception: + self.cleanup() + raise + + def cleanup(self, doctrees: bool = False) -> None: + ModuleAnalyzer.cache.clear() + LaTeXBuilder.usepackages = [] + locale.translators.clear() + sys.path[:] = self._saved_path + sys.modules.pop('autodoc_fodder', None) + directives._directives = self._saved_directives # type: ignore + roles._roles = self._saved_roles # type: ignore + for method in dir(nodes.GenericNodeVisitor): + if method.startswith('visit_') and \ + method not in self._saved_nodeclasses: + delattr(nodes.GenericNodeVisitor, 'visit_' + method[6:]) + delattr(nodes.GenericNodeVisitor, 'depart_' + method[6:]) + + def __repr__(self) -> str: + return '<%s buildername=%r>' % (self.__class__.__name__, self.builder.name) + + +class SphinxTestAppWrapperForSkipBuilding: + """ + This class is a wrapper for SphinxTestApp to speed up the test by skipping + `app.build` process if it is already built and there is even one output + file. + """ + + def __init__(self, app_: SphinxTestApp) -> None: + self.app = app_ + + def __getattr__(self, name: str) -> Any: + return getattr(self.app, name) + + def build(self, *args: Any, **kwargs: Any) -> None: + if not self.app.outdir.listdir(): # type: ignore + # if listdir is empty, do build. + self.app.build(*args, **kwargs) + # otherwise, we can use built cache + + +_unicode_literals_re = re.compile(r'u(".*?")|u(\'.*?\')') + + +def remove_unicode_literals(s: str) -> str: + warnings.warn('remove_unicode_literals() is deprecated.', + RemovedInSphinx40Warning, stacklevel=2) + return _unicode_literals_re.sub(lambda x: x.group(1) or x.group(2), s) + + +def find_files(root: str, suffix: bool = None) -> Generator[str, None, None]: + for dirpath, dirs, files in os.walk(root, followlinks=True): + dirpath = path(dirpath) + for f in [f for f in files if not suffix or f.endswith(suffix)]: # type: ignore + fpath = dirpath / f + yield relpath(fpath, root) + + +def strip_escseq(text: str) -> str: + return re.sub('\x1b.*?m', '', text) diff --git a/sphinx/sphinx/texinputs/LICRcyr2utf8.xdy b/sphinx/sphinx/texinputs/LICRcyr2utf8.xdy new file mode 100644 index 0000000..a9ca1c8 --- /dev/null +++ b/sphinx/sphinx/texinputs/LICRcyr2utf8.xdy @@ -0,0 +1,101 @@ +;; -*- coding: utf-8; mode: Lisp; -*- +;; style file for xindy +;; filename: LICRcyr2utf8.xdy +;; description: style file for xindy which maps back LaTeX Internal +;; Character Representation of Cyrillic to utf-8 +;; usage: for use with pdflatex produced .idx files. +;; Contributed by the Sphinx team, July 2018. +(merge-rule "\IeC {\'\CYRG }" "Ѓ" :string) +(merge-rule "\IeC {\'\CYRK }" "Ќ" :string) +(merge-rule "\IeC {\'\cyrg }" "ѓ" :string) +(merge-rule "\IeC {\'\cyrk }" "ќ" :string) +(merge-rule "\IeC {\CYRA }" "А" :string) +(merge-rule "\IeC {\CYRB }" "Б" :string) +(merge-rule "\IeC {\CYRC }" "Ц" :string) +(merge-rule "\IeC {\CYRCH }" "Ч" :string) +(merge-rule "\IeC {\CYRD }" "Д" :string) +(merge-rule "\IeC {\CYRDJE }" "Ђ" :string) +(merge-rule "\IeC {\CYRDZE }" "Ѕ" :string) +(merge-rule "\IeC {\CYRDZHE }" "Џ" :string) +(merge-rule "\IeC {\CYRE }" "Е" :string) +(merge-rule "\IeC {\CYREREV }" "Э" :string) +(merge-rule "\IeC {\CYRERY }" "Ы" :string) +(merge-rule "\IeC {\CYRF }" "Ф" :string) +(merge-rule "\IeC {\CYRG }" "Г" :string) +(merge-rule "\IeC {\CYRGUP }" "Ґ" :string) +(merge-rule "\IeC {\CYRH }" "Х" :string) +(merge-rule "\IeC {\CYRHRDSN }" "Ъ" :string) +(merge-rule "\IeC {\CYRI }" "И" :string) +(merge-rule "\IeC {\CYRIE }" "Є" :string) +(merge-rule "\IeC {\CYRII }" "І" :string) +(merge-rule "\IeC {\CYRISHRT }" "Й" :string) +(merge-rule "\IeC {\CYRJE }" "Ј" :string) +(merge-rule "\IeC {\CYRK }" "К" :string) +(merge-rule "\IeC {\CYRL }" "Л" :string) +(merge-rule "\IeC {\CYRLJE }" "Љ" :string) +(merge-rule "\IeC {\CYRM }" "М" :string) +(merge-rule "\IeC {\CYRN }" "Н" :string) +(merge-rule "\IeC {\CYRNJE }" "Њ" :string) +(merge-rule "\IeC {\CYRO }" "О" :string) +(merge-rule "\IeC {\CYRP }" "П" :string) +(merge-rule "\IeC {\CYRR }" "Р" :string) +(merge-rule "\IeC {\CYRS }" "С" :string) +(merge-rule "\IeC {\CYRSFTSN }" "Ь" :string) +(merge-rule "\IeC {\CYRSH }" "Ш" :string) +(merge-rule "\IeC {\CYRSHCH }" "Щ" :string) +(merge-rule "\IeC {\CYRT }" "Т" :string) +(merge-rule "\IeC {\CYRTSHE }" "Ћ" :string) +(merge-rule "\IeC {\CYRU }" "У" :string) +(merge-rule "\IeC {\CYRUSHRT }" "Ў" :string) +(merge-rule "\IeC {\CYRV }" "В" :string) +(merge-rule "\IeC {\CYRYA }" "Я" :string) +(merge-rule "\IeC {\CYRYI }" "Ї" :string) +(merge-rule "\IeC {\CYRYO }" "Ё" :string) +(merge-rule "\IeC {\CYRYU }" "Ю" :string) +(merge-rule "\IeC {\CYRZ }" "З" :string) +(merge-rule "\IeC {\CYRZH }" "Ж" :string) +(merge-rule "\IeC {\cyra }" "а" :string) +(merge-rule "\IeC {\cyrb }" "б" :string) +(merge-rule "\IeC {\cyrc }" "ц" :string) +(merge-rule "\IeC {\cyrch }" "ч" :string) +(merge-rule "\IeC {\cyrd }" "д" :string) +(merge-rule "\IeC {\cyrdje }" "ђ" :string) +(merge-rule "\IeC {\cyrdze }" "ѕ" :string) +(merge-rule "\IeC {\cyrdzhe }" "џ" :string) +(merge-rule "\IeC {\cyre }" "е" :string) +(merge-rule "\IeC {\cyrerev }" "э" :string) +(merge-rule "\IeC {\cyrery }" "ы" :string) +(merge-rule "\IeC {\cyrf }" "ф" :string) +(merge-rule "\IeC {\cyrg }" "г" :string) +(merge-rule "\IeC {\cyrgup }" "ґ" :string) +(merge-rule "\IeC {\cyrh }" "х" :string) +(merge-rule "\IeC {\cyrhrdsn }" "ъ" :string) +(merge-rule "\IeC {\cyri }" "и" :string) +(merge-rule "\IeC {\cyrie }" "є" :string) +(merge-rule "\IeC {\cyrii }" "і" :string) +(merge-rule "\IeC {\cyrishrt }" "й" :string) +(merge-rule "\IeC {\cyrje }" "ј" :string) +(merge-rule "\IeC {\cyrk }" "к" :string) +(merge-rule "\IeC {\cyrl }" "л" :string) +(merge-rule "\IeC {\cyrlje }" "љ" :string) +(merge-rule "\IeC {\cyrm }" "м" :string) +(merge-rule "\IeC {\cyrn }" "н" :string) +(merge-rule "\IeC {\cyrnje }" "њ" :string) +(merge-rule "\IeC {\cyro }" "о" :string) +(merge-rule "\IeC {\cyrp }" "п" :string) +(merge-rule "\IeC {\cyrr }" "р" :string) +(merge-rule "\IeC {\cyrs }" "с" :string) +(merge-rule "\IeC {\cyrsftsn }" "ь" :string) +(merge-rule "\IeC {\cyrsh }" "ш" :string) +(merge-rule "\IeC {\cyrshch }" "щ" :string) +(merge-rule "\IeC {\cyrt }" "т" :string) +(merge-rule "\IeC {\cyrtshe }" "ћ" :string) +(merge-rule "\IeC {\cyru }" "у" :string) +(merge-rule "\IeC {\cyrushrt }" "ў" :string) +(merge-rule "\IeC {\cyrv }" "в" :string) +(merge-rule "\IeC {\cyrya }" "я" :string) +(merge-rule "\IeC {\cyryi }" "ї" :string) +(merge-rule "\IeC {\cyryo }" "ё" :string) +(merge-rule "\IeC {\cyryu }" "ю" :string) +(merge-rule "\IeC {\cyrz }" "з" :string) +(merge-rule "\IeC {\cyrzh }" "ж" :string) diff --git a/sphinx/sphinx/texinputs/LICRlatin2utf8.xdy b/sphinx/sphinx/texinputs/LICRlatin2utf8.xdy new file mode 100644 index 0000000..31c80f9 --- /dev/null +++ b/sphinx/sphinx/texinputs/LICRlatin2utf8.xdy @@ -0,0 +1,239 @@ +;; style file for xindy +;; filename: LICRlatin2utf8.xdy +;; description: style file for xindy which maps back LaTeX Internal +;; Character Representation of letters (as arising in .idx index +;; file) to UTF-8 encoding for correct sorting by xindy. +;; usage: for use with the pdflatex engine, +;; *not* for use with xelatex or lualatex. +;; +;; This is based upon xindy's distributed file tex/inputenc/utf8.xdy. +;; The modifications include: +;; +;; - Updates for compatibility with current LaTeX macro encoding. +;; +;; - Systematic usage of the \IeC {...} mark-up, because mark-up in +;; tex/inputenc/utf8.xdy was using it on seemingly random basis, and +;; Sphinx coercing of xindy usability for both Latin and Cyrillic scripts +;; with pdflatex requires its systematic presence here. +;; +;; - Support for some extra letters: Ÿ, Ŋ, ŋ, Œ, œ, IJ, ij, ȷ and ẞ. +;; +;; Indeed Sphinx needs to support for pdflatex engine all Unicode letters +;; available in TeX T1 font encoding. The above letters are found in +;; that encoding but not in the Latin1, 2, 3 charsets which are those +;; covered by original tex/inputenc/utf8.xdy. +;; +;; - There is a problem that ȷ is not supported out-of-the box by LaTeX +;; with inputenc, one must add explicitely +;; \DeclareUnicodeCharacter{0237}{\j} +;; to preamble of LaTeX document. However this character is not supported +;; by the TeX "times" font used by default by Sphinx for pdflatex engine. +;; +;; **Update**: since LaTeX 2018/12/01, the \j as well as \SS, \k{} and +;; \.{} need no extra user declaration anymore. +;; +;; - ẞ needs \DeclareUnicodeCharacter{1E9E}{\SS} (but ß needs no extra set-up). +;; +;; - U+02DB (˛) and U+02D9 (˙) are also not supported by inputenc +;; out of the box and require +;; \DeclareUnicodeCharacter{02DB}{\k{}} +;; \DeclareUnicodeCharacter{02D9}{\.{}} +;; to be added to preamble. +;; +;; - U+0127 ħ and U+0126 Ħ are absent from TeX T1+TS1 font encodings. +;; +;; - Characters Ŋ and ŋ are not supported by TeX font "times" used by +;; default by Sphinx for pdflatex engine but they are supported by +;; some TeX fonts, in particular by the default LaTeX font for T1 +;; encoding. +;; +;; - " and ~ must be escaped as ~" and resp. ~~ in xindy merge rules. +;; +;; Contributed by the Sphinx team, July 2018. +;; +;; See sphinx.xdy for superior figures, as they are escaped by LaTeX writer. +(merge-rule "\IeC {\textonesuperior }" "¹" :string) +(merge-rule "\IeC {\texttwosuperior }" "²" :string) +(merge-rule "\IeC {\textthreesuperior }" "³" :string) +(merge-rule "\IeC {\'a}" "á" :string) +(merge-rule "\IeC {\'A}" "Á" :string) +(merge-rule "\IeC {\`a}" "à" :string) +(merge-rule "\IeC {\`A}" "À" :string) +(merge-rule "\IeC {\^a}" "â" :string) +(merge-rule "\IeC {\^A}" "Â" :string) +(merge-rule "\IeC {\~"a}" "ä" :string) +(merge-rule "\IeC {\~"A}" "Ä" :string) +(merge-rule "\IeC {\~~a}" "ã" :string) +(merge-rule "\IeC {\~~A}" "Ã" :string) +(merge-rule "\IeC {\c c}" "ç" :string) +(merge-rule "\IeC {\c C}" "Ç" :string) +(merge-rule "\IeC {\'c}" "ć" :string) +(merge-rule "\IeC {\'C}" "Ć" :string) +(merge-rule "\IeC {\^c}" "ĉ" :string) +(merge-rule "\IeC {\^C}" "Ĉ" :string) +(merge-rule "\IeC {\.c}" "ċ" :string) +(merge-rule "\IeC {\.C}" "Ċ" :string) +(merge-rule "\IeC {\c s}" "ş" :string) +(merge-rule "\IeC {\c S}" "Ş" :string) +(merge-rule "\IeC {\c t}" "ţ" :string) +(merge-rule "\IeC {\c T}" "Ţ" :string) +(merge-rule "\IeC {\-}" "­" :string); soft hyphen +(merge-rule "\IeC {\textdiv }" "÷" :string) +(merge-rule "\IeC {\'e}" "é" :string) +(merge-rule "\IeC {\'E}" "É" :string) +(merge-rule "\IeC {\`e}" "è" :string) +(merge-rule "\IeC {\`E}" "È" :string) +(merge-rule "\IeC {\^e}" "ê" :string) +(merge-rule "\IeC {\^E}" "Ê" :string) +(merge-rule "\IeC {\~"e}" "ë" :string) +(merge-rule "\IeC {\~"E}" "Ë" :string) +(merge-rule "\IeC {\^g}" "ĝ" :string) +(merge-rule "\IeC {\^G}" "Ĝ" :string) +(merge-rule "\IeC {\.g}" "ġ" :string) +(merge-rule "\IeC {\.G}" "Ġ" :string) +(merge-rule "\IeC {\^h}" "ĥ" :string) +(merge-rule "\IeC {\^H}" "Ĥ" :string) +(merge-rule "\IeC {\H o}" "ő" :string) +(merge-rule "\IeC {\H O}" "Ő" :string) +(merge-rule "\IeC {\textacutedbl }" "˝" :string) +(merge-rule "\IeC {\H u}" "ű" :string) +(merge-rule "\IeC {\H U}" "Ű" :string) +(merge-rule "\IeC {\ae }" "æ" :string) +(merge-rule "\IeC {\AE }" "Æ" :string) +(merge-rule "\IeC {\textcopyright }" "©" :string) +(merge-rule "\IeC {\c \ }" "¸" :string) +(merge-rule "\IeC {\dh }" "ð" :string) +(merge-rule "\IeC {\DH }" "Ð" :string) +(merge-rule "\IeC {\dj }" "đ" :string) +(merge-rule "\IeC {\DJ }" "Đ" :string) +(merge-rule "\IeC {\guillemotleft }" "«" :string) +(merge-rule "\IeC {\guillemotright }" "»" :string) +(merge-rule "\IeC {\'\i }" "í" :string) +(merge-rule "\IeC {\`\i }" "ì" :string) +(merge-rule "\IeC {\^\i }" "î" :string) +(merge-rule "\IeC {\~"\i }" "ï" :string) +(merge-rule "\IeC {\i }" "ı" :string) +(merge-rule "\IeC {\^\j }" "ĵ" :string) +(merge-rule "\IeC {\k {}}" "˛" :string) +(merge-rule "\IeC {\l }" "ł" :string) +(merge-rule "\IeC {\L }" "Ł" :string) +(merge-rule "\IeC {\nobreakspace }" " " :string) +(merge-rule "\IeC {\o }" "ø" :string) +(merge-rule "\IeC {\O }" "Ø" :string) +(merge-rule "\IeC {\textsterling }" "£" :string) +(merge-rule "\IeC {\textparagraph }" "¶" :string) +(merge-rule "\IeC {\ss }" "ß" :string) +(merge-rule "\IeC {\textsection }" "§" :string) +(merge-rule "\IeC {\textbrokenbar }" "¦" :string) +(merge-rule "\IeC {\textcent }" "¢" :string) +(merge-rule "\IeC {\textcurrency }" "¤" :string) +(merge-rule "\IeC {\textdegree }" "°" :string) +(merge-rule "\IeC {\textexclamdown }" "¡" :string) +(merge-rule "\IeC {\texthbar }" "ħ" :string) +(merge-rule "\IeC {\textHbar }" "Ħ" :string) +(merge-rule "\IeC {\textonehalf }" "½" :string) +(merge-rule "\IeC {\textonequarter }" "¼" :string) +(merge-rule "\IeC {\textordfeminine }" "ª" :string) +(merge-rule "\IeC {\textordmasculine }" "º" :string) +(merge-rule "\IeC {\textperiodcentered }" "·" :string) +(merge-rule "\IeC {\textquestiondown }" "¿" :string) +(merge-rule "\IeC {\textregistered }" "®" :string) +(merge-rule "\IeC {\textthreequarters }" "¾" :string) +(merge-rule "\IeC {\textyen }" "¥" :string) +(merge-rule "\IeC {\th }" "þ" :string) +(merge-rule "\IeC {\TH }" "Þ" :string) +(merge-rule "\IeC {\'I}" "Í" :string) +(merge-rule "\IeC {\`I}" "Ì" :string) +(merge-rule "\IeC {\^I}" "Î" :string) +(merge-rule "\IeC {\~"I}" "Ï" :string) +(merge-rule "\IeC {\.I}" "İ" :string) +(merge-rule "\IeC {\^J}" "Ĵ" :string) +(merge-rule "\IeC {\k a}" "ą" :string) +(merge-rule "\IeC {\k A}" "Ą" :string) +(merge-rule "\IeC {\k e}" "ę" :string) +(merge-rule "\IeC {\k E}" "Ę" :string) +(merge-rule "\IeC {\'l}" "ĺ" :string) +(merge-rule "\IeC {\'L}" "Ĺ" :string) +(merge-rule "\IeC {\textlnot }" "¬" :string) +(merge-rule "\IeC {\textmu }" "µ" :string) +(merge-rule "\IeC {\'n}" "ń" :string) +(merge-rule "\IeC {\'N}" "Ń" :string) +(merge-rule "\IeC {\~~n}" "ñ" :string) +(merge-rule "\IeC {\~~N}" "Ñ" :string) +(merge-rule "\IeC {\'o}" "ó" :string) +(merge-rule "\IeC {\'O}" "Ó" :string) +(merge-rule "\IeC {\`o}" "ò" :string) +(merge-rule "\IeC {\`O}" "Ò" :string) +(merge-rule "\IeC {\^o}" "ô" :string) +(merge-rule "\IeC {\^O}" "Ô" :string) +(merge-rule "\IeC {\~"o}" "ö" :string) +(merge-rule "\IeC {\~"O}" "Ö" :string) +(merge-rule "\IeC {\~~o}" "õ" :string) +(merge-rule "\IeC {\~~O}" "Õ" :string) +(merge-rule "\IeC {\textpm }" "±" :string) +(merge-rule "\IeC {\r a}" "å" :string) +(merge-rule "\IeC {\r A}" "Å" :string) +(merge-rule "\IeC {\'r}" "ŕ" :string) +(merge-rule "\IeC {\'R}" "Ŕ" :string) +(merge-rule "\IeC {\r u}" "ů" :string) +(merge-rule "\IeC {\r U}" "Ů" :string) +(merge-rule "\IeC {\'s}" "ś" :string) +(merge-rule "\IeC {\'S}" "Ś" :string) +(merge-rule "\IeC {\^s}" "ŝ" :string) +(merge-rule "\IeC {\^S}" "Ŝ" :string) +(merge-rule "\IeC {\textasciidieresis }" "¨" :string) +(merge-rule "\IeC {\textasciimacron }" "¯" :string) +(merge-rule "\IeC {\.{}}" "˙" :string) +(merge-rule "\IeC {\textasciiacute }" "´" :string) +(merge-rule "\IeC {\texttimes }" "×" :string) +(merge-rule "\IeC {\u a}" "ă" :string) +(merge-rule "\IeC {\u A}" "Ă" :string) +(merge-rule "\IeC {\u g}" "ğ" :string) +(merge-rule "\IeC {\u G}" "Ğ" :string) +(merge-rule "\IeC {\textasciibreve }" "˘" :string) +(merge-rule "\IeC {\'u}" "ú" :string) +(merge-rule "\IeC {\'U}" "Ú" :string) +(merge-rule "\IeC {\`u}" "ù" :string) +(merge-rule "\IeC {\`U}" "Ù" :string) +(merge-rule "\IeC {\^u}" "û" :string) +(merge-rule "\IeC {\^U}" "Û" :string) +(merge-rule "\IeC {\~"u}" "ü" :string) +(merge-rule "\IeC {\~"U}" "Ü" :string) +(merge-rule "\IeC {\u u}" "ŭ" :string) +(merge-rule "\IeC {\u U}" "Ŭ" :string) +(merge-rule "\IeC {\v c}" "č" :string) +(merge-rule "\IeC {\v C}" "Č" :string) +(merge-rule "\IeC {\v d}" "ď" :string) +(merge-rule "\IeC {\v D}" "Ď" :string) +(merge-rule "\IeC {\v e}" "ě" :string) +(merge-rule "\IeC {\v E}" "Ě" :string) +(merge-rule "\IeC {\v l}" "ľ" :string) +(merge-rule "\IeC {\v L}" "Ľ" :string) +(merge-rule "\IeC {\v n}" "ň" :string) +(merge-rule "\IeC {\v N}" "Ň" :string) +(merge-rule "\IeC {\v r}" "ř" :string) +(merge-rule "\IeC {\v R}" "Ř" :string) +(merge-rule "\IeC {\v s}" "š" :string) +(merge-rule "\IeC {\v S}" "Š" :string) +(merge-rule "\IeC {\textasciicaron }" "ˇ" :string) +(merge-rule "\IeC {\v t}" "ť" :string) +(merge-rule "\IeC {\v T}" "Ť" :string) +(merge-rule "\IeC {\v z}" "ž" :string) +(merge-rule "\IeC {\v Z}" "Ž" :string) +(merge-rule "\IeC {\'y}" "ý" :string) +(merge-rule "\IeC {\'Y}" "Ý" :string) +(merge-rule "\IeC {\~"y}" "ÿ" :string) +(merge-rule "\IeC {\'z}" "ź" :string) +(merge-rule "\IeC {\'Z}" "Ź" :string) +(merge-rule "\IeC {\.z}" "ż" :string) +(merge-rule "\IeC {\.Z}" "Ż" :string) +;; letters not in Latin1, 2, 3 but available in TeX T1 font encoding +(merge-rule "\IeC {\~"Y}" "Ÿ" :string) +(merge-rule "\IeC {\NG }" "Ŋ" :string) +(merge-rule "\IeC {\ng }" "ŋ" :string) +(merge-rule "\IeC {\OE }" "Œ" :string) +(merge-rule "\IeC {\oe }" "œ" :string) +(merge-rule "\IeC {\IJ }" "IJ" :string) +(merge-rule "\IeC {\ij }" "ij" :string) +(merge-rule "\IeC {\j }" "ȷ" :string) +(merge-rule "\IeC {\SS }" "ẞ" :string) diff --git a/sphinx/sphinx/texinputs/LatinRules.xdy b/sphinx/sphinx/texinputs/LatinRules.xdy new file mode 100644 index 0000000..99f14a2 --- /dev/null +++ b/sphinx/sphinx/texinputs/LatinRules.xdy @@ -0,0 +1,607 @@ +;; style file for xindy +;; filename: LatinRules.xdy +;; +;; It is based upon xindy's files lang/general/utf8.xdy and +;; lang/general/utf8-lang.xdy which implement +;; "a general sorting order for Western European languages" +;; +;; The aim for Sphinx is to be able to index in a Cyrillic document +;; also terms using the Latin alphabets, inclusive of letters +;; with diacritics. To this effect the xindy rules from lang/general +;; got manually re-coded to avoid collisions with the encoding +;; done by xindy for sorting words in Cyrillic languages, which was +;; observed not to use bytes with octal encoding 0o266 or higher. +;; +;; So here we use only 0o266 or higher bytes. +;; (Ŋ, ŋ, IJ, and ij are absent from +;; lang/general/utf8.xdy and not included here) +;; Contributed by the Sphinx team, 2018. + +(define-letter-group "A" :prefixes ("")) +(define-letter-group "B" :after "A" :prefixes ("")) +(define-letter-group "C" :after "B" :prefixes ("")) +(define-letter-group "D" :after "C" :prefixes ("")) +(define-letter-group "E" :after "D" :prefixes ("")) +(define-letter-group "F" :after "E" :prefixes ("")) +(define-letter-group "G" :after "F" :prefixes ("")) +(define-letter-group "H" :after "G" :prefixes ("")) +(define-letter-group "I" :after "H" :prefixes ("")) +(define-letter-group "J" :after "I" :prefixes ("")) +(define-letter-group "K" :after "J" :prefixes ("")) +(define-letter-group "L" :after "K" :prefixes ("")) +(define-letter-group "M" :after "L" :prefixes ("")) +(define-letter-group "N" :after "M" :prefixes ("")) +(define-letter-group "O" :after "N" :prefixes ("")) +(define-letter-group "P" :after "O" :prefixes ("")) +(define-letter-group "Q" :after "P" :prefixes ("")) +(define-letter-group "R" :after "Q" :prefixes ("")) +(define-letter-group "S" :after "R" :prefixes ("")) +(define-letter-group "T" :after "S" :prefixes ("")) +(define-letter-group "U" :after "T" :prefixes ("")) +(define-letter-group "V" :after "U" :prefixes ("")) +(define-letter-group "W" :after "V" :prefixes ("")) +(define-letter-group "X" :after "W" :prefixes ("")) +(define-letter-group "Y" :after "X" :prefixes ("")) +(define-letter-group "Z" :after "Y" :prefixes ("")) + +(define-rule-set "sphinx-xy-alphabetize" + + :rules (("À" "" :string) + ("Ă" "" :string) + ("â" "" :string) + ("Ä" "" :string) + ("à" "" :string) + ("Å" "" :string) + ("Ã" "" :string) + ("Á" "" :string) + ("á" "" :string) + ("ã" "" :string) + ("Â" "" :string) + ("ă" "" :string) + ("å" "" :string) + ("ą" "" :string) + ("ä" "" :string) + ("Ą" "" :string) + ("æ" "" :string) + ("Æ" "" :string) + ("ć" "" :string) + ("ĉ" "" :string) + ("ç" "" :string) + ("Č" "" :string) + ("č" "" :string) + ("Ĉ" "" :string) + ("Ç" "" :string) + ("Ć" "" :string) + ("ď" "" :string) + ("Đ" "" :string) + ("Ď" "" :string) + ("đ" "" :string) + ("ê" "" :string) + ("Ę" "" :string) + ("Ě" "" :string) + ("ë" "" :string) + ("ě" "" :string) + ("é" "" :string) + ("È" "" :string) + ("Ë" "" :string) + ("É" "" :string) + ("è" "" :string) + ("Ê" "" :string) + ("ę" "" :string) + ("ĝ" "" :string) + ("ğ" "" :string) + ("Ğ" "" :string) + ("Ĝ" "" :string) + ("ĥ" "" :string) + ("Ĥ" "" :string) + ("Ï" "" :string) + ("Í" "" :string) + ("ï" "" :string) + ("Î" "" :string) + ("î" "" :string) + ("ı" "" :string) + ("İ" "" :string) + ("í" "" :string) + ("Ì" "" :string) + ("ì" "" :string) + ("Ĵ" "" :string) + ("ĵ" "" :string) + ("ł" "" :string) + ("Ł" "" :string) + ("ľ" "" :string) + ("Ľ" "" :string) + ("ń" "" :string) + ("Ń" "" :string) + ("ñ" "" :string) + ("ň" "" :string) + ("Ñ" "" :string) + ("Ň" "" :string) + ("Õ" "" :string) + ("Ő" "" :string) + ("ó" "" :string) + ("ö" "" :string) + ("ô" "" :string) + ("ő" "" :string) + ("Ø" "" :string) + ("Ö" "" :string) + ("õ" "" :string) + ("Ô" "" :string) + ("ø" "" :string) + ("Ó" "" :string) + ("Ò" "" :string) + ("ò" "" :string) + ("œ" "ĺ" :string) + ("Œ" "ĺ" :string) + ("Ř" "" :string) + ("ř" "" :string) + ("Ŕ" "" :string) + ("ŕ" "" :string) + ("ŝ" "" :string) + ("Ś" "" :string) + ("ș" "" :string) + ("ş" "" :string) + ("Ŝ" "" :string) + ("ś" "" :string) + ("Ș" "" :string) + ("š" "" :string) + ("Ş" "" :string) + ("Š" "" :string) + ("ß" "" :string) + ("Ț" "" :string) + ("Ť" "" :string) + ("ț" "" :string) + ("ť" "" :string) + ("û" "" :string) + ("ŭ" "" :string) + ("ů" "" :string) + ("ű" "" :string) + ("ù" "" :string) + ("Ŭ" "" :string) + ("Ù" "" :string) + ("Ű" "" :string) + ("Ü" "" :string) + ("Ů" "" :string) + ("ú" "" :string) + ("Ú" "" :string) + ("Û" "" :string) + ("ü" "" :string) + ("ÿ" "" :string) + ("Ý" "" :string) + ("Ÿ" "" :string) + ("ý" "" :string) + ("Ż" "" :string) + ("Ž" "" :string) + ("Ź" "" :string) + ("ž" "" :string) + ("ż" "" :string) + ("ź" "" :string) + ("a" "" :string) + ("A" "" :string) + ("b" "" :string) + ("B" "" :string) + ("c" "" :string) + ("C" "" :string) + ("d" "" :string) + ("D" "" :string) + ("e" "" :string) + ("E" "" :string) + ("F" "" :string) + ("f" "" :string) + ("G" "" :string) + ("g" "" :string) + ("H" "" :string) + ("h" "" :string) + ("i" "" :string) + ("I" "" :string) + ("J" "" :string) + ("j" "" :string) + ("K" "" :string) + ("k" "" :string) + ("L" "" :string) + ("l" "" :string) + ("M" "" :string) + ("m" "" :string) + ("n" "" :string) + ("N" "" :string) + ("O" "" :string) + ("o" "" :string) + ("p" "" :string) + ("P" "" :string) + ("Q" "" :string) + ("q" "" :string) + ("r" "" :string) + ("R" "" :string) + ("S" "" :string) + ("s" "" :string) + ("t" "" :string) + ("T" "" :string) + ("u" "" :string) + ("U" "" :string) + ("v" "" :string) + ("V" "" :string) + ("W" "" :string) + ("w" "" :string) + ("x" "" :string) + ("X" "" :string) + ("Y" "" :string) + ("y" "" :string) + ("z" "" :string) + ("Z" "" :string) + )) + +(define-rule-set "sphinx-xy-resolve-diacritics" + + :rules (("Ĥ" "" :string) + ("ó" "" :string) + ("ľ" "" :string) + ("Ř" "" :string) + ("ĝ" "" :string) + ("ď" "" :string) + ("Ě" "" :string) + ("ĥ" "" :string) + ("Č" "" :string) + ("Ĵ" "" :string) + ("ě" "" :string) + ("ž" "" :string) + ("Ď" "" :string) + ("ř" "" :string) + ("Ž" "" :string) + ("ı" "" :string) + ("Ť" "" :string) + ("á" "" :string) + ("č" "" :string) + ("Á" "" :string) + ("ň" "" :string) + ("Š" "" :string) + ("Ň" "" :string) + ("ĵ" "" :string) + ("ť" "" :string) + ("Ó" "" :string) + ("ý" "" :string) + ("Ĝ" "" :string) + ("Ú" "" :string) + ("Ľ" "" :string) + ("š" "" :string) + ("Ý" "" :string) + ("ú" "" :string) + ("Ś" "" :string) + ("ć" "" :string) + ("Ł" "" :string) + ("ł" "" :string) + ("ń" "" :string) + ("À" "" :string) + ("Ź" "" :string) + ("à" "" :string) + ("Ń" "" :string) + ("Đ" "" :string) + ("ÿ" "" :string) + ("ś" "" :string) + ("Ğ" "" :string) + ("ğ" "" :string) + ("Ù" "" :string) + ("İ" "" :string) + ("đ" "" :string) + ("ù" "" :string) + ("Ț" "" :string) + ("é" "" :string) + ("ŕ" "" :string) + ("Ć" "" :string) + ("ț" "" :string) + ("ò" "" :string) + ("ź" "" :string) + ("Ò" "" :string) + ("Ÿ" "" :string) + ("Ŕ" "" :string) + ("É" "" :string) + ("ĉ" "" :string) + ("ô" "" :string) + ("Í" "" :string) + ("ŝ" "" :string) + ("Ż" "" :string) + ("Ă" "" :string) + ("Ŝ" "" :string) + ("ñ" "" :string) + ("ŭ" "" :string) + ("í" "" :string) + ("È" "" :string) + ("Ô" "" :string) + ("Ŭ" "" :string) + ("ż" "" :string) + ("Ñ" "" :string) + ("è" "" :string) + ("Ĉ" "" :string) + ("ă" "" :string) + ("â" "" :string) + ("û" "" :string) + ("ê" "" :string) + ("Õ" "" :string) + ("õ" "" :string) + ("ș" "" :string) + ("ç" "" :string) + ("Â" "" :string) + ("Ê" "" :string) + ("Û" "" :string) + ("Ç" "" :string) + ("ì" "" :string) + ("Ì" "" :string) + ("Ș" "" :string) + ("ö" "" :string) + ("Ö" "" :string) + ("ş" "" :string) + ("ů" "" :string) + ("ë" "" :string) + ("ã" "" :string) + ("î" "" :string) + ("Î" "" :string) + ("Ã" "" :string) + ("Ş" "" :string) + ("Ů" "" :string) + ("Ë" "" :string) + ("ï" "" :string) + ("Ő" "" :string) + ("Ï" "" :string) + ("Ę" "" :string) + ("ő" "" :string) + ("Ü" "" :string) + ("Å" "" :string) + ("ü" "" :string) + ("ę" "" :string) + ("å" "" :string) + ("Ä" "" :string) + ("ű" "" :string) + ("Ø" "" :string) + ("ø" "" :string) + ("Ű" "" :string) + ("ä" "" :string) + ("Ą" "" :string) + ("ą" "" :string) + ("œ" "" :string) + ("ß" "" :string) + ("Æ" "" :string) + ("Œ" "" :string) + ("æ" "" :string) + ("e" "" :string) + ("t" "" :string) + ("L" "" :string) + ("Y" "" :string) + ("J" "" :string) + ("a" "" :string) + ("p" "" :string) + ("u" "" :string) + ("j" "" :string) + ("b" "" :string) + ("G" "" :string) + ("U" "" :string) + ("F" "" :string) + ("H" "" :string) + ("i" "" :string) + ("z" "" :string) + ("c" "" :string) + ("l" "" :string) + ("A" "" :string) + ("Q" "" :string) + ("w" "" :string) + ("D" "" :string) + ("R" "" :string) + ("d" "" :string) + ("s" "" :string) + ("r" "" :string) + ("k" "" :string) + ("v" "" :string) + ("m" "" :string) + ("P" "" :string) + ("y" "" :string) + ("K" "" :string) + ("q" "" :string) + ("S" "" :string) + ("I" "" :string) + ("C" "" :string) + ("M" "" :string) + ("Z" "" :string) + ("T" "" :string) + ("W" "" :string) + ("B" "" :string) + ("h" "" :string) + ("x" "" :string) + ("X" "" :string) + ("f" "" :string) + ("E" "" :string) + ("V" "" :string) + ("N" "" :string) + ("O" "" :string) + ("o" "" :string) + ("g" "" :string) + ("n" "" :string) + )) + +(define-rule-set "sphinx-xy-resolve-case" + + :rules (("Ú" "8" :string) + ("Ÿ" "8" :string) + ("Ç" "8" :string) + ("Ĉ" "8" :string) + ("Ŕ" "8" :string) + ("Ľ" "8" :string) + ("Ů" "8" :string) + ("Ý" "8" :string) + ("É" "8" :string) + ("Ë" "8" :string) + ("Ș" "8" :string) + ("Ì" "8" :string) + ("Ê" "8" :string) + ("Ň" "8" :string) + ("Ą" "8" :string) + ("Š" "8" :string) + ("Û" "8" :string) + ("Ş" "8" :string) + ("Ć" "8" :string) + ("Ò" "8" :string) + ("Ĝ" "8" :string) + ("Ñ" "8" :string) + ("Ó" "8" :string) + ("Î" "8" :string) + ("Á" "8" :string) + ("Ã" "8" :string) + ("Ț" "8" :string) + ("Å" "8" :string) + ("Ğ" "8" :string) + ("Ü" "8" :string) + ("È" "8" :string) + ("Ô" "8" :string) + ("İ" "8" :string) + ("Ű" "8" :string) + ("Ù" "8" :string) + ("Ŭ" "8" :string) + ("Â" "8" :string) + ("Ť" "8" :string) + ("Ń" "8" :string) + ("Ď" "8" :string) + ("Ź" "8" :string) + ("Ž" "8" :string) + ("Đ" "8" :string) + ("Ŝ" "8" :string) + ("Č" "8" :string) + ("Ĵ" "8" :string) + ("Ö" "8" :string) + ("Ø" "8" :string) + ("Ż" "8" :string) + ("Ł" "8" :string) + ("Ă" "8" :string) + ("Ě" "8" :string) + ("Ő" "8" :string) + ("Õ" "8" :string) + ("Ę" "8" :string) + ("Ï" "8" :string) + ("À" "8" :string) + ("Ĥ" "8" :string) + ("Ä" "8" :string) + ("Ś" "8" :string) + ("Ř" "8" :string) + ("Í" "8" :string) + ("Œ" "89" :string) + ("Æ" "89" :string) + ("ì" "9" :string) + ("è" "9" :string) + ("ą" "9" :string) + ("š" "9" :string) + ("ú" "9" :string) + ("å" "9" :string) + ("ă" "9" :string) + ("ę" "9" :string) + ("ü" "9" :string) + ("ź" "9" :string) + ("ò" "9" :string) + ("ť" "9" :string) + ("ț" "9" :string) + ("ĵ" "9" :string) + ("ŕ" "9" :string) + ("ż" "9" :string) + ("ä" "9" :string) + ("ý" "9" :string) + ("ù" "9" :string) + ("á" "9" :string) + ("é" "9" :string) + ("č" "9" :string) + ("ň" "9" :string) + ("ś" "9" :string) + ("ø" "9" :string) + ("í" "9" :string) + ("đ" "9" :string) + ("ı" "9" :string) + ("ğ" "9" :string) + ("î" "9" :string) + ("ã" "9" :string) + ("à" "9" :string) + ("ř" "9" :string) + ("ő" "9" :string) + ("ů" "9" :string) + ("ș" "9" :string) + ("ÿ" "9" :string) + ("ë" "9" :string) + ("ŭ" "9" :string) + ("ç" "9" :string) + ("ű" "9" :string) + ("ñ" "9" :string) + ("õ" "9" :string) + ("ě" "9" :string) + ("ş" "9" :string) + ("ž" "9" :string) + ("ĝ" "9" :string) + ("ŝ" "9" :string) + ("ń" "9" :string) + ("û" "9" :string) + ("ł" "9" :string) + ("ď" "9" :string) + ("ĥ" "9" :string) + ("ê" "9" :string) + ("ô" "9" :string) + ("ĉ" "9" :string) + ("â" "9" :string) + ("ć" "9" :string) + ("ï" "9" :string) + ("ö" "9" :string) + ("ľ" "9" :string) + ("ó" "9" :string) + ("æ" "99" :string) + ("ß" "99" :string) + ("œ" "99" :string) + ("N" "8" :string) + ("V" "8" :string) + ("O" "8" :string) + ("X" "8" :string) + ("E" "8" :string) + ("P" "8" :string) + ("K" "8" :string) + ("T" "8" :string) + ("Z" "8" :string) + ("M" "8" :string) + ("C" "8" :string) + ("I" "8" :string) + ("S" "8" :string) + ("B" "8" :string) + ("W" "8" :string) + ("D" "8" :string) + ("R" "8" :string) + ("H" "8" :string) + ("F" "8" :string) + ("Q" "8" :string) + ("A" "8" :string) + ("G" "8" :string) + ("U" "8" :string) + ("J" "8" :string) + ("Y" "8" :string) + ("L" "8" :string) + ("o" "9" :string) + ("n" "9" :string) + ("g" "9" :string) + ("x" "9" :string) + ("f" "9" :string) + ("y" "9" :string) + ("q" "9" :string) + ("h" "9" :string) + ("w" "9" :string) + ("s" "9" :string) + ("d" "9" :string) + ("v" "9" :string) + ("k" "9" :string) + ("r" "9" :string) + ("m" "9" :string) + ("z" "9" :string) + ("c" "9" :string) + ("i" "9" :string) + ("l" "9" :string) + ("b" "9" :string) + ("j" "9" :string) + ("a" "9" :string) + ("p" "9" :string) + ("u" "9" :string) + ("t" "9" :string) + ("e" "9" :string) + )) + +(use-rule-set :run 0 + :rule-set ("sphinx-xy-alphabetize")) +(use-rule-set :run 1 + :rule-set ("sphinx-xy-resolve-diacritics")) +(use-rule-set :run 2 + :rule-set ("sphinx-xy-resolve-case")) diff --git a/sphinx/sphinx/texinputs/Makefile_t b/sphinx/sphinx/texinputs/Makefile_t new file mode 100644 index 0000000..96bb0fe --- /dev/null +++ b/sphinx/sphinx/texinputs/Makefile_t @@ -0,0 +1,92 @@ +# Makefile for Sphinx LaTeX output + +ALLDOCS = $(basename $(wildcard *.tex)) +ALLPDF = $(addsuffix .pdf,$(ALLDOCS)) +{% if latex_engine == 'xelatex' -%} +ALLDVI = +ALLXDV = $(addsuffix .xdv,$(ALLDOCS)) +{% else -%} +ALLDVI = $(addsuffix .dvi,$(ALLDOCS)) +ALLXDV = +{% endif -%} +ALLPS = $(addsuffix .ps,$(ALLDOCS)) + +# Prefix for archive names +ARCHIVEPREFIX = +# Additional LaTeX options (passed via variables in latexmkrc/latexmkjarc file) +export LATEXOPTS ?= +# Additional latexmk options +{% if latex_engine == 'xelatex' -%} +# with latexmk version 4.52b or higher set LATEXMKOPTS to -xelatex either here +# or on command line for faster builds. +{% endif -%} +LATEXMKOPTS ?= +{% if xindy_use -%} +export XINDYOPTS = {{ xindy_lang_option }} -M sphinx.xdy +{% if latex_engine == 'pdflatex' -%} +XINDYOPTS += -M LICRlatin2utf8.xdy +{% if xindy_cyrillic -%} +XINDYOPTS += -M LICRcyr2utf8.xdy +{% endif -%} +{% endif -%} +{% if xindy_cyrillic -%} +XINDYOPTS += -M LatinRules.xdy +{% endif -%} +{% endif -%} +# format: pdf or dvi (used only by archive targets) +FMT = pdf + +{% if latex_engine in ('platex', 'uplatex') -%} +# latexmkrc is read then overridden by latexmkjarc +LATEX = latexmk -r latexmkjarc -dvi +PDFLATEX = latexmk -r latexmkjarc -pdfdvi -dvi- -ps- +{% else -%} +LATEX = latexmk -dvi +PDFLATEX = latexmk -pdf -dvi- -ps- +{% endif %} + +{% if latex_engine != 'xelatex' -%} +%.dvi: %.tex FORCE_MAKE + $(LATEX) $(LATEXMKOPTS) '$<' + +{% endif -%} +%.ps: %.dvi + dvips '$<' + +%.pdf: %.tex FORCE_MAKE + $(PDFLATEX) $(LATEXMKOPTS) '$<' + +all: $(ALLPDF) + +all-dvi: $(ALLDVI) + +all-ps: $(ALLPS) + +all-pdf: $(ALLPDF) + +zip: all-$(FMT) + mkdir $(ARCHIVEPREFIX)docs-$(FMT) + cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT) + zip -q -r -9 $(ARCHIVEPREFIX)docs-$(FMT).zip $(ARCHIVEPREFIX)docs-$(FMT) + rm -r $(ARCHIVEPREFIX)docs-$(FMT) + +tar: all-$(FMT) + mkdir $(ARCHIVEPREFIX)docs-$(FMT) + cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT) + tar cf $(ARCHIVEPREFIX)docs-$(FMT).tar $(ARCHIVEPREFIX)docs-$(FMT) + rm -r $(ARCHIVEPREFIX)docs-$(FMT) + +gz: tar + gzip -9 < $(ARCHIVEPREFIX)docs-$(FMT).tar > $(ARCHIVEPREFIX)docs-$(FMT).tar.gz + +bz2: tar + bzip2 -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar + +xz: tar + xz -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar + +clean: + rm -f *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ps *.tar *.tar.gz *.tar.bz2 *.tar.xz $(ALLPDF) $(ALLDVI) $(ALLXDV) *.fls *.fdb_latexmk + +.PHONY: all all-pdf all-dvi all-ps clean zip tar gz bz2 xz +.PHONY: FORCE_MAKE diff --git a/sphinx/sphinx/texinputs/footnotehyper-sphinx.sty b/sphinx/sphinx/texinputs/footnotehyper-sphinx.sty new file mode 100644 index 0000000..b6692cf --- /dev/null +++ b/sphinx/sphinx/texinputs/footnotehyper-sphinx.sty @@ -0,0 +1,269 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{footnotehyper-sphinx}% + [2017/10/27 v1.7 hyperref aware footnote.sty for sphinx (JFB)] +%% +%% Package: footnotehyper-sphinx +%% Version: based on footnotehyper.sty 2017/03/07 v1.0 +%% as available at https://www.ctan.org/pkg/footnotehyper +%% License: the one applying to Sphinx +%% +%% Refer to the PDF documentation at https://www.ctan.org/pkg/footnotehyper for +%% the code comments. +%% +%% Differences: +%% 1. a partial tabulary compatibility layer added (enough for Sphinx mark-up), +%% 2. use of \spx@opt@BeforeFootnote from sphinx.sty, +%% 3. use of \sphinxunactivateextrasandspace from sphinx.sty, +%% 4. macro definition \sphinxfootnotemark, +%% 5. macro definition \sphinxlongtablepatch +%% 6. replaced an \undefined by \@undefined +\DeclareOption*{\PackageWarning{footnotehyper-sphinx}{Option `\CurrentOption' is unknown}}% +\ProcessOptions\relax +\newbox\FNH@notes +\newdimen\FNH@width +\let\FNH@colwidth\columnwidth +\newif\ifFNH@savingnotes +\AtBeginDocument {% + \let\FNH@latex@footnote \footnote + \let\FNH@latex@footnotetext\footnotetext + \let\FNH@H@@footnotetext \@footnotetext + \newenvironment{savenotes} + {\FNH@savenotes\ignorespaces}{\FNH@spewnotes\ignorespacesafterend}% + \let\spewnotes \FNH@spewnotes + \let\footnote \FNH@footnote + \let\footnotetext \FNH@footnotetext + \let\endfootnote \FNH@endfntext + \let\endfootnotetext\FNH@endfntext + \@ifpackageloaded{hyperref} + {\ifHy@hyperfootnotes + \let\FNH@H@@footnotetext\H@@footnotetext + \else + \let\FNH@hyper@fntext\FNH@nohyp@fntext + \fi}% + {\let\FNH@hyper@fntext\FNH@nohyp@fntext}% +}% +\def\FNH@hyper@fntext{\FNH@fntext\FNH@hyper@fntext@i}% +\def\FNH@nohyp@fntext{\FNH@fntext\FNH@nohyp@fntext@i}% +\def\FNH@fntext #1{% + \ifx\ifmeasuring@\@undefined + \expandafter\@secondoftwo\else\expandafter\@firstofone\fi +% these two lines modified for Sphinx (tabulary compatibility): + {\ifmeasuring@\expandafter\@gobbletwo\else\expandafter\@firstofone\fi}% + {\ifx\equation$\expandafter\@gobbletwo\fi #1}%$ +}% +\long\def\FNH@hyper@fntext@i#1{% + \global\setbox\FNH@notes\vbox + {\unvbox\FNH@notes + \FNH@startnote + \@makefntext + {\rule\z@\footnotesep\ignorespaces + \ifHy@nesting\expandafter\ltx@firstoftwo + \else\expandafter\ltx@secondoftwo + \fi + {\expandafter\hyper@@anchor\expandafter{\Hy@footnote@currentHref}{#1}}% + {\Hy@raisedlink + {\expandafter\hyper@@anchor\expandafter{\Hy@footnote@currentHref}% + {\relax}}% + \let\@currentHref\Hy@footnote@currentHref + \let\@currentlabelname\@empty + #1}% + \@finalstrut\strutbox + }% + \FNH@endnote + }% +}% +\long\def\FNH@nohyp@fntext@i#1{% + \global\setbox\FNH@notes\vbox + {\unvbox\FNH@notes + \FNH@startnote + \@makefntext{\rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \FNH@endnote + }% +}% +\def\FNH@startnote{% + \hsize\FNH@colwidth + \interlinepenalty\interfootnotelinepenalty + \reset@font\footnotesize + \floatingpenalty\@MM + \@parboxrestore + \protected@edef\@currentlabel{\csname p@\@mpfn\endcsname\@thefnmark}% + \color@begingroup +}% +\def\FNH@endnote{\color@endgroup}% +\def\FNH@savenotes{% + \begingroup + \ifFNH@savingnotes\else + \FNH@savingnotestrue + \let\@footnotetext \FNH@hyper@fntext + \let\@mpfootnotetext \FNH@hyper@fntext + \let\H@@mpfootnotetext\FNH@nohyp@fntext + \FNH@width\columnwidth + \let\FNH@colwidth\FNH@width + \global\setbox\FNH@notes\box\voidb@x + \let\FNH@thempfn\thempfn + \let\FNH@mpfn\@mpfn + \ifx\@minipagerestore\relax\let\@minipagerestore\@empty\fi + \expandafter\def\expandafter\@minipagerestore\expandafter{% + \@minipagerestore + \let\thempfn\FNH@thempfn + \let\@mpfn\FNH@mpfn + }% + \fi +}% +\def\FNH@spewnotes {% + \endgroup + \ifFNH@savingnotes\else + \ifvoid\FNH@notes\else + \begingroup + \let\@makefntext\@empty + \let\@finalstrut\@gobble + \let\rule\@gobbletwo + \FNH@H@@footnotetext{\unvbox\FNH@notes}% + \endgroup + \fi + \fi +}% +\def\FNH@footnote@envname {footnote}% +\def\FNH@footnotetext@envname{footnotetext}% +\def\FNH@footnote{% +% this line added for Sphinx: + \spx@opt@BeforeFootnote + \ifx\@currenvir\FNH@footnote@envname + \expandafter\FNH@footnoteenv + \else + \expandafter\FNH@latex@footnote + \fi +}% +\def\FNH@footnoteenv{% +% this line added for Sphinx (footnotes in parsed literal blocks): + \catcode13=5 \sphinxunactivateextrasandspace + \@ifnextchar[% + \FNH@footnoteenv@i %] + {\stepcounter\@mpfn + \protected@xdef\@thefnmark{\thempfn}% + \@footnotemark + \def\FNH@endfntext@fntext{\@footnotetext}% + \FNH@startfntext}% +}% +\def\FNH@footnoteenv@i[#1]{% + \begingroup + \csname c@\@mpfn\endcsname #1\relax + \unrestored@protected@xdef\@thefnmark{\thempfn}% + \endgroup + \@footnotemark + \def\FNH@endfntext@fntext{\@footnotetext}% + \FNH@startfntext +}% +\def\FNH@footnotetext{% + \ifx\@currenvir\FNH@footnotetext@envname + \expandafter\FNH@footnotetextenv + \else + \expandafter\FNH@latex@footnotetext + \fi +}% +\def\FNH@footnotetextenv{% + \@ifnextchar[% + \FNH@footnotetextenv@i %] + {\protected@xdef\@thefnmark{\thempfn}% + \def\FNH@endfntext@fntext{\@footnotetext}% + \FNH@startfntext}% +}% +\def\FNH@footnotetextenv@i[#1]{% + \begingroup + \csname c@\@mpfn\endcsname #1\relax + \unrestored@protected@xdef\@thefnmark{\thempfn}% + \endgroup + \ifFNH@savingnotes + \def\FNH@endfntext@fntext{\FNH@nohyp@fntext}% + \else + \def\FNH@endfntext@fntext{\FNH@H@@footnotetext}% + \fi + \FNH@startfntext +}% +\def\FNH@startfntext{% + \setbox\z@\vbox\bgroup + \FNH@startnote + \FNH@prefntext + \rule\z@\footnotesep\ignorespaces +}% +\def\FNH@endfntext {% + \@finalstrut\strutbox + \FNH@postfntext + \FNH@endnote + \egroup + \begingroup + \let\@makefntext\@empty\let\@finalstrut\@gobble\let\rule\@gobbletwo + \FNH@endfntext@fntext {\unvbox\z@}% + \endgroup +}% +\AtBeginDocument{% + \let\FNH@@makefntext\@makefntext + \ifx\@makefntextFB\@undefined + \expandafter\@gobble\else\expandafter\@firstofone\fi + {\ifFBFrenchFootnotes \let\FNH@@makefntext\@makefntextFB \else + \let\FNH@@makefntext\@makefntextORI\fi}% + \expandafter\FNH@check@a\FNH@@makefntext{1.2!3?4,}% + \FNH@@@1.2!3?4,\FNH@@@\relax +}% +\long\def\FNH@check@a #11.2!3?4,#2\FNH@@@#3{% + \ifx\relax#3\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi + \FNH@bad@makefntext@alert + {\def\FNH@prefntext{#1}\def\FNH@postfntext{#2}\FNH@check@b}% +}% +\def\FNH@check@b #1\relax{% + \expandafter\expandafter\expandafter\FNH@check@c + \expandafter\meaning\expandafter\FNH@prefntext + \meaning\FNH@postfntext1.2!3?4,\FNH@check@c\relax +}% +\def\FNH@check@c #11.2!3?4,#2#3\relax{% + \ifx\FNH@check@c#2\expandafter\@gobble\fi\FNH@bad@makefntext@alert +}% +% slight reformulation for Sphinx +\def\FNH@bad@makefntext@alert{% + \PackageWarningNoLine{footnotehyper-sphinx}% + {Footnotes will be sub-optimal, sorry. This is due to the document class or^^J + some package modifying macro \string\@makefntext.^^J + You can try to report this incompatibility at^^J + https://github.com/sphinx-doc/sphinx with this info:}% + \typeout{\meaning\@makefntext}% + \let\FNH@prefntext\@empty\let\FNH@postfntext\@empty +}% +% this macro from original footnote.sty is not used anymore by Sphinx +% but for simplicity sake let's just keep it as is +\def\makesavenoteenv{\@ifnextchar[\FNH@msne@ii\FNH@msne@i}%] +\def\FNH@msne@i #1{% + \expandafter\let\csname FNH$#1\expandafter\endcsname %$ + \csname #1\endcsname + \expandafter\let\csname endFNH$#1\expandafter\endcsname %$ + \csname end#1\endcsname + \FNH@msne@ii[#1]{FNH$#1}%$ +}% +\def\FNH@msne@ii[#1]#2{% + \expandafter\edef\csname#1\endcsname{% + \noexpand\savenotes + \expandafter\noexpand\csname#2\endcsname + }% + \expandafter\edef\csname end#1\endcsname{% + \expandafter\noexpand\csname end#2\endcsname + \noexpand\expandafter + \noexpand\spewnotes + \noexpand\if@endpe\noexpand\@endpetrue\noexpand\fi + }% +}% +% end of footnotehyper 2017/02/16 v0.99 +% some extras for Sphinx : +% \sphinxfootnotemark: usable in section titles and silently removed from TOCs. +\def\sphinxfootnotemark [#1]% + {\ifx\thepage\relax\else\protect\spx@opt@BeforeFootnote + \protect\footnotemark[#1]\fi}% +\AtBeginDocument{% + % let hyperref less complain + \pdfstringdefDisableCommands{\def\sphinxfootnotemark [#1]{}}% + % to obtain hyperlinked footnotes in longtable environment we must replace + % hyperref's patch of longtable's patch of \@footnotetext by our own + \let\LT@p@ftntext\FNH@hyper@fntext + % this *requires* longtable to be used always wrapped in savenotes environment +}% +\endinput +%% +%% End of file `footnotehyper-sphinx.sty'. diff --git a/sphinx/sphinx/texinputs/latexmkjarc_t b/sphinx/sphinx/texinputs/latexmkjarc_t new file mode 100644 index 0000000..c7403a9 --- /dev/null +++ b/sphinx/sphinx/texinputs/latexmkjarc_t @@ -0,0 +1,22 @@ +$latex = '{{ latex_engine }} ' . $ENV{'LATEXOPTS'} . ' -kanji=utf8 %O %S'; +$dvipdf = 'dvipdfmx %O -o %D %S'; +$makeindex = 'internal mendex %S %B %D'; +sub mendex { + my ($source, $basename, $destination) = @_; + my $dictfile = $basename . ".dic"; + unlink($destination); + system("mendex", "-U", "-f", "-d", $dictfile, "-s", "python.ist", $source); + if ($? > 0) { + print("mendex exited with error code $? (ignored)\n"); + } + if (!-e $destination) { + # create an empty .ind file if nothing + open(FH, ">" . $destination); + close(FH); + } + return 0; +} +add_cus_dep( "glo", "gls", 0, "makeglo" ); +sub makeglo { + return system( "mendex -J -f -s gglo.ist -o '$_[0].gls' '$_[0].glo'" ); +} diff --git a/sphinx/sphinx/texinputs/latexmkrc_t b/sphinx/sphinx/texinputs/latexmkrc_t new file mode 100644 index 0000000..a33b541 --- /dev/null +++ b/sphinx/sphinx/texinputs/latexmkrc_t @@ -0,0 +1,32 @@ +{% if latex_engine == 'pdflatex' -%} +$latex = 'latex ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$pdflatex = 'pdflatex ' . $ENV{'LATEXOPTS'} . ' %O %S'; +{% elif latex_engine == 'lualatex' -%} +$latex = 'lualatex --output-format=dvi ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$pdflatex = 'lualatex ' . $ENV{'LATEXOPTS'} . ' %O %S'; +{% elif latex_engine == 'xelatex' -%} +$latex = 'xelatex --no-pdf ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$pdflatex = 'xelatex ' . $ENV{'LATEXOPTS'} . ' %O %S'; +{% endif -%} +$lualatex = 'lualatex ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$xelatex = 'xelatex --no-pdf ' . $ENV{'LATEXOPTS'} . ' %O %S'; +{% if xindy_use -%} +$makeindex = 'internal xindy ' . $ENV{'XINDYOPTS'} . ' %O -o %D %S'; +sub xindy { + my @args = @_; + if (-z $args[-1]) { + # create an empty .ind file if .idx is empty + open(FH, ">" . $args[-2]); + close(FH); + return 0; + } else { + return system("xindy", @args); + } +} +{% else -%} +$makeindex = 'makeindex -s python.ist %O -o %D %S'; +{% endif -%} +add_cus_dep( "glo", "gls", 0, "makeglo" ); +sub makeglo { + return system( "makeindex -s gglo.ist -o '$_[0].gls' '$_[0].glo'" ); +} diff --git a/sphinx/sphinx/texinputs/make.bat_t b/sphinx/sphinx/texinputs/make.bat_t new file mode 100644 index 0000000..9dfa38c --- /dev/null +++ b/sphinx/sphinx/texinputs/make.bat_t @@ -0,0 +1,50 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +pushd %~dp0 + +{% if latex_engine == 'platex' -%} +REM latexmkrc is read then overridden by latexmkjarc +set PDFLATEX=latexmk -r latexmkjarc -pdfdvi -dvi- -ps- +{% else -%} +set PDFLATEX=latexmk -pdf -dvi- -ps- +{% endif %} +set "LATEXOPTS= " + +{% if xindy_use -%} +set XINDYOPTS={{ xindy_lang_option }} -M sphinx.xdy +{% if latex_engine == 'pdflatex' -%} +set XINDYOPTS=%XINDYOPTS% -M LICRlatin2utf8.xdy +{% if xindy_cyrillic -%} +set XINDYOPTS=%XINDYOPTS% -M LICRcyr2utf8.xdy +{% endif -%} +{% endif -%} +{% if xindy_cyrillic -%} +set XINDYOPTS=%XINDYOPTS% -M LatinRules.xdy +{% endif -%} +set XINDYOPTS=%XINDYOPTS% -I xelatex +{% endif -%} + + +if "%1" == "" goto all-pdf + +if "%1" == "all-pdf" ( + :all-pdf + for %%i in (*.tex) do ( + %PDFLATEX% %LATEXMKOPTS% %%i + ) + goto end +) + +if "%1" == "all-pdf-ja" ( + goto all-pdf +) + +if "%1" == "clean" ( + del /q /s *.dvi *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ps *.tar *.tar.gz *.tar.bz2 *.tar.xz *.fls *.fdb_latexmk + goto end +) + +:end +popd diff --git a/sphinx/sphinx/texinputs/python.ist b/sphinx/sphinx/texinputs/python.ist new file mode 100644 index 0000000..70536a6 --- /dev/null +++ b/sphinx/sphinx/texinputs/python.ist @@ -0,0 +1,16 @@ +line_max 100 +headings_flag 1 +heading_prefix " \\bigletter " + +preamble "\\begin{sphinxtheindex} +\\let\\bigletter\\sphinxstyleindexlettergroup +\\let\\spxpagem \\sphinxstyleindexpagemain +\\let\\spxentry \\sphinxstyleindexentry +\\let\\spxextra \\sphinxstyleindexextra + +" + +postamble "\n\n\\end{sphinxtheindex}\n" + +symhead_positive "{\\sphinxsymbolsname}" +numhead_positive "{\\sphinxnumbersname}" diff --git a/sphinx/sphinx/texinputs/sphinx.sty b/sphinx/sphinx/texinputs/sphinx.sty new file mode 100644 index 0000000..63676d4 --- /dev/null +++ b/sphinx/sphinx/texinputs/sphinx.sty @@ -0,0 +1,1947 @@ +% +% sphinx.sty +% +% Adapted from the old python.sty, mostly written by Fred Drake, +% by Georg Brandl. +% + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesPackage{sphinx}[2019/09/02 v2.3.0 LaTeX package (Sphinx markup)] + +% provides \ltx@ifundefined +% (many packages load ltxcmds: graphicx does for pdftex and lualatex but +% not xelatex, and anyhow kvoptions does, but it may be needed in future to +% use \sphinxdeprecationwarning earlier, and it needs \ltx@ifundefined) +\RequirePackage{ltxcmds} + +%% for deprecation warnings +\newcommand\sphinxdeprecationwarning[4]{% #1 the deprecated macro or name, +% #2 = when deprecated, #3 = when removed, #4 = additional info + \edef\spx@tempa{\detokenize{#1}}% + \ltx@ifundefined{sphinx_depr_\spx@tempa}{% + \global\expandafter\let\csname sphinx_depr_\spx@tempa\endcsname\spx@tempa + \expandafter\AtEndDocument\expandafter{\expandafter\let\expandafter + \sphinxdeprecatedmacro\csname sphinx_depr_\spx@tempa\endcsname + \PackageWarningNoLine{sphinx}{^^J**** SPHINX DEPRECATION WARNING:^^J + \sphinxdeprecatedmacro^^J + \@spaces- is deprecated at Sphinx #2^^J + \@spaces- and removed at Sphinx #3.^^J + #4^^J****}}% + }{% warning already emitted (at end of latex log), don't repeat + }} + + +%% PACKAGES +% +% we delay handling of options to after having loaded packages, because +% of the need to use \definecolor. +\RequirePackage{graphicx} +\@ifclassloaded{memoir}{}{\RequirePackage{fancyhdr}} +% for \text macro and \iffirstchoice@ conditional even if amsmath not loaded +\RequirePackage{amstext} +\RequirePackage{textcomp}% "warn" option issued from template +\RequirePackage[nobottomtitles*]{titlesec} +\@ifpackagelater{titlesec}{2016/03/15}% + {\@ifpackagelater{titlesec}{2016/03/21}% + {}% + {\newif\ifsphinx@ttlpatch@ok + \IfFileExists{etoolbox.sty}{% + \RequirePackage{etoolbox}% + \patchcmd{\ttlh@hang}{\parindent\z@}{\parindent\z@\leavevmode}% + {\sphinx@ttlpatch@oktrue}{}% + \ifsphinx@ttlpatch@ok + \patchcmd{\ttlh@hang}{\noindent}{}{}{\sphinx@ttlpatch@okfalse}% + \fi + }{}% + \ifsphinx@ttlpatch@ok + \typeout{^^J Package Sphinx Info: ^^J + **** titlesec 2.10.1 successfully patched for bugfix ****^^J}% + \else + \AtEndDocument{\PackageWarningNoLine{sphinx}{^^J% +******** titlesec 2.10.1 has a bug, (section numbers disappear) ......|^^J% +******** and Sphinx could not patch it, perhaps because your local ...|^^J% +******** copy is already fixed without a changed release date. .......|^^J% +******** If not, you must update titlesec! ...........................|}}% + \fi + }% + }{} +\RequirePackage{tabulary} +% tabulary has a bug with its re-definition of \multicolumn in its first pass +% which is not \long. But now Sphinx does not use LaTeX's \multicolumn but its +% own macro. Hence we don't even need to patch tabulary. See sphinxmulticell.sty +% X or S (Sphinx) may have meanings if some table package is loaded hence +% \X was chosen to avoid possibility of conflict +\newcolumntype{\X}[2]{p{\dimexpr + (\linewidth-\arrayrulewidth)*#1/#2-\tw@\tabcolsep-\arrayrulewidth\relax}} +\newcolumntype{\Y}[1]{p{\dimexpr + #1\dimexpr\linewidth-\arrayrulewidth\relax-\tw@\tabcolsep-\arrayrulewidth\relax}} +% using here T (for Tabulary) feels less of a problem than the X could be +\newcolumntype{T}{J}% +% For tables allowing pagebreaks +\RequirePackage{longtable} +% User interface to set-up whitespace before and after tables: +\newcommand*\sphinxtablepre {0pt}% +\newcommand*\sphinxtablepost{\medskipamount}% +% Space from caption baseline to top of table or frame of literal-block +\newcommand*\sphinxbelowcaptionspace{.5\sphinxbaselineskip}% +% as one can not use \baselineskip from inside longtable (it is zero there) +% we need \sphinxbaselineskip, which defaults to \baselineskip +\def\sphinxbaselineskip{\baselineskip}% +% The following is to ensure that, whether tabular(y) or longtable: +% - if a caption is on top of table: +% a) the space between its last baseline and the top rule of table is +% exactly \sphinxbelowcaptionspace +% b) the space from last baseline of previous text to first baseline of +% caption is exactly \parskip+\baselineskip+ height of a strut. +% c) the caption text will wrap at width \LTcapwidth (4in) +% - make sure this works also if "caption" package is loaded by user +% (with its width or margin option taking place of \LTcapwidth role) +% TODO: obtain same for caption of literal block: a) & c) DONE, b) TO BE DONE +% +% To modify space below such top caption, adjust \sphinxbelowcaptionspace +% To add or remove space above such top caption, adjust \sphinxtablepre: +% notice that \abovecaptionskip, \belowcaptionskip, \LTpre are **ignored** +% A. Table with longtable +\def\sphinxatlongtablestart + {\par + \vskip\parskip + \vskip\dimexpr\sphinxtablepre\relax % adjust vertical position + \vbox{}% get correct baseline from above + \LTpre\z@skip\LTpost\z@skip % set to zero longtable's own skips + \edef\sphinxbaselineskip{\dimexpr\the\dimexpr\baselineskip\relax\relax}% + }% +% Compatibility with caption package +\def\sphinxthelongtablecaptionisattop{% + \spx@ifcaptionpackage{\noalign{\vskip-\belowcaptionskip}}{}% +}% +% Achieves exactly \sphinxbelowcaptionspace below longtable caption +\def\sphinxlongtablecapskipadjust + {\dimexpr-\dp\strutbox + -\spx@ifcaptionpackage{\abovecaptionskip}{\sphinxbaselineskip}% + +\sphinxbelowcaptionspace\relax}% +\def\sphinxatlongtableend{\@nobreakfalse % latex3/latex2e#173 + \prevdepth\z@\vskip\sphinxtablepost\relax}% +% B. Table with tabular or tabulary +\def\sphinxattablestart{\par\vskip\dimexpr\sphinxtablepre\relax}% +\let\sphinxattableend\sphinxatlongtableend +% This is used by tabular and tabulary templates +\newcommand*\sphinxcapstartof[1]{% + \vskip\parskip + \vbox{}% force baselineskip for good positioning by capstart of hyperanchor + % hyperref puts the anchor 6pt above this baseline; in case of caption + % this baseline will be \ht\strutbox above first baseline of caption + \def\@captype{#1}% + \capstart +% move back vertically, as tabular (or its caption) will compensate + \vskip-\baselineskip\vskip-\parskip +}% +\def\sphinxthecaptionisattop{% locate it after \sphinxcapstartof + \spx@ifcaptionpackage + {\caption@setposition{t}% + \vskip\baselineskip\vskip\parskip % undo those from \sphinxcapstartof + \vskip-\belowcaptionskip % anticipate caption package skip + % caption package uses a \vbox, not a \vtop, so "single line" case + % gives different result from "multi-line" without this: + \nointerlineskip + }% + {}% +}% +\def\sphinxthecaptionisatbottom{% (not finalized; for template usage) + \spx@ifcaptionpackage{\caption@setposition{b}}{}% +}% +% The aim of \sphinxcaption is to apply to tabular(y) the maximal width +% of caption as done by longtable +\def\sphinxtablecapwidth{\LTcapwidth}% +\newcommand\sphinxcaption{\@dblarg\spx@caption}% +\long\def\spx@caption[#1]#2{% + \noindent\hb@xt@\linewidth{\hss + \vtop{\@tempdima\dimexpr\sphinxtablecapwidth\relax +% don't exceed linewidth for the caption width + \ifdim\@tempdima>\linewidth\hsize\linewidth\else\hsize\@tempdima\fi +% longtable ignores \abovecaptionskip/\belowcaptionskip, so do the same here + \abovecaptionskip\sphinxabovecaptionskip % \z@skip + \belowcaptionskip\sphinxbelowcaptionskip % \z@skip + \caption[{#1}]% + {\strut\ignorespaces#2\ifhmode\unskip\@finalstrut\strutbox\fi}% + }\hss}% + \par\prevdepth\dp\strutbox +}% +\def\sphinxabovecaptionskip{\z@skip}% Do not use! Flagged for removal +\def\sphinxbelowcaptionskip{\z@skip}% Do not use! Flagged for removal +% This wrapper of \abovecaptionskip is used in sphinxVerbatim for top +% caption, and with another value in sphinxVerbatimintable +% TODO: To unify space above caption of a code-block with the one above +% caption of a table/longtable, \abovecaptionskip must not be used +% This auxiliary will get renamed and receive a different meaning +% in future. +\def\spx@abovecaptionskip{\abovecaptionskip}% +% Achieve \sphinxbelowcaptionspace below a caption located above a tabular +% or a tabulary +\newcommand\sphinxaftertopcaption +{% + \spx@ifcaptionpackage + {\par\prevdepth\dp\strutbox\nobreak\vskip-\abovecaptionskip}{\nobreak}% + \vskip\dimexpr\sphinxbelowcaptionspace\relax + \vskip-\baselineskip\vskip-\parskip +}% +% varwidth is crucial for our handling of general contents in merged cells +\RequirePackage{varwidth} +% but addition of a compatibility patch with hyperref is needed +% (tested with varwidth v 0.92 Mar 2009) +\AtBeginDocument {% + \let\@@vwid@Hy@raisedlink\Hy@raisedlink + \long\def\@vwid@Hy@raisedlink#1{\@vwid@wrap{\@@vwid@Hy@raisedlink{#1}}}% + \edef\@vwid@setup{% + \let\noexpand\Hy@raisedlink\noexpand\@vwid@Hy@raisedlink % HYPERREF ! + \unexpanded\expandafter{\@vwid@setup}}% +}% +% Homemade package to handle merged cells +\RequirePackage{sphinxmulticell} +\RequirePackage{makeidx} +% For framing code-blocks and warning type notices, and shadowing topics +\RequirePackage{framed} +% The xcolor package draws better fcolorboxes around verbatim code +\IfFileExists{xcolor.sty}{ + \RequirePackage{xcolor} +}{ + \RequirePackage{color} +} +% For highlighted code. +\RequirePackage{fancyvrb} +\define@key{FV}{hllines}{\def\sphinx@verbatim@checkifhl##1{\in@{, ##1,}{#1}}} +% sphinxVerbatim must be usable by third party without requiring hllines set-up +\def\sphinxresetverbatimhllines{\def\sphinx@verbatim@checkifhl##1{\in@false}} +\sphinxresetverbatimhllines +% For hyperlinked footnotes in tables; also for gathering footnotes from +% topic and warning blocks. Also to allow code-blocks in footnotes. +\RequirePackage{footnotehyper-sphinx} +% For the H specifier. Do not \restylefloat{figure}, it breaks Sphinx code +% for allowing figures in tables. +\RequirePackage{float} +% For floating figures in the text. Better to load after float. +\RequirePackage{wrapfig} +% Separate paragraphs by space by default. +\IfFileExists{parskip-2001-04-09.sty}% since September 2018 TeXLive update +% new parskip.sty, but let it rollback to old one. +% hopefully TeX installation not broken and LaTeX kernel not too old + {\RequirePackage{parskip}[=v1]} +% standard one from 1989. Admittedly \section of article/book gives possibly +% anomalous spacing, but we can't require September 2018 release for some time. + {\RequirePackage{parskip}} +% For parsed-literal blocks. +\RequirePackage{alltt} +% Display "real" single quotes in literal blocks. +\RequirePackage{upquote} +% control caption around literal-block +\RequirePackage{capt-of} +\RequirePackage{needspace} +% LaTeX 2018-04-01 and later provides \@removefromreset +\ltx@ifundefined{@removefromreset} + {\RequirePackage{remreset}} + {}% avoid warning +% to make pdf with correct encoded bookmarks in Japanese +% this should precede the hyperref package +\ifx\kanjiskip\@undefined +% for non-Japanese: make sure bookmarks are ok also with lualatex + \PassOptionsToPackage{pdfencoding=unicode}{hyperref} +\else + \RequirePackage{atbegshi} + \ifx\ucs\@undefined + \ifnum 42146=\euc"A4A2 + \AtBeginShipoutFirst{\special{pdf:tounicode EUC-UCS2}} + \else + \AtBeginShipoutFirst{\special{pdf:tounicode 90ms-RKSJ-UCS2}} + \fi + \else + \AtBeginShipoutFirst{\special{pdf:tounicode UTF8-UCS2}} + \fi +\fi + +\ifx\@jsc@uplatextrue\@undefined\else + \PassOptionsToPackage{setpagesize=false}{hyperref} +\fi + +% These options can be overriden inside 'hyperref' key +% or by later use of \hypersetup. +\PassOptionsToPackage{colorlinks,breaklinks,% + linkcolor=InnerLinkColor,filecolor=OuterLinkColor,% + menucolor=OuterLinkColor,urlcolor=OuterLinkColor,% + citecolor=InnerLinkColor}{hyperref} + +% stylesheet for highlighting with pygments +\RequirePackage{sphinxhighlight} +% fix baseline increase from Pygments latex formatter in case of error tokens +% and keep \fboxsep's scope local via added braces +\def\PYG@tok@err{% + \def\PYG@bc##1{{\setlength{\fboxsep}{-\fboxrule}% + \fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}}% +} +\def\PYG@tok@cs{% + \def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}% + \def\PYG@bc##1{{\setlength{\fboxsep}{0pt}% + \colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}% +}% + + +%% OPTIONS +% +% Handle options via "kvoptions" (later loaded by hyperref anyhow) +\RequirePackage{kvoptions} +\SetupKeyvalOptions{prefix=spx@opt@} % use \spx@opt@ prefix + +% Sphinx legacy text layout: 1in margins on all four sides +\ifx\@jsc@uplatextrue\@undefined +\DeclareStringOption[1in]{hmargin} +\DeclareStringOption[1in]{vmargin} +\DeclareStringOption[.5in]{marginpar} +\else +% Japanese standard document classes handle \mag in a special way +\DeclareStringOption[\inv@mag in]{hmargin} +\DeclareStringOption[\inv@mag in]{vmargin} +\DeclareStringOption[.5\dimexpr\inv@mag in\relax]{marginpar} +\fi + +\DeclareStringOption[0]{maxlistdepth}% \newcommand*\spx@opt@maxlistdepth{0} +\DeclareStringOption[-1]{numfigreset} +\DeclareBoolOption[false]{nonumfigreset} +\DeclareBoolOption[false]{mathnumfig} +% \DeclareBoolOption[false]{usespart}% not used +% dimensions, we declare the \dimen registers here. +\newdimen\sphinxverbatimsep +\newdimen\sphinxverbatimborder +\newdimen\sphinxshadowsep +\newdimen\sphinxshadowsize +\newdimen\sphinxshadowrule +% \DeclareStringOption is not convenient for the handling of these dimensions +% because we want to assign the values to the corresponding registers. Even if +% we added the code to the key handler it would be too late for the initial +% set-up and we would need to do initial assignments explicitely. We end up +% using \define@key directly. +% verbatim +\sphinxverbatimsep=\fboxsep + \define@key{sphinx}{verbatimsep}{\sphinxverbatimsep\dimexpr #1\relax} +\sphinxverbatimborder=\fboxrule + \define@key{sphinx}{verbatimborder}{\sphinxverbatimborder\dimexpr #1\relax} +% topic boxes +\sphinxshadowsep =5pt + \define@key{sphinx}{shadowsep}{\sphinxshadowsep\dimexpr #1\relax} +\sphinxshadowsize=4pt + \define@key{sphinx}{shadowsize}{\sphinxshadowsize\dimexpr #1\relax} +\sphinxshadowrule=\fboxrule + \define@key{sphinx}{shadowrule}{\sphinxshadowrule\dimexpr #1\relax} +% verbatim +\DeclareBoolOption[true]{verbatimwithframe} +\DeclareBoolOption[true]{verbatimwrapslines} +\DeclareBoolOption[true]{verbatimhintsturnover} +\DeclareBoolOption[true]{inlineliteralwraps} +\DeclareStringOption[t]{literalblockcappos} +\DeclareStringOption[r]{verbatimcontinuedalign} +\DeclareStringOption[r]{verbatimcontinuesalign} +% parsed literal +\DeclareBoolOption[true]{parsedliteralwraps} +% \textvisiblespace for compatibility with fontspec+XeTeX/LuaTeX +\DeclareStringOption[\textcolor{red}{\textvisiblespace}]{verbatimvisiblespace} +\DeclareStringOption % must use braces to hide the brackets + [{\makebox[2\fontcharwd\font`\x][r]{\textcolor{red}{\tiny$\m@th\hookrightarrow$}}}]% + {verbatimcontinued} +% notices/admonitions +% the dimensions for notices/admonitions are kept as macros and assigned to +% \spx@notice@border at time of use, hence \DeclareStringOption is ok for this +\newdimen\spx@notice@border +\DeclareStringOption[0.5pt]{noteborder} +\DeclareStringOption[0.5pt]{hintborder} +\DeclareStringOption[0.5pt]{importantborder} +\DeclareStringOption[0.5pt]{tipborder} +\DeclareStringOption[1pt]{warningborder} +\DeclareStringOption[1pt]{cautionborder} +\DeclareStringOption[1pt]{attentionborder} +\DeclareStringOption[1pt]{dangerborder} +\DeclareStringOption[1pt]{errorborder} +% footnotes +\DeclareStringOption[\mbox{ }]{AtStartFootnote} +% we need a public macro name for direct use in latex file +\newcommand*{\sphinxAtStartFootnote}{\spx@opt@AtStartFootnote} +% no such need for this one, as it is used inside other macros +\DeclareStringOption[\leavevmode\unskip]{BeforeFootnote} +% some font styling. +\DeclareStringOption[\sffamily\bfseries]{HeaderFamily} +% colours +% same problems as for dimensions: we want the key handler to use \definecolor. +% first, some colours with no prefix, for backwards compatibility +\newcommand*{\sphinxDeclareColorOption}[2]{% + \definecolor{#1}#2% + \define@key{sphinx}{#1}{\definecolor{#1}##1}% +}% +\sphinxDeclareColorOption{TitleColor}{{rgb}{0.126,0.263,0.361}} +\sphinxDeclareColorOption{InnerLinkColor}{{rgb}{0.208,0.374,0.486}} +\sphinxDeclareColorOption{OuterLinkColor}{{rgb}{0.216,0.439,0.388}} +\sphinxDeclareColorOption{VerbatimColor}{{rgb}{1,1,1}} +\sphinxDeclareColorOption{VerbatimBorderColor}{{rgb}{0,0,0}} +% now the colours defined with "sphinx" prefix in their names +\newcommand*{\sphinxDeclareSphinxColorOption}[2]{% + % set the initial default + \definecolor{sphinx#1}#2% + % set the key handler. The "value" ##1 must be acceptable by \definecolor. + \define@key{sphinx}{#1}{\definecolor{sphinx#1}##1}% +}% +% Default color chosen to be as in minted.sty LaTeX package! +\sphinxDeclareSphinxColorOption{VerbatimHighlightColor}{{rgb}{0.878,1,1}} +% admonition boxes, "light" style +\sphinxDeclareSphinxColorOption{noteBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{hintBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{importantBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{tipBorderColor}{{rgb}{0,0,0}} +% admonition boxes, "heavy" style +\sphinxDeclareSphinxColorOption{warningBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{cautionBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{attentionBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{dangerBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{errorBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{warningBgColor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{cautionBgColor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{attentionBgColor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{dangerBgColor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{errorBgColor}{{rgb}{1,1,1}} + +\DeclareDefaultOption{\@unknownoptionerror} +\ProcessKeyvalOptions* +% don't allow use of maxlistdepth via \sphinxsetup. +\DisableKeyvalOption{sphinx}{maxlistdepth} +\DisableKeyvalOption{sphinx}{numfigreset} +\DisableKeyvalOption{sphinx}{nonumfigreset} +\DisableKeyvalOption{sphinx}{mathnumfig} +% user interface: options can be changed midway in a document! +\newcommand\sphinxsetup[1]{\setkeys{sphinx}{#1}} + + +%% ALPHANUMERIC LIST ITEMS +\newcommand\sphinxsetlistlabels[5] +{% #1 = style, #2 = enum, #3 = enumnext, #4 = prefix, #5 = suffix + % #2 and #3 are counters used by enumerate environement e.g. enumi, enumii. + % #1 is a macro such as \arabic or \alph + % prefix and suffix are strings (by default empty and a dot). + \@namedef{the#2}{#1{#2}}% + \@namedef{label#2}{#4\@nameuse{the#2}#5}% + \@namedef{p@#3}{\@nameuse{p@#2}#4\@nameuse{the#2}#5}% +}% + + +%% MAXLISTDEPTH +% +% remove LaTeX's cap on nesting depth if 'maxlistdepth' key used. +% This is a hack, which works with the standard classes: it assumes \@toodeep +% is always used in "true" branches: "\if ... \@toodeep \else .. \fi." + +% will force use the "false" branch (if there is one) +\def\spx@toodeep@hack{\fi\iffalse} + +% do nothing if 'maxlistdepth' key not used or if package enumitem loaded. +\ifnum\spx@opt@maxlistdepth=\z@\expandafter\@gobbletwo\fi +\AtBeginDocument{% +\@ifpackageloaded{enumitem}{\remove@to@nnil}{}% + \let\spx@toodeepORI\@toodeep + \def\@toodeep{% + \ifnum\@listdepth<\spx@opt@maxlistdepth\relax + \expandafter\spx@toodeep@hack + \else + \expandafter\spx@toodeepORI + \fi}% +% define all missing \@list... macros + \count@\@ne + \loop + \ltx@ifundefined{@list\romannumeral\the\count@} + {\iffalse}{\iftrue\advance\count@\@ne}% + \repeat + \loop + \ifnum\count@>\spx@opt@maxlistdepth\relax\else + \expandafter\let + \csname @list\romannumeral\the\count@\expandafter\endcsname + \csname @list\romannumeral\the\numexpr\count@-\@ne\endcsname + % workaround 2.6--3.2d babel-french issue (fixed in 3.2e; no change needed) + \ltx@ifundefined{leftmargin\romannumeral\the\count@} + {\expandafter\let + \csname leftmargin\romannumeral\the\count@\expandafter\endcsname + \csname leftmargin\romannumeral\the\numexpr\count@-\@ne\endcsname}{}% + \advance\count@\@ne + \repeat +% define all missing enum... counters and \labelenum... macros and \p@enum.. + \count@\@ne + \loop + \ltx@ifundefined{c@enum\romannumeral\the\count@} + {\iffalse}{\iftrue\advance\count@\@ne}% + \repeat + \loop + \ifnum\count@>\spx@opt@maxlistdepth\relax\else + \newcounter{enum\romannumeral\the\count@}% + \expandafter\def + \csname labelenum\romannumeral\the\count@\expandafter\endcsname + \expandafter + {\csname theenum\romannumeral\the\numexpr\count@\endcsname.}% + \expandafter\def + \csname p@enum\romannumeral\the\count@\expandafter\endcsname + \expandafter + {\csname p@enum\romannumeral\the\numexpr\count@-\@ne\expandafter + \endcsname\csname theenum\romannumeral\the\numexpr\count@-\@ne\endcsname.}% + \advance\count@\@ne + \repeat +% define all missing labelitem... macros + \count@\@ne + \loop + \ltx@ifundefined{labelitem\romannumeral\the\count@} + {\iffalse}{\iftrue\advance\count@\@ne}% + \repeat + \loop + \ifnum\count@>\spx@opt@maxlistdepth\relax\else + \expandafter\let + \csname labelitem\romannumeral\the\count@\expandafter\endcsname + \csname labelitem\romannumeral\the\numexpr\count@-\@ne\endcsname + \advance\count@\@ne + \repeat + \PackageInfo{sphinx}{maximal list depth extended to \spx@opt@maxlistdepth}% +\@gobble\@nnil +} + + +%% INDEX, BIBLIOGRAPHY, APPENDIX, TABLE OF CONTENTS +% +% fix the double index and bibliography on the table of contents +% in jsclasses (Japanese standard document classes) +\ifx\@jsc@uplatextrue\@undefined\else + \renewenvironment{sphinxtheindex} + {\cleardoublepage\phantomsection + \begin{theindex}} + {\end{theindex}} + + \renewenvironment{sphinxthebibliography}[1] + {\cleardoublepage% \phantomsection % not needed here since TeXLive 2010's hyperref + \begin{thebibliography}{#1}} + {\end{thebibliography}} +\fi + +% disable \@chappos in Appendix in pTeX +\ifx\kanjiskip\@undefined\else + \let\py@OldAppendix=\appendix + \renewcommand{\appendix}{ + \py@OldAppendix + \gdef\@chappos{} + } +\fi + +% make commands known to non-Sphinx document classes +\providecommand*{\sphinxmaketitle}{\maketitle} +\providecommand*{\sphinxtableofcontents}{\tableofcontents} +\ltx@ifundefined{sphinxthebibliography} + {\newenvironment + {sphinxthebibliography}{\begin{thebibliography}}{\end{thebibliography}}% + } + {}% else clause of \ltx@ifundefined +\ltx@ifundefined{sphinxtheindex} + {\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}}% + {}% else clause of \ltx@ifundefined + +% for usage with xindy: this string gets internationalized in preamble +\newcommand*{\sphinxnonalphabeticalgroupname}{} +% redefined in preamble, headings for makeindex produced index +\newcommand*{\sphinxsymbolsname}{} +\newcommand*{\sphinxnumbersname}{} + +%% COLOR (general) +% +% FIXME: \normalcolor should probably be used in place of \py@NormalColor +% elsewhere, and \py@NormalColor should never be defined. \normalcolor +% switches to the colour from last \color call in preamble. +\def\py@NormalColor{\color{black}} +% FIXME: it is probably better to use \color{TitleColor}, as TitleColor +% can be customized from 'sphinxsetup', and drop usage of \py@TitleColor +\def\py@TitleColor{\color{TitleColor}} +% FIXME: this line should be dropped, as "9" is default anyhow. +\ifdefined\pdfcompresslevel\pdfcompresslevel = 9 \fi + + +%% PAGE STYLING +% +% Style parameters and macros used by most documents here +\raggedbottom +\sloppy +\hbadness = 5000 % don't print trivial gripes + +% Use \pagestyle{normal} as the primary pagestyle for text. +% Redefine the 'normal' header/footer style when using "fancyhdr" package: +\@ifpackageloaded{fancyhdr}{% + \ltx@ifundefined{c@chapter} + {% no \chapter, "howto" (non-Japanese) docclass + \fancypagestyle{plain}{ + \fancyhf{} + \fancyfoot[C]{{\py@HeaderFamily\thepage}} + \renewcommand{\headrulewidth}{0pt} + \renewcommand{\footrulewidth}{0pt} + } + % Same as 'plain', this way we can use it in template + % FIXME: shouldn't this have a running header with Name and Release like 'manual'? + \fancypagestyle{normal}{ + \fancyhf{} + \fancyfoot[C]{{\py@HeaderFamily\thepage}} + \renewcommand{\headrulewidth}{0pt} + \renewcommand{\footrulewidth}{0pt} + } + }% + {% classes with \chapter command + \fancypagestyle{normal}{ + \fancyhf{} + % FIXME: this presupposes "twoside". + % If "oneside" class option, there are warnings in LaTeX log. + \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}} + \fancyfoot[LO]{{\py@HeaderFamily\nouppercase{\rightmark}}} + \fancyfoot[RE]{{\py@HeaderFamily\nouppercase{\leftmark}}} + \fancyhead[LE,RO]{{\py@HeaderFamily \@title\sphinxheadercomma\py@release}} + \renewcommand{\headrulewidth}{0.4pt} + \renewcommand{\footrulewidth}{0.4pt} + % define chaptermark with \@chappos when \@chappos is available for Japanese + \ltx@ifundefined{@chappos}{} + {\def\chaptermark##1{\markboth{\@chapapp\space\thechapter\space\@chappos\space ##1}{}}} + } + % Update the plain style so we get the page number & footer line, + % but not a chapter or section title. This is to keep the first + % page of a chapter `clean.' + \fancypagestyle{plain}{ + \fancyhf{} + \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}} + \renewcommand{\headrulewidth}{0pt} + \renewcommand{\footrulewidth}{0.4pt} + } + } + } + {% no fancyhdr: memoir class + % Provide default for 'normal' style simply as an alias of 'plain' style + % This way we can use \pagestyle{normal} in LaTeX template + \def\ps@normal{\ps@plain} + % Users of memoir class are invited to redefine 'normal' style in preamble + } + +% geometry +\ifx\kanjiskip\@undefined + \PassOptionsToPackage{% + hmargin={\unexpanded{\spx@opt@hmargin}},% + vmargin={\unexpanded{\spx@opt@vmargin}},% + marginpar=\unexpanded{\spx@opt@marginpar}} + {geometry} +\else + % set text width for Japanese documents to be integer multiple of 1zw + % and text height to be integer multiple of \baselineskip + % the execution is delayed to \sphinxsetup then geometry.sty + \normalsize\normalfont + \newcommand*\sphinxtextwidthja[1]{% + \if@twocolumn\tw@\fi + \dimexpr + \numexpr\dimexpr\paperwidth-\tw@\dimexpr#1\relax\relax/ + \dimexpr\if@twocolumn\tw@\else\@ne\fi zw\relax + zw\relax}% + \newcommand*\sphinxmarginparwidthja[1]{% + \dimexpr\numexpr\dimexpr#1\relax/\dimexpr1zw\relax zw\relax}% + \newcommand*\sphinxtextlinesja[1]{% + \numexpr\@ne+\dimexpr\paperheight-\topskip-\tw@\dimexpr#1\relax\relax/ + \baselineskip\relax}% + \ifx\@jsc@uplatextrue\@undefined\else + % the way we found in order for the papersize special written by + % geometry in the dvi file to be correct in case of jsbook class + \ifnum\mag=\@m\else % do nothing special if nomag class option or 10pt + \PassOptionsToPackage{truedimen}{geometry}% + \fi + \fi + \PassOptionsToPackage{% + hmarginratio={1:1},% + textwidth=\unexpanded{\sphinxtextwidthja{\spx@opt@hmargin}},% + vmarginratio={1:1},% + lines=\unexpanded{\sphinxtextlinesja{\spx@opt@vmargin}},% + marginpar=\unexpanded{\sphinxmarginparwidthja{\spx@opt@marginpar}},% + footskip=2\baselineskip,% + }{geometry}% + \AtBeginDocument + {% update a dimension used by the jsclasses + \ifx\@jsc@uplatextrue\@undefined\else\fullwidth\textwidth\fi + % for some reason, jreport normalizes all dimensions with \@settopoint + \@ifclassloaded{jreport} + {\@settopoint\textwidth\@settopoint\textheight\@settopoint\marginparwidth} + {}% <-- "false" clause of \@ifclassloaded + }% +\fi + +% fix fncychap's bug which uses prematurely the \textwidth value +\@ifpackagewith{fncychap}{Bjornstrup} + {\AtBeginDocument{\mylen\textwidth\advance\mylen-2\myhi}}% + {}% <-- "false" clause of \@ifpackagewith + + +%% TITLES +% +% Since Sphinx 1.5, users should use HeaderFamily key to 'sphinxsetup' rather +% than defining their own \py@HeaderFamily command (which is still possible). +% Memo: \py@HeaderFamily is also used by \maketitle as defined in +% sphinxmanual.cls/sphinxhowto.cls +\newcommand{\py@HeaderFamily}{\spx@opt@HeaderFamily} + +% This sets up the fancy chapter headings that make the documents look +% at least a little better than the usual LaTeX output. +\@ifpackagewith{fncychap}{Bjarne}{ + \ChNameVar {\raggedleft\normalsize \py@HeaderFamily} + \ChNumVar {\raggedleft\Large \py@HeaderFamily} + \ChTitleVar{\raggedleft\Large \py@HeaderFamily} + % This creates (numbered) chapter heads without the leading \vspace*{}: + \def\@makechapterhead#1{% + {\parindent \z@ \raggedright \normalfont + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \DOCH + \fi + \fi + \interlinepenalty\@M + \if@mainmatter + \DOTI{#1}% + \else% + \DOTIS{#1}% + \fi + }} +}{}% <-- "false" clause of \@ifpackagewith + +% Augment the sectioning commands used to get our own font family in place, +% and reset some internal data items (\titleformat from titlesec package) +\titleformat{\section}{\Large\py@HeaderFamily}% + {\py@TitleColor\thesection}{0.5em}{\py@TitleColor}{\py@NormalColor} +\titleformat{\subsection}{\large\py@HeaderFamily}% + {\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor}{\py@NormalColor} +\titleformat{\subsubsection}{\py@HeaderFamily}% + {\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor}{\py@NormalColor} +% By default paragraphs (and subsubsections) will not be numbered because +% sphinxmanual.cls and sphinxhowto.cls set secnumdepth to 2 +\titleformat{\paragraph}{\py@HeaderFamily}% + {\py@TitleColor\theparagraph}{0.5em}{\py@TitleColor}{\py@NormalColor} +\titleformat{\subparagraph}{\py@HeaderFamily}% + {\py@TitleColor\thesubparagraph}{0.5em}{\py@TitleColor}{\py@NormalColor} + + +%% GRAPHICS +% +% \sphinxincludegraphics resizes images larger than the TeX \linewidth (which +% is adjusted in indented environments), or taller than a certain maximal +% height (usually \textheight and this is reduced in the environments which use +% framed.sty to avoid infinite loop if image too tall). +% +% In case height or width options are present the rescaling is done +% (since 2.0), in a way keeping the width:height ratio either native from +% image or from the width and height options if both were present. +% +\newdimen\spx@image@maxheight +\AtBeginDocument{\spx@image@maxheight\textheight} + +% box scratch register +\newdimen\spx@image@box +\newcommand*{\sphinxsafeincludegraphics}[2][]{% + % #1 contains possibly width=, height=, but no scale= since 1.8.4 + \setbox\spx@image@box\hbox{\includegraphics[#1,draft]{#2}}% + \in@false % use some handy boolean flag + \ifdim \wd\spx@image@box>\linewidth + \in@true % flag to remember to adjust options and set box dimensions + % compute height which results from rescaling width to \linewidth + % and keep current aspect ratio. multiply-divide in \numexpr uses + % temporarily doubled precision, hence no overflow. (of course we + % assume \ht is not a few sp's below \maxdimen...(about 16384pt). + \edef\spx@image@rescaledheight % with sp units + {\the\numexpr\ht\spx@image@box + *\linewidth/\wd\spx@image@box sp}% + \ifdim\spx@image@rescaledheight>\spx@image@maxheight + % the rescaled height will be too big, so it is height which decides + % the rescaling factor + \def\spx@image@requiredheight{\spx@image@maxheight}% dimen register + \edef\spx@image@requiredwidth % with sp units + {\the\numexpr\wd\spx@image@box + *\spx@image@maxheight/\ht\spx@image@box sp}% + % TODO: decide if this commented-out block could be needed due to + % rounding in numexpr operations going up + % \ifdim\spx@image@requiredwidth>\linewidth + % \def\spx@image@requiredwidth{\linewidth}% dimen register + % \fi + \else + \def\spx@image@requiredwidth{\linewidth}% dimen register + \let\spx@image@requiredheight\spx@image@rescaledheight% sp units + \fi + \else + % width is ok, let's check height + \ifdim\ht\spx@image@box>\spx@image@maxheight + \in@true + \edef\spx@image@requiredwidth % with sp units + {\the\numexpr\wd\spx@image@box + *\spx@image@maxheight/\ht\spx@image@box sp}% + \def\spx@image@requiredheight{\spx@image@maxheight}% dimen register + \fi + \fi % end of check of width and height + \ifin@ + \setbox\spx@image@box + \hbox{\includegraphics + [%#1,% contained only width and/or height and overruled anyhow + width=\spx@image@requiredwidth,height=\spx@image@requiredheight]% + {#2}}% + % \includegraphics does not set box dimensions to the exactly + % requested ones, see https://github.com/latex3/latex2e/issues/112 + \wd\spx@image@box\spx@image@requiredwidth + \ht\spx@image@box\spx@image@requiredheight + \leavevmode\box\spx@image@box + \else + % here we do not modify the options, no need to adjust width and height + % on output, they will be computed exactly as with "draft" option + \setbox\spx@image@box\box\voidb@x % clear memory + \includegraphics[#1]{#2}% + \fi +}% +% Use the "safe" one by default (2.0) +\def\sphinxincludegraphics{\sphinxsafeincludegraphics} + + +%% FIGURE IN TABLE +% +\newenvironment{sphinxfigure-in-table}[1][\linewidth]{% + \def\@captype{figure}% + \sphinxsetvskipsforfigintablecaption + \begin{minipage}{#1}% +}{\end{minipage}} +% store the original \caption macro for usage with figures inside longtable +% and tabulary cells. Make sure we get the final \caption in presence of +% caption package, whether the latter was loaded before or after sphinx. +\AtBeginDocument{% + \let\spx@originalcaption\caption + \@ifpackageloaded{caption} + {\let\spx@ifcaptionpackage\@firstoftwo + \caption@AtBeginDocument*{\let\spx@originalcaption\caption}% +% in presence of caption package, drop our own \sphinxcaption whose aim was to +% ensure same width of caption to all kinds of tables (tabular(y), longtable), +% because caption package has its own width (or margin) option + \def\sphinxcaption{\caption}% + }% + {\let\spx@ifcaptionpackage\@secondoftwo}% +} +% tabulary expands twice contents, we need to prevent double counter stepping +\newcommand*\sphinxfigcaption + {\ifx\equation$%$% this is trick to identify tabulary first pass + \firstchoice@false\else\firstchoice@true\fi + \spx@originalcaption } +\newcommand*\sphinxsetvskipsforfigintablecaption + {\abovecaptionskip\smallskipamount + \belowcaptionskip\smallskipamount} + + +%% CITATIONS +% +\protected\def\sphinxcite{\cite} + +%% FOOTNOTES +% +% Support large numbered footnotes in minipage +% But now obsolete due to systematic use of \savenotes/\spewnotes +% when minipages are in use in the various macro definitions next. +\def\thempfootnote{\arabic{mpfootnote}} + + +%% NUMBERING OF FIGURES, TABLES, AND LITERAL BLOCKS +\ltx@ifundefined{c@chapter} + {\newcounter{literalblock}}% + {\newcounter{literalblock}[chapter]% + \def\theliteralblock{\ifnum\c@chapter>\z@\arabic{chapter}.\fi + \arabic{literalblock}}% + }% +\ifspx@opt@nonumfigreset + \ltx@ifundefined{c@chapter}{}{% + \@removefromreset{figure}{chapter}% + \@removefromreset{table}{chapter}% + \@removefromreset{literalblock}{chapter}% + \ifspx@opt@mathnumfig + \@removefromreset{equation}{chapter}% + \fi + }% + \def\thefigure{\arabic{figure}}% + \def\thetable {\arabic{table}}% + \def\theliteralblock{\arabic{literalblock}}% + \ifspx@opt@mathnumfig + \def\theequation{\arabic{equation}}% + \fi +\else +\let\spx@preAthefigure\@empty +\let\spx@preBthefigure\@empty +% \ifspx@opt@usespart % <-- LaTeX writer could pass such a 'usespart' boolean +% % as sphinx.sty package option +% If document uses \part, (triggered in Sphinx by latex_toplevel_sectioning) +% LaTeX core per default does not reset chapter or section +% counters at each part. +% But if we modify this, we need to redefine \thechapter, \thesection to +% include the part number and this will cause problems in table of contents +% because of too wide numbering. Simplest is to do nothing. +% \fi +\ifnum\spx@opt@numfigreset>0 + \ltx@ifundefined{c@chapter} + {} + {\g@addto@macro\spx@preAthefigure{\ifnum\c@chapter>\z@\arabic{chapter}.}% + \g@addto@macro\spx@preBthefigure{\fi}}% +\fi +\ifnum\spx@opt@numfigreset>1 + \@addtoreset{figure}{section}% + \@addtoreset{table}{section}% + \@addtoreset{literalblock}{section}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{section}% + \fi + \g@addto@macro\spx@preAthefigure{\ifnum\c@section>\z@\arabic{section}.}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\ifnum\spx@opt@numfigreset>2 + \@addtoreset{figure}{subsection}% + \@addtoreset{table}{subsection}% + \@addtoreset{literalblock}{subsection}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{subsection}% + \fi + \g@addto@macro\spx@preAthefigure{\ifnum\c@subsection>\z@\arabic{subsection}.}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\ifnum\spx@opt@numfigreset>3 + \@addtoreset{figure}{subsubsection}% + \@addtoreset{table}{subsubsection}% + \@addtoreset{literalblock}{subsubsection}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{subsubsection}% + \fi + \g@addto@macro\spx@preAthefigure{\ifnum\c@subsubsection>\z@\arabic{subsubsection}.}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\ifnum\spx@opt@numfigreset>4 + \@addtoreset{figure}{paragraph}% + \@addtoreset{table}{paragraph}% + \@addtoreset{literalblock}{paragraph}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{paragraph}% + \fi + \g@addto@macro\spx@preAthefigure{\ifnum\c@subparagraph>\z@\arabic{subparagraph}.}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\ifnum\spx@opt@numfigreset>5 + \@addtoreset{figure}{subparagraph}% + \@addtoreset{table}{subparagraph}% + \@addtoreset{literalblock}{subparagraph}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{subparagraph}% + \fi + \g@addto@macro\spx@preAthefigure{\ifnum\c@subsubparagraph>\z@\arabic{subsubparagraph}.}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\expandafter\g@addto@macro +\expandafter\spx@preAthefigure\expandafter{\spx@preBthefigure}% +\let\thefigure\spx@preAthefigure +\let\thetable\spx@preAthefigure +\let\theliteralblock\spx@preAthefigure +\g@addto@macro\thefigure{\arabic{figure}}% +\g@addto@macro\thetable{\arabic{table}}% +\g@addto@macro\theliteralblock{\arabic{literalblock}}% + \ifspx@opt@mathnumfig + \let\theequation\spx@preAthefigure + \g@addto@macro\theequation{\arabic{equation}}% + \fi +\fi + + +%% LITERAL BLOCKS +% +% Based on use of "fancyvrb.sty"'s Verbatim. +% - with framing allowing page breaks ("framed.sty") +% - with breaking of long lines (exploits Pygments mark-up), +% - with possibly of a top caption, non-separable by pagebreak. +% - and usable inside tables or footnotes ("footnotehyper-sphinx"). + +% For extensions which use \OriginalVerbatim and compatibility with Sphinx < +% 1.5, we define and use these when (unmodified) Verbatim will be needed. But +% Sphinx >= 1.5 does not modify the \Verbatim macro anymore. +\let\OriginalVerbatim \Verbatim +\let\endOriginalVerbatim\endVerbatim + +% for captions of literal blocks +% at start of caption title +\newcommand*{\fnum@literalblock}{\literalblockname\nobreakspace\theliteralblock} +% this will be overwritten in document preamble by Babel translation +\newcommand*{\literalblockname}{Listing } +% file extension needed for \caption's good functioning, the file is created +% only if a \listof{literalblock}{foo} command is encountered, which is +% analogous to \listoffigures, but for the code listings (foo = chosen title.) +\newcommand*{\ext@literalblock}{lol} + +\newif\ifspx@inframed % flag set if we are already in a framed environment +% if forced use of minipage encapsulation is needed (e.g. table cells) +\newif\ifsphinxverbatimwithminipage \sphinxverbatimwithminipagefalse + +% Framing macro for use with framed.sty's \FrameCommand +% - it obeys current indentation, +% - frame is \fboxsep separated from the contents, +% - the contents use the full available text width, +% - #1 = color of frame, #2 = color of background, +% - #3 = above frame, #4 = below frame, #5 = within frame, +% - #3 and #4 must be already typeset boxes; they must issue \normalcolor +% or similar, else, they are under scope of color #1 +\long\def\spx@fcolorbox #1#2#3#4#5{% + \hskip\@totalleftmargin + \hskip-\fboxsep\hskip-\fboxrule + % use of \color@b@x here is compatible with both xcolor.sty and color.sty + \color@b@x {\color{#1}\spx@CustomFBox{#3}{#4}}{\color{#2}}{#5}% + \hskip-\fboxsep\hskip-\fboxrule + \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth +}% +% #1 = for material above frame, such as a caption or a "continued" hint +% #2 = for material below frame, such as a caption or "continues on next page" +% #3 = actual contents, which will be typeset with a background color +\long\def\spx@CustomFBox#1#2#3{% + \begingroup + \setbox\@tempboxa\hbox{{#3}}% inner braces to avoid color leaks + \vbox{#1% above frame + % draw frame border _latest_ to avoid pdf viewer issue + \kern\fboxrule + \hbox{\kern\fboxrule + \copy\@tempboxa + \kern-\wd\@tempboxa\kern-\fboxrule + \vrule\@width\fboxrule + \kern\wd\@tempboxa + \vrule\@width\fboxrule}% + \kern-\dimexpr\ht\@tempboxa+\dp\@tempboxa+\fboxrule\relax + \hrule\@height\fboxrule + \kern\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax + \hrule\@height\fboxrule + #2% below frame + }% + \endgroup +}% +\def\spx@fcolorbox@put@c#1{% hide width from framed.sty measuring + \moveright\dimexpr\fboxrule+.5\wd\@tempboxa\hb@xt@\z@{\hss#1\hss}% +}% +\def\spx@fcolorbox@put@r#1{% right align with contents, width hidden + \moveright\dimexpr\fboxrule+\wd\@tempboxa-\fboxsep\hb@xt@\z@{\hss#1}% +}% +\def\spx@fcolorbox@put@l#1{% left align with contents, width hidden + \moveright\dimexpr\fboxrule+\fboxsep\hb@xt@\z@{#1\hss}% +}% +% +\def\sphinxVerbatim@Continued + {\csname spx@fcolorbox@put@\spx@opt@verbatimcontinuedalign\endcsname + {\normalcolor\sphinxstylecodecontinued\literalblockcontinuedname}}% +\def\sphinxVerbatim@Continues + {\csname spx@fcolorbox@put@\spx@opt@verbatimcontinuesalign\endcsname + {\normalcolor\sphinxstylecodecontinues\literalblockcontinuesname}}% +\def\sphinxVerbatim@Title + {\spx@fcolorbox@put@c{\unhcopy\sphinxVerbatim@TitleBox}}% +\let\sphinxVerbatim@Before\@empty +\let\sphinxVerbatim@After\@empty +% Defaults are redefined in document preamble according to language +\newcommand*\literalblockcontinuedname{continued from previous page}% +\newcommand*\literalblockcontinuesname{continues on next page}% +% +\def\spx@verbatimfcolorbox{\spx@fcolorbox{VerbatimBorderColor}{VerbatimColor}}% +\def\sphinxVerbatim@FrameCommand + {\spx@verbatimfcolorbox\sphinxVerbatim@Before\sphinxVerbatim@After}% +\def\sphinxVerbatim@FirstFrameCommand + {\spx@verbatimfcolorbox\sphinxVerbatim@Before\sphinxVerbatim@Continues}% +\def\sphinxVerbatim@MidFrameCommand + {\spx@verbatimfcolorbox\sphinxVerbatim@Continued\sphinxVerbatim@Continues}% +\def\sphinxVerbatim@LastFrameCommand + {\spx@verbatimfcolorbox\sphinxVerbatim@Continued\sphinxVerbatim@After}% + +% For linebreaks inside Verbatim environment from package fancyvrb. +\newbox\sphinxcontinuationbox +\newbox\sphinxvisiblespacebox +\newcommand*\sphinxafterbreak {\copy\sphinxcontinuationbox} + +% Take advantage of the already applied Pygments mark-up to insert +% potential linebreaks for TeX processing. +% {, <, #, %, $, ' and ": go to next line. +% _, }, ^, &, >, -, ~, and \: stay at end of broken line. +% Use of \textquotesingle for straight quote. +% FIXME: convert this to package options ? +\newcommand*\sphinxbreaksbeforelist {% + \do\PYGZob\{\do\PYGZlt\<\do\PYGZsh\#\do\PYGZpc\%% {, <, #, %, + \do\PYGZdl\$\do\PYGZdq\"% $, " + \def\PYGZsq + {\discretionary{}{\sphinxafterbreak\textquotesingle}{\textquotesingle}}% ' +} +\newcommand*\sphinxbreaksafterlist {% + \do\PYGZus\_\do\PYGZcb\}\do\PYGZca\^\do\PYGZam\&% _, }, ^, &, + \do\PYGZgt\>\do\PYGZhy\-\do\PYGZti\~% >, -, ~ + \do\PYGZbs\\% \ +} +\newcommand*\sphinxbreaksatspecials {% + \def\do##1##2% + {\def##1{\discretionary{}{\sphinxafterbreak\char`##2}{\char`##2}}}% + \sphinxbreaksbeforelist + \def\do##1##2% + {\def##1{\discretionary{\char`##2}{\sphinxafterbreak}{\char`##2}}}% + \sphinxbreaksafterlist +} + +\def\sphinx@verbatim@nolig@list {\do \`}% +% Some characters . , ; ? ! / are neither pygmentized nor "tex-escaped". +% This macro makes them "active" and they will insert potential linebreaks. +% Not compatible with math mode (cf \sphinxunactivateextras). +\newcommand*\sphinxbreaksbeforeactivelist {}% none +\newcommand*\sphinxbreaksafteractivelist {\do\.\do\,\do\;\do\?\do\!\do\/} +\newcommand*\sphinxbreaksviaactive {% + \def\do##1{\lccode`\~`##1% + \lowercase{\def~}{\discretionary{}{\sphinxafterbreak\char`##1}{\char`##1}}% + \catcode`##1\active}% + \sphinxbreaksbeforeactivelist + \def\do##1{\lccode`\~`##1% + \lowercase{\def~}{\discretionary{\char`##1}{\sphinxafterbreak}{\char`##1}}% + \catcode`##1\active}% + \sphinxbreaksafteractivelist + \lccode`\~`\~ +} + +% If the linebreak is at a space, the latter will be displayed as visible +% space at end of first line, and a continuation symbol starts next line. +\def\spx@verbatim@space {% + \nobreak\hskip\z@skip + \discretionary{\copy\sphinxvisiblespacebox}{\sphinxafterbreak} + {\kern\fontdimen2\font}% +}% + +% if the available space on page is less than \literalblockneedspace, insert pagebreak +\newcommand{\sphinxliteralblockneedspace}{5\baselineskip} +\newcommand{\sphinxliteralblockwithoutcaptionneedspace}{1.5\baselineskip} +% The title (caption) is specified from outside as macro \sphinxVerbatimTitle. +% \sphinxVerbatimTitle is reset to empty after each use of Verbatim. +\newcommand*\sphinxVerbatimTitle {} +% This box to typeset the caption before framed.sty multiple passes for framing. +\newbox\sphinxVerbatim@TitleBox +% This box to measure contents if nested as inner \MakeFramed requires then +% minipage encapsulation but too long contents then break outer \MakeFramed +\newbox\sphinxVerbatim@ContentsBox +% This is a workaround to a "feature" of French lists, when literal block +% follows immediately; usable generally (does only \par then), a priori... +\newcommand*\sphinxvspacefixafterfrenchlists{% + \ifvmode\ifdim\lastskip<\z@ \vskip\parskip\fi\else\par\fi +} +% Holder macro for labels of literal blocks. Set-up by LaTeX writer. +\newcommand*\sphinxLiteralBlockLabel {} +\newcommand*\sphinxSetupCaptionForVerbatim [1] +{% + \sphinxvspacefixafterfrenchlists + \needspace{\sphinxliteralblockneedspace}% +% insert a \label via \sphinxLiteralBlockLabel +% reset to normal the color for the literal block caption + \def\sphinxVerbatimTitle + {\py@NormalColor\sphinxcaption{\sphinxLiteralBlockLabel #1}}% +} +\newcommand*\sphinxSetupCodeBlockInFootnote {% + \fvset{fontsize=\footnotesize}\let\caption\sphinxfigcaption + \sphinxverbatimwithminipagetrue % reduces vertical spaces + % we counteract (this is in a group) the \@normalsize from \caption + \let\normalsize\footnotesize\let\@parboxrestore\relax + \def\spx@abovecaptionskip{\sphinxverbatimsmallskipamount}% +} +\newcommand*{\sphinxverbatimsmallskipamount}{\smallskipamount} +% serves to implement line highlighting and line wrapping +\newcommand\sphinxFancyVerbFormatLine[1]{% + \expandafter\sphinx@verbatim@checkifhl\expandafter{\the\FV@CodeLineNo}% + \ifin@ + \sphinxVerbatimHighlightLine{#1}% + \else + \sphinxVerbatimFormatLine{#1}% + \fi +}% +\newcommand\sphinxVerbatimHighlightLine[1]{% + \edef\sphinxrestorefboxsep{\fboxsep\the\fboxsep\relax}% + \fboxsep0pt\relax % cf LaTeX bug graphics/4524 + \colorbox{sphinxVerbatimHighlightColor}% + {\sphinxrestorefboxsep\sphinxVerbatimFormatLine{#1}}% + % no need to restore \fboxsep here, as this ends up in a \hbox from fancyvrb +}% +% \sphinxVerbatimFormatLine will be set locally to one of those two: +\newcommand\sphinxVerbatimFormatLineWrap[1]{% + \hsize\linewidth + \vtop{\raggedright\hyphenpenalty\z@\exhyphenpenalty\z@ + \doublehyphendemerits\z@\finalhyphendemerits\z@ + \strut #1\strut}% +}% +\newcommand\sphinxVerbatimFormatLineNoWrap[1]{\hb@xt@\linewidth{\strut #1\hss}}% +\g@addto@macro\FV@SetupFont{% + \sbox\sphinxcontinuationbox {\spx@opt@verbatimcontinued}% + \sbox\sphinxvisiblespacebox {\spx@opt@verbatimvisiblespace}% +}% +\newenvironment{sphinxVerbatim}{% + % first, let's check if there is a caption + \ifx\sphinxVerbatimTitle\empty + \sphinxvspacefixafterfrenchlists + \parskip\z@skip + \vskip\sphinxverbatimsmallskipamount + % there was no caption. Check if nevertheless a label was set. + \ifx\sphinxLiteralBlockLabel\empty\else + % we require some space to be sure hyperlink target from \phantomsection + % will not be separated from upcoming verbatim by a page break + \needspace{\sphinxliteralblockwithoutcaptionneedspace}% + \phantomsection\sphinxLiteralBlockLabel + \fi + \else + \parskip\z@skip + \if t\spx@opt@literalblockcappos + \vskip\spx@abovecaptionskip + \def\sphinxVerbatim@Before + {\sphinxVerbatim@Title\nointerlineskip + \kern\dimexpr-\dp\strutbox+\sphinxbelowcaptionspace + % if no frame (code-blocks inside table cells), remove + % the "verbatimsep" whitespace from the top (better visually) + \ifspx@opt@verbatimwithframe\else-\sphinxverbatimsep\fi + % caption package adds \abovecaptionskip vspace, remove it + \spx@ifcaptionpackage{-\abovecaptionskip}{}\relax}% + \else + \vskip\sphinxverbatimsmallskipamount + \def\sphinxVerbatim@After + {\nointerlineskip\kern\dimexpr\dp\strutbox + \ifspx@opt@verbatimwithframe\else-\sphinxverbatimsep\fi + \spx@ifcaptionpackage{-\abovecaptionskip}{}\relax + \sphinxVerbatim@Title}% + \fi + \def\@captype{literalblock}% + \capstart + % \sphinxVerbatimTitle must reset color + \setbox\sphinxVerbatim@TitleBox + \hbox{\begin{minipage}{\linewidth}% + % caption package may detect wrongly if top or bottom, so we help it + \spx@ifcaptionpackage + {\caption@setposition{\spx@opt@literalblockcappos}}{}% + \sphinxVerbatimTitle + \end{minipage}}% + \fi + \global\let\sphinxLiteralBlockLabel\empty + \global\let\sphinxVerbatimTitle\empty + \fboxsep\sphinxverbatimsep \fboxrule\sphinxverbatimborder + \ifspx@opt@verbatimwithframe\else\fboxrule\z@\fi + \let\FrameCommand \sphinxVerbatim@FrameCommand + \let\FirstFrameCommand\sphinxVerbatim@FirstFrameCommand + \let\MidFrameCommand \sphinxVerbatim@MidFrameCommand + \let\LastFrameCommand \sphinxVerbatim@LastFrameCommand + \ifspx@opt@verbatimhintsturnover\else + \let\sphinxVerbatim@Continued\@empty + \let\sphinxVerbatim@Continues\@empty + \fi + \ifspx@opt@verbatimwrapslines + % fancyvrb's Verbatim puts each input line in (unbreakable) horizontal boxes. + % This customization wraps each line from the input in a \vtop, thus + % allowing it to wrap and display on two or more lines in the latex output. + % - The codeline counter will be increased only once. + % - The wrapped material will not break across pages, it is impossible + % to achieve this without extensive rewrite of fancyvrb. + % - The (not used in sphinx) obeytabs option to Verbatim is + % broken by this change (showtabs and tabspace work). + \let\sphinxVerbatimFormatLine\sphinxVerbatimFormatLineWrap + \let\FV@Space\spx@verbatim@space + % Allow breaks at special characters using \PYG... macros. + \sphinxbreaksatspecials + % Breaks at punctuation characters . , ; ? ! and / (needs catcode activation) + \fvset{codes*=\sphinxbreaksviaactive}% + \else % end of conditional code for wrapping long code lines + \let\sphinxVerbatimFormatLine\sphinxVerbatimFormatLineNoWrap + \fi + \let\FancyVerbFormatLine\sphinxFancyVerbFormatLine + \VerbatimEnvironment + % workaround to fancyvrb's check of current list depth + \def\@toodeep {\advance\@listdepth\@ne}% + % The list environment is needed to control perfectly the vertical space. + % Note: \OuterFrameSep used by framed.sty is later set to \topsep hence 0pt. + % - if caption: distance from last text baseline to caption baseline is + % A+(B-F)+\ht\strutbox, A = \abovecaptionskip (default 10pt), B = + % \baselineskip, F is the framed.sty \FrameHeightAdjust macro, default 6pt. + % Formula valid for F < 10pt. + % - distance of baseline of caption to top of frame is like for tables: + % \sphinxbelowcaptionspace (=0.5\baselineskip) + % - if no caption: distance of last text baseline to code frame is S+(B-F), + % with S = \sphinxverbatimtopskip (=\smallskip) + % - and distance from bottom of frame to next text baseline is + % \baselineskip+\parskip. + % The \trivlist is used to avoid possible "too deeply nested" error. + \itemsep \z@skip + \topsep \z@skip + \partopsep \z@skip + % trivlist will set \parsep to \parskip (which itself is set to zero above) + % \leftmargin will be set to zero by trivlist + \rightmargin\z@ + \parindent \z@% becomes \itemindent. Default zero, but perhaps overwritten. + \trivlist\item\relax + \ifspx@inframed\setbox\sphinxVerbatim@ContentsBox\vbox\bgroup + \@setminipage\hsize\linewidth + % use bulk of minipage paragraph shape restores (this is needed + % in indented contexts, at least for some) + \textwidth\hsize \columnwidth\hsize \@totalleftmargin\z@ + \leftskip\z@skip \rightskip\z@skip \@rightskip\z@skip + \else + \ifsphinxverbatimwithminipage\noindent\begin{minipage}{\linewidth}\fi + \MakeFramed {% adapted over from framed.sty's snugshade environment + \advance\hsize-\width\@totalleftmargin\z@\linewidth\hsize\@setminipage + }% + \fi + % For grid placement from \strut's in \FancyVerbFormatLine + \lineskip\z@skip + % active comma should not be overwritten by \@noligs + \ifspx@opt@verbatimwrapslines + \let\verbatim@nolig@list \sphinx@verbatim@nolig@list + \fi + % will fetch its optional arguments if any + \OriginalVerbatim +} +{% + \endOriginalVerbatim + \ifspx@inframed + \egroup % finish \sphinxVerbatim@ContentsBox vbox + \nobreak % update page totals + \ifdim\dimexpr\ht\sphinxVerbatim@ContentsBox+ + \dp\sphinxVerbatim@ContentsBox+ + \ht\sphinxVerbatim@TitleBox+ + \dp\sphinxVerbatim@TitleBox+ + 2\fboxsep+2\fboxrule+ + % try to account for external frame parameters + \FrameSep+\FrameRule+ + % Usage here of 2 baseline distances is empirical. + % In border case where code-block fits barely in remaining space, + % it gets framed and looks good but the outer frame may continue + % on top of next page and give (if no contents after code-block) + % an empty framed line, as testing showed. + 2\baselineskip+ + % now add all to accumulated page totals and compare to \pagegoal + \pagetotal+\pagedepth>\pagegoal + % long contents: do not \MakeFramed. Do make a caption (either before or + % after) if title exists. Continuation hints across pagebreaks dropped. + % FIXME? a bottom caption may end up isolated at top of next page + % (no problem with a top caption, which is default) + \spx@opt@verbatimwithframefalse + \def\sphinxVerbatim@Title{\noindent\box\sphinxVerbatim@TitleBox\par}% + \sphinxVerbatim@Before + \noindent\unvbox\sphinxVerbatim@ContentsBox\par + \sphinxVerbatim@After + \else + % short enough contents: use \MakeFramed. As it is nested, this requires + % minipage encapsulation. + \noindent\begin{minipage}{\linewidth}% + \MakeFramed {% Use it now with the fetched contents + \advance\hsize-\width\@totalleftmargin\z@\linewidth\hsize\@setminipage + }% + \unvbox\sphinxVerbatim@ContentsBox + % some of this may be superfluous: + \par\unskip\@minipagefalse\endMakeFramed + \end{minipage}% + \fi + \else % non-nested \MakeFramed + \par\unskip\@minipagefalse\endMakeFramed % from framed.sty snugshade + \ifsphinxverbatimwithminipage\end{minipage}\fi + \fi + \endtrivlist +} +\newenvironment {sphinxVerbatimNoFrame} + {\spx@opt@verbatimwithframefalse + \VerbatimEnvironment + \begin{sphinxVerbatim}} + {\end{sphinxVerbatim}} +\newenvironment {sphinxVerbatimintable} + {% don't use a frame if in a table cell + \spx@opt@verbatimwithframefalse + \sphinxverbatimwithminipagetrue + % the literal block caption uses \sphinxcaption which is wrapper of \caption, + % but \caption must be modified because longtable redefines it to work only + % for the own table caption, and tabulary has multiple passes + \let\caption\sphinxfigcaption + % reduce above caption skip + \def\spx@abovecaptionskip{\sphinxverbatimsmallskipamount}% + \VerbatimEnvironment + \begin{sphinxVerbatim}} + {\end{sphinxVerbatim}} + + +%% PARSED LITERALS +% allow long lines to wrap like they do in code-blocks + +% this should be kept in sync with definitions in sphinx.util.texescape +\newcommand*\sphinxbreaksattexescapedchars{% + \def\do##1##2% put potential break point before character + {\def##1{\discretionary{}{\sphinxafterbreak\char`##2}{\char`##2}}}% + \do\{\{\do\textless\<\do\#\#\do\%\%\do\$\$% {, <, #, %, $ + \def\do##1##2% put potential break point after character + {\def##1{\discretionary{\char`##2}{\sphinxafterbreak}{\char`##2}}}% + \do\_\_\do\}\}\do\textasciicircum\^\do\&\&% _, }, ^, &, + \do\textgreater\>\do\textasciitilde\~% >, ~ + \do\textbackslash\\% \ +} +\newcommand*\sphinxbreaksviaactiveinparsedliteral{% + \sphinxbreaksviaactive % by default handles . , ; ? ! / + \lccode`\~`\~ % + % update \dospecials as it is used by \url + % but deactivation will already have been done hence this is unneeded: + % \expandafter\def\expandafter\dospecials\expandafter{\dospecials + % \sphinxbreaksbeforeactivelist\sphinxbreaksafteractivelist\do\-}% +} +\newcommand*\sphinxbreaksatspaceinparsedliteral{% + \lccode`~32 \lowercase{\let~}\spx@verbatim@space\lccode`\~`\~ +} +\newcommand*{\sphinxunactivateextras}{\let\do\@makeother + \sphinxbreaksbeforeactivelist\sphinxbreaksafteractivelist}% +% the \catcode13=5\relax (deactivate end of input lines) is left to callers +\newcommand*{\sphinxunactivateextrasandspace}{\catcode32=10\relax + \sphinxunactivateextras}% +% now for the modified alltt environment +\newenvironment{sphinxalltt} +{% at start of next line to workaround Emacs/AUCTeX issue with this file +\begin{alltt}% + \ifspx@opt@parsedliteralwraps + \sbox\sphinxcontinuationbox {\spx@opt@verbatimcontinued}% + \sbox\sphinxvisiblespacebox {\spx@opt@verbatimvisiblespace}% + \sphinxbreaksattexescapedchars + \sphinxbreaksviaactiveinparsedliteral + \sphinxbreaksatspaceinparsedliteral +% alltt takes care of the ' as derivative ("prime") in math mode + \everymath\expandafter{\the\everymath\sphinxunactivateextrasandspace + \catcode`\<=12\catcode`\>=12\catcode`\^=7\catcode`\_=8 }% +% not sure if displayed math (align,...) can end up in parsed-literal, anyway + \everydisplay\expandafter{\the\everydisplay + \catcode13=5 \sphinxunactivateextrasandspace + \catcode`\<=12\catcode`\>=12\catcode`\^=7\catcode`\_=8 }% + \fi } +{\end{alltt}} + +% Protect \href's first argument in contexts such as sphinxalltt (or +% \sphinxcode). Sphinx uses \#, \%, \& ... always inside \sphinxhref. +\protected\def\sphinxhref#1#2{{% + \sphinxunactivateextrasandspace % never do \scantokens with active space! +% for the \endlinechar business, https://github.com/latex3/latex2e/issues/286 + \endlinechar\m@ne\everyeof{{\endlinechar13 #2}}% keep catcode regime for #2 + \scantokens{\href{#1}}% normalise it for #1 during \href expansion +}} +% Same for \url. And also \nolinkurl for coherence. +\protected\def\sphinxurl#1{{% + \sphinxunactivateextrasandspace\everyeof{}% (<- precaution for \scantokens) + \endlinechar\m@ne\scantokens{\url{#1}}% +}} +\protected\def\sphinxnolinkurl#1{{% + \sphinxunactivateextrasandspace\everyeof{}% + \endlinechar\m@ne\scantokens{\nolinkurl{#1}}% +}} + + +%% TOPIC AND CONTENTS BOXES +% +% Again based on use of "framed.sty", this allows breakable framed boxes. +\long\def\spx@ShadowFBox#1{% + \leavevmode\begingroup + % first we frame the box #1 + \setbox\@tempboxa + \hbox{\vrule\@width\sphinxshadowrule + \vbox{\hrule\@height\sphinxshadowrule + \kern\sphinxshadowsep + \hbox{\kern\sphinxshadowsep #1\kern\sphinxshadowsep}% + \kern\sphinxshadowsep + \hrule\@height\sphinxshadowrule}% + \vrule\@width\sphinxshadowrule}% + % Now we add the shadow, like \shadowbox from fancybox.sty would do + \dimen@\dimexpr.5\sphinxshadowrule+\sphinxshadowsize\relax + \hbox{\vbox{\offinterlineskip + \hbox{\copy\@tempboxa\kern-.5\sphinxshadowrule + % add shadow on right side + \lower\sphinxshadowsize + \hbox{\vrule\@height\ht\@tempboxa \@width\dimen@}% + }% + \kern-\dimen@ % shift back vertically to bottom of frame + % and add shadow at bottom + \moveright\sphinxshadowsize + \vbox{\hrule\@width\wd\@tempboxa \@height\dimen@}% + }% + % move left by the size of right shadow so shadow adds no width + \kern-\sphinxshadowsize + }% + \endgroup +} + +% use framed.sty to allow page breaks in frame+shadow +% works well inside Lists and Quote-like environments +% produced by ``topic'' directive (or local contents) +% could nest if LaTeX writer authorized it +\newenvironment{sphinxShadowBox} + {\def\FrameCommand {\spx@ShadowFBox }% + \advance\spx@image@maxheight + -\dimexpr2\sphinxshadowrule + +2\sphinxshadowsep + +\sphinxshadowsize + +\baselineskip\relax + % configure framed.sty not to add extra vertical spacing + \ltx@ifundefined{OuterFrameSep}{}{\OuterFrameSep\z@skip}% + % the \trivlist will add the vertical spacing on top and bottom which is + % typical of center environment as used in Sphinx <= 1.4.1 + % the \noindent has the effet of an extra blank line on top, to + % imitate closely the layout from Sphinx <= 1.4.1; the \FrameHeightAdjust + % will put top part of frame on this baseline. + \def\FrameHeightAdjust {\baselineskip}% + % use package footnote to handle footnotes + \savenotes + \trivlist\item\noindent + % use a minipage if we are already inside a framed environment + \ifspx@inframed\begin{minipage}{\linewidth}\fi + \MakeFramed {\spx@inframedtrue + % framed.sty puts into "\width" the added width (=2shadowsep+2shadowrule) + % adjust \hsize to what the contents must use + \advance\hsize-\width + % adjust LaTeX parameters to behave properly in indented/quoted contexts + \FrameRestore + % typeset the contents as in a minipage (Sphinx <= 1.4.1 used a minipage and + % itemize/enumerate are therein typeset more tightly, we want to keep + % that). We copy-paste from LaTeX source code but don't do a real minipage. + \@pboxswfalse + \let\@listdepth\@mplistdepth \@mplistdepth\z@ + \@minipagerestore + \@setminipage + }% + }% + {% insert the "endminipage" code + \par\unskip + \@minipagefalse + \endMakeFramed + \ifspx@inframed\end{minipage}\fi + \endtrivlist + % output the stored footnotes + \spewnotes + } + + +%% NOTICES AND ADMONITIONS +% +% Some are quite plain +% the spx@notice@bordercolor etc are set in the sphinxadmonition environment +\newenvironment{sphinxlightbox}{% + \par + \noindent{\color{spx@notice@bordercolor}% + \rule{\linewidth}{\spx@notice@border}}\par\nobreak + {\parskip\z@skip\noindent}% + } + {% + % counteract previous possible negative skip (French lists!): + % (we can't cancel that any earlier \vskip introduced a potential pagebreak) + \sphinxvspacefixafterfrenchlists + \nobreak\vbox{\noindent\kern\@totalleftmargin + {\color{spx@notice@bordercolor}% + \rule[\dimexpr.4\baselineskip-\spx@notice@border\relax] + {\linewidth}{\spx@notice@border}}\hss}\allowbreak + }% end of sphinxlightbox environment definition +% may be renewenvironment'd by user for complete customization +\newenvironment{sphinxnote}[1] + {\begin{sphinxlightbox}\sphinxstrong{#1} }{\end{sphinxlightbox}} +\newenvironment{sphinxhint}[1] + {\begin{sphinxlightbox}\sphinxstrong{#1} }{\end{sphinxlightbox}} +\newenvironment{sphinximportant}[1] + {\begin{sphinxlightbox}\sphinxstrong{#1} }{\end{sphinxlightbox}} +\newenvironment{sphinxtip}[1] + {\begin{sphinxlightbox}\sphinxstrong{#1} }{\end{sphinxlightbox}} +% or just use the package options +% these are needed for common handling by notice environment of lightbox +% and heavybox but they are currently not used by lightbox environment +% and there is consequently no corresponding package option +\definecolor{sphinxnoteBgColor}{rgb}{1,1,1} +\definecolor{sphinxhintBgColor}{rgb}{1,1,1} +\definecolor{sphinximportantBgColor}{rgb}{1,1,1} +\definecolor{sphinxtipBgColor}{rgb}{1,1,1} + +% Others get more distinction +% Code adapted from framed.sty's "snugshade" environment. +% Nesting works (inner frames do not allow page breaks). +\newenvironment{sphinxheavybox}{\par + \setlength{\FrameRule}{\spx@notice@border}% + \setlength{\FrameSep}{\dimexpr.6\baselineskip-\FrameRule\relax} + \advance\spx@image@maxheight + -\dimexpr2\FrameRule + +2\FrameSep + +\baselineskip\relax % will happen again if nested, needed indeed! + % configure framed.sty's parameters to obtain same vertical spacing + % as for "light" boxes. We need for this to manually insert parskip glue and + % revert a skip done by framed before the frame. + \ltx@ifundefined{OuterFrameSep}{}{\OuterFrameSep\z@skip}% + \vspace{\FrameHeightAdjust} + % copied/adapted from framed.sty's snugshade + \def\FrameCommand##1{\hskip\@totalleftmargin + \fboxsep\FrameSep \fboxrule\FrameRule + \fcolorbox{spx@notice@bordercolor}{spx@notice@bgcolor}{##1}% + \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}% + \savenotes + % use a minipage if we are already inside a framed environment + \ifspx@inframed + \noindent\begin{minipage}{\linewidth} + \else + % handle case where notice is first thing in a list item (or is quoted) + \if@inlabel + \noindent\par\vspace{-\baselineskip} + \else + \vspace{\parskip} + \fi + \fi + \MakeFramed {\spx@inframedtrue + \advance\hsize-\width \@totalleftmargin\z@ \linewidth\hsize + % minipage initialization copied from LaTeX source code. + \@pboxswfalse + \let\@listdepth\@mplistdepth \@mplistdepth\z@ + \@minipagerestore + \@setminipage }% + } + {% + \par\unskip + \@minipagefalse + \endMakeFramed + \ifspx@inframed\end{minipage}\fi + % set footnotes at bottom of page + \spewnotes + % arrange for similar spacing below frame as for "light" boxes. + \vskip .4\baselineskip + }% end of sphinxheavybox environment definition +% may be renewenvironment'd by user for complete customization +\newenvironment{sphinxwarning}[1] + {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}} +\newenvironment{sphinxcaution}[1] + {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}} +\newenvironment{sphinxattention}[1] + {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}} +\newenvironment{sphinxdanger}[1] + {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}} +\newenvironment{sphinxerror}[1] + {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}} +% or just use package options + +% the \colorlet of xcolor (if at all loaded) is overkill for our use case +\newcommand{\sphinxcolorlet}[2] + {\expandafter\let\csname\@backslashchar color@#1\expandafter\endcsname + \csname\@backslashchar color@#2\endcsname } + +% the main dispatch for all types of notices +\newenvironment{sphinxadmonition}[2]{% #1=type, #2=heading + % can't use #1 directly in definition of end part + \def\spx@noticetype {#1}% + % set parameters of heavybox/lightbox + \sphinxcolorlet{spx@notice@bordercolor}{sphinx#1BorderColor}% + \sphinxcolorlet{spx@notice@bgcolor}{sphinx#1BgColor}% + \spx@notice@border \dimexpr\csname spx@opt@#1border\endcsname\relax + % start specific environment, passing the heading as argument + \begin{sphinx#1}{#2}} + % workaround some LaTeX "feature" of \end command + {\edef\spx@temp{\noexpand\end{sphinx\spx@noticetype}}\spx@temp} + + +%% PYTHON DOCS MACROS AND ENVIRONMENTS +% (some macros here used by \maketitle in sphinxmanual.cls and sphinxhowto.cls) + +% \moduleauthor{name}{email} +\newcommand{\moduleauthor}[2]{} + +% \sectionauthor{name}{email} +\newcommand{\sectionauthor}[2]{} + +% Allow the release number to be specified independently of the +% \date{}. This allows the date to reflect the document's date and +% release to specify the release that is documented. +% +\newcommand{\py@release}{\releasename\space\version} +\newcommand{\version}{}% part of \py@release, used by title page and headers +% \releaseinfo is used on titlepage (sphinxmanual.cls, sphinxhowto.cls) +\newcommand{\releaseinfo}{} +\newcommand{\setreleaseinfo}[1]{\renewcommand{\releaseinfo}{#1}} +% this is inserted via template and #1=release config variable +\newcommand{\release}[1]{\renewcommand{\version}{#1}} +% this is defined by template to 'releasename' latex_elements key +\newcommand{\releasename}{} +% Fix issue in case release and releasename deliberately left blank +\newcommand{\sphinxheadercomma}{, }% used in fancyhdr header definition +\newcommand{\sphinxifemptyorblank}[1]{% +% test after one expansion of macro #1 if contents is empty or spaces + \if&\expandafter\@firstofone\detokenize\expandafter{#1}&% + \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}% +\AtBeginDocument {% + \sphinxifemptyorblank{\releasename} + {\sphinxifemptyorblank{\version}{\let\sphinxheadercomma\empty}{}} + {}% +}% + +% Allow specification of the author's address separately from the +% author's name. This can be used to format them differently, which +% is a good thing. +% +\newcommand{\py@authoraddress}{} +\newcommand{\authoraddress}[1]{\renewcommand{\py@authoraddress}{#1}} + +% {fulllineitems} is the main environment for object descriptions. +% +\newcommand{\py@itemnewline}[1]{% + \kern\labelsep + \@tempdima\linewidth + \advance\@tempdima \labelwidth\makebox[\@tempdima][l]{#1}% + \kern-\labelsep +} + +\newenvironment{fulllineitems}{% + \begin{list}{}{\labelwidth \leftmargin + \rightmargin \z@ \topsep -\parskip \partopsep \parskip + \itemsep -\parsep + \let\makelabel=\py@itemnewline}% +}{\end{list}} + +% Signatures, possibly multi-line +% +\newlength{\py@argswidth} +\newcommand{\py@sigparams}[2]{% + \parbox[t]{\py@argswidth}{#1\sphinxcode{)}#2}} +\newcommand{\pysigline}[1]{\item[{#1}]} +\newcommand{\pysiglinewithargsret}[3]{% + \settowidth{\py@argswidth}{#1\sphinxcode{(}}% + \addtolength{\py@argswidth}{-2\py@argswidth}% + \addtolength{\py@argswidth}{\linewidth}% + \item[{#1\sphinxcode{(}\py@sigparams{#2}{#3}}]} +\newcommand{\pysigstartmultiline}{% + \def\pysigstartmultiline{\vskip\smallskipamount\parskip\z@skip\itemsep\z@skip}% + \edef\pysigstopmultiline + {\noexpand\leavevmode\parskip\the\parskip\relax\itemsep\the\itemsep\relax}% + \parskip\z@skip\itemsep\z@skip +} + +% Production lists +% +\newenvironment{productionlist}{% +% \def\sphinxoptional##1{{\Large[}##1{\Large]}} + \def\production##1##2{\\\sphinxcode{\sphinxupquote{##1}}&::=&\sphinxcode{\sphinxupquote{##2}}}% + \def\productioncont##1{\\& &\sphinxcode{\sphinxupquote{##1}}}% + \parindent=2em + \indent + \setlength{\LTpre}{0pt}% + \setlength{\LTpost}{0pt}% + \begin{longtable}[l]{lcl} +}{% + \end{longtable} +} + +% Definition lists; requested by AMK for HOWTO documents. Probably useful +% elsewhere as well, so keep in in the general style support. +% +\newenvironment{definitions}{% + \begin{description}% + \def\term##1{\item[{##1}]\mbox{}\\*[0mm]}% +}{% + \end{description}% +} + +%% FROM DOCTUTILS LATEX WRITER +% +% The following is stuff copied from docutils' latex writer. +% +\newcommand{\optionlistlabel}[1]{\normalfont\bfseries #1 \hfill}% \bf deprecated +\newenvironment{optionlist}[1] +{\begin{list}{} + {\setlength{\labelwidth}{#1} + \setlength{\rightmargin}{1cm} + \setlength{\leftmargin}{\rightmargin} + \addtolength{\leftmargin}{\labelwidth} + \addtolength{\leftmargin}{\labelsep} + \renewcommand{\makelabel}{\optionlistlabel}} +}{\end{list}} + +\newlength{\lineblockindentation} +\setlength{\lineblockindentation}{2.5em} +\newenvironment{lineblock}[1] +{\begin{list}{} + {\setlength{\partopsep}{\parskip} + \addtolength{\partopsep}{\baselineskip} + \topsep0pt\itemsep0.15\baselineskip\parsep0pt + \leftmargin#1\relax} + \raggedright} +{\end{list}} + +% From docutils.writers.latex2e +% inline markup (custom roles) +% \DUrole{#1}{#2} tries \DUrole#1{#2} +\providecommand*{\DUrole}[2]{% + \ifcsname DUrole\detokenize{#1}\endcsname + \csname DUrole\detokenize{#1}\endcsname{#2}% + \else% backwards compatibility: try \docutilsrole#1{#2} + \ifcsname docutilsrole\detokenize{#1}\endcsname + \csname docutilsrole\detokenize{#1}\endcsname{#2}% + \else + #2% + \fi + \fi +} + +\providecommand*{\DUprovidelength}[2]{% + \ifdefined#1\else\newlength{#1}\setlength{#1}{#2}\fi +} + +\DUprovidelength{\DUlineblockindent}{2.5em} +\ifdefined\DUlineblock\else + \newenvironment{DUlineblock}[1]{% + \list{}{\setlength{\partopsep}{\parskip} + \addtolength{\partopsep}{\baselineskip} + \setlength{\topsep}{0pt} + \setlength{\itemsep}{0.15\baselineskip} + \setlength{\parsep}{0pt} + \setlength{\leftmargin}{#1}} + \raggedright + } + {\endlist} +\fi + +%% TEXT STYLING +% +% to obtain straight quotes we execute \@noligs as patched by upquote, and +% \scantokens is needed in cases where it would be too late for the macro to +% first set catcodes and then fetch its argument. We also make the contents +% breakable at non-escaped . , ; ? ! / using \sphinxbreaksviaactive, +% and also at \ character (which is escaped to \textbackslash{}). +\protected\def\sphinxtextbackslashbreakbefore + {\discretionary{}{\sphinxafterbreak\sphinx@textbackslash}{\sphinx@textbackslash}} +\protected\def\sphinxtextbackslashbreakafter + {\discretionary{\sphinx@textbackslash}{\sphinxafterbreak}{\sphinx@textbackslash}} +\let\sphinxtextbackslash\sphinxtextbackslashbreakafter +% the macro must be protected if it ends up used in moving arguments, +% in 'alltt' \@noligs is done already, and the \scantokens must be avoided. +\protected\def\sphinxupquote#1{{\def\@tempa{alltt}% + \ifx\@tempa\@currenvir\else + \ifspx@opt@inlineliteralwraps + % break at . , ; ? ! / + \sphinxbreaksviaactive + % break also at \ + \let\sphinx@textbackslash\textbackslash + \let\textbackslash\sphinxtextbackslash + % by default, no continuation symbol on next line but may be added + \let\sphinxafterbreak\sphinxafterbreakofinlineliteral + % do not overwrite the comma set-up + \let\verbatim@nolig@list\sphinx@literal@nolig@list + \fi + % fix a space-gobbling issue due to LaTeX's original \do@noligs +% TODO: using \@noligs as patched by upquote.sty is now unneeded because +% either ` and ' are escaped (non-unicode engines) or they don't build +% ligatures (unicode engines). Thus remove this and unify handling of `, <, >, +% ' and - with the characters . , ; ? ! / as handled via +% \sphinxbreaksviaactive. +% Hence \sphinx@do@noligs will be removed, or rather replaced with code +% inserting discretionaries, as they allow a continuation symbol on start of +% next line to achieve common design with code-blocks. + \let\do@noligs\sphinx@do@noligs + \@noligs\endlinechar\m@ne\everyeof{}% (<- in case inside \sphinxhref) + \expandafter\scantokens + \fi {{#1}}}}% extra brace pair to fix end-space gobbling issue... +\def\sphinx@do@noligs #1{\catcode`#1\active\begingroup\lccode`\~`#1\relax + \lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1 }}} +\def\sphinx@literal@nolig@list {\do\`\do\<\do\>\do\'\do\-}% +\let\sphinxafterbreakofinlineliteral\empty + +% Some custom font markup commands. +\protected\def\sphinxstrong#1{\textbf{#1}} +\protected\def\sphinxcode#1{\texttt{#1}} +\protected\def\sphinxbfcode#1{\textbf{\sphinxcode{#1}}} +\protected\def\sphinxemail#1{\textsf{#1}} +\protected\def\sphinxtablecontinued#1{\textsf{#1}} +\protected\def\sphinxtitleref#1{\emph{#1}} +\protected\def\sphinxmenuselection#1{\emph{#1}} +\protected\def\sphinxguilabel#1{\emph{#1}} +\protected\def\sphinxkeyboard#1{\sphinxcode{#1}} +\protected\def\sphinxaccelerator#1{\underline{#1}} +\protected\def\sphinxcrossref#1{\emph{#1}} +\protected\def\sphinxtermref#1{\emph{#1}} +% \optional is used for ``[, arg]``, i.e. desc_optional nodes. +\long\protected\def\sphinxoptional#1{% + {\textnormal{\Large[}}{#1}\hspace{0.5mm}{\textnormal{\Large]}}} + +% additional customizable styling +\def\sphinxstyleindexentry #1{\texttt{#1}} +\def\sphinxstyleindexextra #1{ (\emph{#1})} +\def\sphinxstyleindexpageref #1{, \pageref{#1}} +\def\sphinxstyleindexpagemain#1{\textbf{#1}} +\protected\def\spxentry#1{#1}% will get \let to \sphinxstyleindexentry in index +\protected\def\spxextra#1{#1}% will get \let to \sphinxstyleindexextra in index +\def\sphinxstyleindexlettergroup #1% + {{\Large\sffamily#1}\nopagebreak\vspace{1mm}} +\def\sphinxstyleindexlettergroupDefault #1% + {{\Large\sffamily\sphinxnonalphabeticalgroupname}\nopagebreak\vspace{1mm}} +\protected\def\sphinxstyletopictitle #1{\textbf{#1}\par\medskip} +\let\sphinxstylesidebartitle\sphinxstyletopictitle +\protected\def\sphinxstyleothertitle #1{\textbf{#1}} +\protected\def\sphinxstylesidebarsubtitle #1{~\\\textbf{#1} \smallskip} +% \text.. commands do not allow multiple paragraphs +\protected\def\sphinxstyletheadfamily {\sffamily} +\protected\def\sphinxstyleemphasis #1{\emph{#1}} +\protected\def\sphinxstyleliteralemphasis#1{\emph{\sphinxcode{#1}}} +\protected\def\sphinxstylestrong #1{\textbf{#1}} +\protected\def\sphinxstyleliteralstrong#1{\sphinxbfcode{#1}} +\protected\def\sphinxstyleabbreviation #1{\textsc{#1}} +\protected\def\sphinxstyleliteralintitle#1{\sphinxcode{#1}} +\newcommand*\sphinxstylecodecontinued[1]{\footnotesize(#1)}% +\newcommand*\sphinxstylecodecontinues[1]{\footnotesize(#1)}% +% figure legend comes after caption and may contain arbitrary body elements +\newenvironment{sphinxlegend}{\par\small}{\par} +% reduce hyperref "Token not allowed in a PDF string" warnings on PDF builds +\AtBeginDocument{\pdfstringdefDisableCommands{% +% all "protected" macros possibly ending up in section titles should be here +% TODO: examine if \sphinxhref, \sphinxurl, \sphinnolinkurl should be handled + \let\sphinxstyleemphasis \@firstofone + \let\sphinxstyleliteralemphasis \@firstofone + \let\sphinxstylestrong \@firstofone + \let\sphinxstyleliteralstrong \@firstofone + \let\sphinxstyleabbreviation \@firstofone + \let\sphinxstyleliteralintitle \@firstofone + \let\sphinxupquote \@firstofone + \let\sphinxstrong \@firstofone + \let\sphinxcode \@firstofone + \let\sphinxbfcode \@firstofone + \let\sphinxemail \@firstofone + \let\sphinxcrossref \@firstofone + \let\sphinxtermref \@firstofone + \let\sphinxhyphen\sphinxhyphenforbookmarks +}} + +% Special characters +% +% This definition prevents en-dash and em-dash TeX ligatures. +% +% It inserts a potential breakpoint after the hyphen. This is to keep in sync +% with behavior in code-blocks, parsed and inline literals. For a breakpoint +% before the hyphen use \leavevmode\kern\z@- (within \makeatletter/\makeatother) +\protected\def\sphinxhyphen#1{-\kern\z@} +% The {} from texescape mark-up is kept, else -- gives en-dash in PDF bookmark +\def\sphinxhyphenforbookmarks{-} + +% For curly braces inside \index macro +\def\sphinxleftcurlybrace{\{} +\def\sphinxrightcurlybrace{\}} + +% Declare Unicode characters used by linux tree command to pdflatex utf8/utf8x +\def\spx@bd#1#2{% + \leavevmode + \begingroup + \ifx\spx@bd@height \@undefined\def\spx@bd@height{\baselineskip}\fi + \ifx\spx@bd@width \@undefined\setbox0\hbox{0}\def\spx@bd@width{\wd0 }\fi + \ifx\spx@bd@thickness\@undefined\def\spx@bd@thickness{.6\p@}\fi + \ifx\spx@bd@lower \@undefined\def\spx@bd@lower{\dp\strutbox}\fi + \lower\spx@bd@lower#1{#2}% + \endgroup +}% +\@namedef{sphinx@u2500}% BOX DRAWINGS LIGHT HORIZONTAL + {\spx@bd{\vbox to\spx@bd@height} + {\vss\hrule\@height\spx@bd@thickness + \@width\spx@bd@width\vss}}% +\@namedef{sphinx@u2502}% BOX DRAWINGS LIGHT VERTICAL + {\spx@bd{\hb@xt@\spx@bd@width} + {\hss\vrule\@height\spx@bd@height + \@width \spx@bd@thickness\hss}}% +\@namedef{sphinx@u2514}% BOX DRAWINGS LIGHT UP AND RIGHT + {\spx@bd{\hb@xt@\spx@bd@width} + {\hss\raise.5\spx@bd@height + \hb@xt@\z@{\hss\vrule\@height.5\spx@bd@height + \@width \spx@bd@thickness\hss}% + \vbox to\spx@bd@height{\vss\hrule\@height\spx@bd@thickness + \@width.5\spx@bd@width\vss}}}% +\@namedef{sphinx@u251C}% BOX DRAWINGS LIGHT VERTICAL AND RIGHT + {\spx@bd{\hb@xt@\spx@bd@width} + {\hss + \hb@xt@\z@{\hss\vrule\@height\spx@bd@height + \@width \spx@bd@thickness\hss}% + \vbox to\spx@bd@height{\vss\hrule\@height\spx@bd@thickness + \@width.5\spx@bd@width\vss}}}% +\protected\def\sphinxunichar#1{\@nameuse{sphinx@u#1}}% + +% Tell TeX about pathological hyphenation cases: +\hyphenation{Base-HTTP-Re-quest-Hand-ler} +\endinput diff --git a/sphinx/sphinx/texinputs/sphinx.xdy b/sphinx/sphinx/texinputs/sphinx.xdy new file mode 100644 index 0000000..edca178 --- /dev/null +++ b/sphinx/sphinx/texinputs/sphinx.xdy @@ -0,0 +1,230 @@ +;;; -*- mode: lisp; coding: utf-8; -*- + +;; Unfortunately xindy is out-of-the-box hyperref-incompatible. This +;; configuration is a workaround, which requires to pass option +;; hyperindex=false to hyperref. +;; textit and emph not currently used, spxpagem replaces former textbf +(define-attributes (("textbf" "textit" "emph" "spxpagem" "default"))) +(markup-locref :open "\textbf{\hyperpage{" :close "}}" :attr "textbf") +(markup-locref :open "\textit{\hyperpage{" :close "}}" :attr "textit") +(markup-locref :open "\emph{\hyperpage{" :close "}}" :attr "emph") +(markup-locref :open "\spxpagem{\hyperpage{" :close "}}" :attr "spxpagem") +(markup-locref :open "\hyperpage{" :close "}" :attr "default") + +(require "numeric-sort.xdy") + +;; xindy base module latex.xdy loads tex.xdy and the latter instructs +;; xindy to ignore **all** TeX macros in .idx entries, except those +;; explicitely described in merge rule. But when after applying all +;; merge rules an empty string results, xindy raises an error: + +;; ERROR: CHAR: index 0 should be less than the length of the string + +;; For example when using pdflatex with utf-8 characters the index +;; file will contain \IeC macros and they will get ignored except if +;; suitable merge rules are loaded early. The texindy script coming +;; with xindy provides this, but only for Latin scripts. The texindy +;; man page says to use rather xelatex or lualatex in case of Cyrillic +;; scripts. + +;; Sphinx contributes LICRcyr2utf8.xdy to provide support for Cyrillic +;; scripts for the pdflatex engine. + +;; Another issue caused by xindy ignoring all TeX macros except those +;; explicitely declared reveals itself when attempting to index ">>>", +;; as the ">" is converted to "\textgreater{}" by Sphinx's LaTeX +;; escaping. + +;; To fix this, Sphinx does **not** use texindy, and does not even +;; load the xindy latex.xdy base module. + +;(require "latex.xdy") + +;; Rather it incorporates some suitable extracts from latex.xdy and +;; tex.xdy with additional Sphinx contributed rules. + +;; But, this means for pdflatex and Latin scripts that the xindy file +;; tex/inputenc/uf8.xdy is not usable because it refers to the macro +;; \IeC only sporadically, and as tex.xdy is not loaded, a rule such as +;; (merge-rule "\'e" "é" :string) +;; does not work, it must be +;; (merge-rule "\IeC {\'e}" "é" :string) +;; So Sphinx contributes LICRlatin2utf8.xdy to mitigate that problem. + +;;;;;;;; extracts from tex.xdy (discarding most original comments): + +;;; +;;; TeX conventions +;;; + +;; Discard leading and trailing white space. Collapse multiple white +;; space characters to blank. + +(merge-rule "^ +" "" :eregexp) +(merge-rule " +$" "" :eregexp) +(merge-rule " +" " " :eregexp) + +;; Handle TeX markup + +(merge-rule "\\([{}$%&#])" "\1" :eregexp) + +;;;;;;;; end of extracts from xindy's tex.xdy + +;;;;;;;; extracts from latex.xdy: + +;; Standard location classes: arabic and roman numbers, and alphabets. + +(define-location-class "arabic-page-numbers" ("arabic-numbers")) +(define-location-class "roman-page-numbers" ("roman-numbers-lowercase")) +(define-location-class "Roman-page-numbers" ("roman-numbers-uppercase")) +(define-location-class "alpha-page-numbers" ("alpha")) +(define-location-class "Alpha-page-numbers" ("ALPHA")) + +;; Output Markup + +(markup-letter-group-list :sep "~n~n \indexspace~n") + +(markup-indexentry :open "~n \item " :depth 0) +(markup-indexentry :open "~n \subitem " :depth 1) +(markup-indexentry :open "~n \subsubitem " :depth 2) + +(markup-locclass-list :open ", " :sep ", ") +(markup-locref-list :sep ", ") + +;;;;;;;; end of extracts from latex.xdy + +;; The LaTeX \index command turns \ into normal character so the TeX macros +;; written to .idx files are not followed by a blank. This is different +;; from non-ascii letters which end up (with pdflatex) as \IeC macros in .idx +;; file, with a blank space after \IeC + +;; Details of the syntax are explained at +;; http://xindy.sourceforge.net/doc/manual-3.html +;; In absence of :string, "xindy uses an auto-detection mechanism to decide, +;; if the pattern is a regular expression or not". But it is not obvious to +;; guess, for example "\\_" is not detected as RE but "\\P\{\}" is, so for +;; being sure we apply the :string switch everywhere and do not use \\ etc... + +;; Go back from sphinx.util.texescape TeX macros to UTF-8 + +(merge-rule "\sphinxleftcurlybrace{}" "{" :string) +(merge-rule "\sphinxrightcurlybrace{}" "}" :string) +(merge-rule "\_" "_" :string) +(merge-rule "{[}" "[" :string) +(merge-rule "{]}" "]" :string) +(merge-rule "\textbackslash{}" "\" :string) ; " for Emacs syntax highlighting +(merge-rule "\textasciitilde{}" "~~" :string); the ~~ escape is needed here +(merge-rule "\textasciicircum{}" "^" :string) +(merge-rule "\sphinxhyphen{}" "-" :string) +(merge-rule "\textquotesingle{}" "'" :string) +(merge-rule "\textasciigrave{}" "`" :string) +(merge-rule "\textless{}" "<" :string) +(merge-rule "\textgreater{}" ">" :string) +(merge-rule "\P{}" "¶" :string) +(merge-rule "\S{}" "§" :string) +(merge-rule "\texteuro{}" "€" :string) +(merge-rule "\(\infty\)" "∞" :string) +(merge-rule "\(\pm\)" "±" :string) +(merge-rule "\(\rightarrow\)" "→" :string) +(merge-rule "\(\checkmark\)" "✓" :string) +(merge-rule "\textendash{}" "–" :string) +(merge-rule "\textbar{}" "|" :string) +(merge-rule "\(\sp{\text{0}}\)" "⁰" :string) +(merge-rule "\(\sp{\text{1}}\)" "¹" :string) +(merge-rule "\(\sp{\text{2}}\)" "²" :string) +(merge-rule "\(\sp{\text{3}}\)" "³" :string) +(merge-rule "\(\sp{\text{4}}\)" "⁴" :string) +(merge-rule "\(\sp{\text{5}}\)" "⁵" :string) +(merge-rule "\(\sp{\text{6}}\)" "⁶" :string) +(merge-rule "\(\sp{\text{7}}\)" "⁷" :string) +(merge-rule "\(\sp{\text{8}}\)" "⁸" :string) +(merge-rule "\(\sp{\text{9}}\)" "⁹" :string) +(merge-rule "\(\sb{\text{0}}\)" "₀" :string) +(merge-rule "\(\sb{\text{1}}\)" "₁" :string) +(merge-rule "\(\sb{\text{2}}\)" "₂" :string) +(merge-rule "\(\sb{\text{3}}\)" "₃" :string) +(merge-rule "\(\sb{\text{4}}\)" "₄" :string) +(merge-rule "\(\sb{\text{5}}\)" "₅" :string) +(merge-rule "\(\sb{\text{6}}\)" "₆" :string) +(merge-rule "\(\sb{\text{7}}\)" "₇" :string) +(merge-rule "\(\sb{\text{8}}\)" "₈" :string) +(merge-rule "\(\sb{\text{9}}\)" "₉" :string) +(merge-rule "\IeC {\textalpha }" "α" :string) +(merge-rule "\IeC {\textbeta }" "β" :string) +(merge-rule "\IeC {\textgamma }" "γ" :string) +(merge-rule "\IeC {\textdelta }" "δ" :string) +(merge-rule "\IeC {\textepsilon }" "ε" :string) +(merge-rule "\IeC {\textzeta }" "ζ" :string) +(merge-rule "\IeC {\texteta }" "η" :string) +(merge-rule "\IeC {\texttheta }" "θ" :string) +(merge-rule "\IeC {\textiota }" "ι" :string) +(merge-rule "\IeC {\textkappa }" "κ" :string) +(merge-rule "\IeC {\textlambda }" "λ" :string) +(merge-rule "\IeC {\textmu }" "μ" :string) +(merge-rule "\IeC {\textnu }" "ν" :string) +(merge-rule "\IeC {\textxi }" "ξ" :string) +(merge-rule "\IeC {\textomicron }" "ο" :string) +(merge-rule "\IeC {\textpi }" "π" :string) +(merge-rule "\IeC {\textrho }" "ρ" :string) +(merge-rule "\IeC {\textsigma }" "σ" :string) +(merge-rule "\IeC {\texttau }" "τ" :string) +(merge-rule "\IeC {\textupsilon }" "υ" :string) +(merge-rule "\IeC {\textphi }" "φ" :string) +(merge-rule "\IeC {\textchi }" "χ" :string) +(merge-rule "\IeC {\textpsi }" "ψ" :string) +(merge-rule "\IeC {\textomega }" "ω" :string) +(merge-rule "\IeC {\textAlpha }" "Α" :string) +(merge-rule "\IeC {\textBeta }" "Β" :string) +(merge-rule "\IeC {\textGamma }" "Γ" :string) +(merge-rule "\IeC {\textDelta }" "Δ" :string) +(merge-rule "\IeC {\textEpsilon }" "Ε" :string) +(merge-rule "\IeC {\textZeta }" "Ζ" :string) +(merge-rule "\IeC {\textEta }" "Η" :string) +(merge-rule "\IeC {\textTheta }" "Θ" :string) +(merge-rule "\IeC {\textIota }" "Ι" :string) +(merge-rule "\IeC {\textKappa }" "Κ" :string) +(merge-rule "\IeC {\textLambda }" "Λ" :string) +(merge-rule "\IeC {\textMu }" "Μ" :string) +(merge-rule "\IeC {\textNu }" "Ν" :string) +(merge-rule "\IeC {\textTheta }" "Θ" :string) +(merge-rule "\IeC {\textIota }" "Ι" :string) +(merge-rule "\IeC {\textKappa }" "Κ" :string) +(merge-rule "\IeC {\textLambda }" "Λ" :string) +(merge-rule "\IeC {\textMu }" "Μ" :string) +(merge-rule "\IeC {\textNu }" "Ν" :string) +(merge-rule "\IeC {\textXi }" "Ξ" :string) +(merge-rule "\IeC {\textOmicron }" "Ο" :string) +(merge-rule "\IeC {\textPi }" "Π" :string) +(merge-rule "\IeC {\textRho }" "Ρ" :string) +(merge-rule "\IeC {\textSigma }" "Σ" :string) +(merge-rule "\IeC {\textTau }" "Τ" :string) +(merge-rule "\IeC {\textUpsilon }" "Υ" :string) +(merge-rule "\IeC {\textPhi }" "Φ" :string) +(merge-rule "\IeC {\textChi }" "Χ" :string) +(merge-rule "\IeC {\textPsi }" "Ψ" :string) +(merge-rule "\IeC {\textOmega }" "Ω" :string) +(merge-rule "\IeC {\textohm }" "Ω" :string) + +;; This xindy module provides some basic support for "see" +(require "makeindex.xdy") + +;; This creates one-letter headings and works fine with utf-8 letters. +;; For Cyrillic with pdflatex works thanks to LICRcyr2utf8.xdy +(require "latin-lettergroups.xdy") + +;; currently we don't (know how to easily) separate "Numbers" from +;; "Symbols" with xindy as is the case with makeindex. +(markup-index :open "\begin{sphinxtheindex} +\let\lettergroup\sphinxstyleindexlettergroup +\let\lettergroupDefault\sphinxstyleindexlettergroupDefault +\let\spxpagem\sphinxstyleindexpagemain +\let\spxentry\sphinxstyleindexentry +\let\spxextra\sphinxstyleindexextra + +" + :close " + +\end{sphinxtheindex} +" + :tree) + diff --git a/sphinx/sphinx/texinputs/sphinxcyrillic.sty b/sphinx/sphinx/texinputs/sphinxcyrillic.sty new file mode 100644 index 0000000..482b4e3 --- /dev/null +++ b/sphinx/sphinx/texinputs/sphinxcyrillic.sty @@ -0,0 +1,55 @@ +%% CYRILLIC IN NON-CYRILLIC DOCUMENTS (pdflatex only) +% +% refs: https://tex.stackexchange.com/q/460271/ +\ProvidesPackage{sphinxcyrillic}% + [2018/11/21 v2.0 support for Cyrillic in non-Cyrillic documents] +\RequirePackage{kvoptions} +\SetupKeyvalOptions{prefix=spx@cyropt@} % use \spx@cyropt@ prefix +\DeclareBoolOption[false]{Xtwo} +\DeclareBoolOption[false]{TtwoA} +\DeclareDefaultOption{\@unknownoptionerror} +\ProcessLocalKeyvalOptions* % ignore class options + +\ifspx@cyropt@Xtwo +% original code by tex.sx user egreg (updated 2019/10/28): +% https://tex.stackexchange.com/a/460325/ +% 159 Cyrillic glyphs as available in X2 TeX 8bit font encoding +% This assumes inputenc loaded with utf8 option, or LaTeX release +% as recent as 2018/04/01 which does it automatically. + \@tfor\next:=% + {Ё}{Ђ}{Є}{Ѕ}{І}{Ј}{Љ}{Њ}{Ћ}{Ў}{Џ}{А}{Б}{В}{Г}{Д}{Е}{Ж}{З}{И}{Й}% + {К}{Л}{М}{Н}{О}{П}{Р}{С}{Т}{У}{Ф}{Х}{Ц}{Ч}{Ш}{Щ}{Ъ}{Ы}{Ь}{Э}{Ю}% + {Я}{а}{б}{в}{г}{д}{е}{ж}{з}{и}{й}{к}{л}{м}{н}{о}{п}{р}{с}{т}{у}% + {ф}{х}{ц}{ч}{ш}{щ}{ъ}{ы}{ь}{э}{ю}{я}{ё}{ђ}{є}{ѕ}{і}{ј}{љ}{њ}{ћ}% + {ў}{џ}{Ѣ}{ѣ}{Ѫ}{ѫ}{Ѵ}{ѵ}{Ґ}{ґ}{Ғ}{ғ}{Ҕ}{ҕ}{Җ}{җ}{Ҙ}{ҙ}{Қ}{қ}{Ҝ}{ҝ}% + {Ҟ}{ҟ}{Ҡ}{ҡ}{Ң}{ң}{Ҥ}{ҥ}{Ҧ}{ҧ}{Ҩ}{ҩ}{Ҫ}{ҫ}{Ҭ}{ҭ}{Ү}{ү}{Ұ}{ұ}{Ҳ}{ҳ}% + {Ҵ}{ҵ}{Ҷ}{ҷ}{Ҹ}{ҹ}{Һ}{һ}{Ҽ}{ҽ}{Ҿ}{ҿ}{Ӏ}{Ӄ}{ӄ}{Ӆ}{ӆ}{Ӈ}{ӈ}{Ӌ}{ӌ}% + {Ӎ}{ӎ}{Ӕ}{ӕ}{Ә}{ә}{Ӡ}{ӡ}{Ө}{ө}\do + {% + \begingroup\def\IeC{\protect\DeclareTextSymbolDefault}% + \protected@edef\@temp{\endgroup + \@ifl@t@r{\fmtversion}{2019/10/01}{\csname u8:\next\endcsname}{\next}}% + \@temp{X2}% + }% +\else +\ifspx@cyropt@TtwoA +% original code by tex.sx user jfbu: +% https://tex.stackexchange.com/a/460305/ +% 63*2+1=127 Cyrillic glyphs as found in T2A 8bit TeX font-encoding + \@tfor\@tempa:=% + {ae}{a}{b}{chrdsc}{chvcrs}{ch}{c}{dje}{dze}{dzhe}{d}{erev}{ery}{e}% + {f}{ghcrs}{gup}{g}{hdsc}{hrdsn}{h}{ie}{ii}{ishrt}{i}{je}% + {kbeak}{kdsc}{kvcrs}{k}{lje}{l}{m}{ndsc}{ng}{nje}{n}{otld}{o}{p}{r}% + {schwa}{sdsc}{sftsn}{shch}{shha}{sh}{s}{tshe}{t}{ushrt}{u}{v}% + {ya}{yhcrs}{yi}{yo}{yu}{y}{zdsc}{zhdsc}{zh}{z}\do + {% + \expandafter\DeclareTextSymbolDefault\expandafter + {\csname cyr\@tempa\endcsname}{T2A}% + \expandafter\uppercase\expandafter{\expandafter + \def\expandafter\@tempa\expandafter{\@tempa}}% + \expandafter\DeclareTextSymbolDefault\expandafter + {\csname CYR\@tempa\endcsname}{T2A}% + }% + \DeclareTextSymbolDefault{\CYRpalochka}{T2A}% +\fi\fi +\endinput diff --git a/sphinx/sphinx/texinputs/sphinxhowto.cls b/sphinx/sphinx/texinputs/sphinxhowto.cls new file mode 100644 index 0000000..57d73ce --- /dev/null +++ b/sphinx/sphinx/texinputs/sphinxhowto.cls @@ -0,0 +1,102 @@ +% +% sphinxhowto.cls for Sphinx (http://sphinx-doc.org/) +% + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{sphinxhowto}[2019/12/01 v2.3.0 Document class (Sphinx howto)] + +% 'oneside' option overriding the 'twoside' default +\newif\if@oneside +\DeclareOption{oneside}{\@onesidetrue} +% Pass remaining document options to the parent class. +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\sphinxdocclass}} +\ProcessOptions\relax + +% Default to two-side document +\if@oneside +% nothing to do (oneside is the default) +\else +\PassOptionsToClass{twoside}{\sphinxdocclass} +\fi + +\LoadClass{\sphinxdocclass} + +% Set some sane defaults for section numbering depth and TOC depth. You can +% reset these counters in your preamble. +% +\setcounter{secnumdepth}{2} +\setcounter{tocdepth}{2}% i.e. section and subsection + +% Adapt \and command to the flushright context of \sphinxmaketitle, to +% avoid ragged line endings if author names do not fit all on one single line +\DeclareRobustCommand{\and}{% + \end{tabular}\kern-\tabcolsep + \allowbreak + \hskip\dimexpr1em+\tabcolsep\@plus.17fil\begin{tabular}[t]{c}% +}% +% If it is desired that each author name be on its own line, use in preamble: +%\DeclareRobustCommand{\and}{% +% \end{tabular}\kern-\tabcolsep\\\begin{tabular}[t]{c}% +%}% +% Change the title page to look a bit better, and fit in with the fncychap +% ``Bjarne'' style a bit better. +% +\newcommand{\sphinxmaketitle}{% + \noindent\rule{\textwidth}{1pt}\par + \begingroup % for PDF information dictionary + \def\endgraf{ }\def\and{\& }% + \pdfstringdefDisableCommands{\def\\{, }}% overwrite hyperref setup + \hypersetup{pdfauthor={\@author}, pdftitle={\@title}}% + \endgroup + \begin{flushright} + \sphinxlogo + \py@HeaderFamily + {\Huge \@title }\par + {\itshape\large \py@release \releaseinfo}\par + \vspace{25pt} + {\Large + \begin{tabular}[t]{c} + \@author + \end{tabular}\kern-\tabcolsep}\par + \vspace{25pt} + \@date \par + \py@authoraddress \par + \end{flushright} + \@thanks + \setcounter{footnote}{0} + \let\thanks\relax\let\maketitle\relax + %\gdef\@thanks{}\gdef\@author{}\gdef\@title{} +} + +\newcommand{\sphinxtableofcontents}{% + \begingroup + \parskip \z@skip + \sphinxtableofcontentshook + \tableofcontents + \endgroup + \noindent\rule{\textwidth}{1pt}\par + \vspace{12pt}% +} +\newcommand\sphinxtableofcontentshook{} +\pagenumbering{arabic} + +% Fix the bibliography environment to add an entry to the Table of +% Contents. +% For an article document class this environment is a section, +% so no page break before it. +% +\newenvironment{sphinxthebibliography}[1]{% + % \phantomsection % not needed here since TeXLive 2010's hyperref + \begin{thebibliography}{#1}% + \addcontentsline{toc}{section}{\ifdefined\refname\refname\else\ifdefined\bibname\bibname\fi\fi}}{\end{thebibliography}} + + +% Same for the indices. +% The memoir class already does this, so we don't duplicate it in that case. +% +\@ifclassloaded{memoir} + {\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}} + {\newenvironment{sphinxtheindex}{% + \phantomsection % needed because no chapter, section, ... is created by theindex + \begin{theindex}% + \addcontentsline{toc}{section}{\indexname}}{\end{theindex}}} diff --git a/sphinx/sphinx/texinputs/sphinxmanual.cls b/sphinx/sphinx/texinputs/sphinxmanual.cls new file mode 100644 index 0000000..718189d --- /dev/null +++ b/sphinx/sphinx/texinputs/sphinxmanual.cls @@ -0,0 +1,128 @@ +% +% sphinxmanual.cls for Sphinx (http://sphinx-doc.org/) +% + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{sphinxmanual}[2019/12/01 v2.3.0 Document class (Sphinx manual)] + +% chapters starting at odd pages (overridden by 'openany' document option) +\PassOptionsToClass{openright}{\sphinxdocclass} + +% 'oneside' option overriding the 'twoside' default +\newif\if@oneside +\DeclareOption{oneside}{\@onesidetrue} +% Pass remaining document options to the parent class. +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\sphinxdocclass}} +\ProcessOptions\relax + +% Defaults two-side document +\if@oneside +% nothing to do (oneside is the default) +\else +\PassOptionsToClass{twoside}{\sphinxdocclass} +\fi + +\LoadClass{\sphinxdocclass} + +% Set some sane defaults for section numbering depth and TOC depth. You can +% reset these counters in your preamble. +% +\setcounter{secnumdepth}{2} +\setcounter{tocdepth}{1} + +% Adapt \and command to the flushright context of \sphinxmaketitle, to +% avoid ragged line endings if author names do not fit all on one single line +\DeclareRobustCommand{\and}{% + \end{tabular}\kern-\tabcolsep + \allowbreak + \hskip\dimexpr1em+\tabcolsep\@plus.17fil\begin{tabular}[t]{c}% +}% +% If it is desired that each author name be on its own line, use in preamble: +%\DeclareRobustCommand{\and}{% +% \end{tabular}\kern-\tabcolsep\\\begin{tabular}[t]{c}% +%}% +% Change the title page to look a bit better, and fit in with the fncychap +% ``Bjarne'' style a bit better. +% +\newcommand{\sphinxmaketitle}{% + \let\sphinxrestorepageanchorsetting\relax + \ifHy@pageanchor\def\sphinxrestorepageanchorsetting{\Hy@pageanchortrue}\fi + \hypersetup{pageanchor=false}% avoid duplicate destination warnings + \begin{titlepage}% + \let\footnotesize\small + \let\footnoterule\relax + \noindent\rule{\textwidth}{1pt}\par + \begingroup % for PDF information dictionary + \def\endgraf{ }\def\and{\& }% + \pdfstringdefDisableCommands{\def\\{, }}% overwrite hyperref setup + \hypersetup{pdfauthor={\@author}, pdftitle={\@title}}% + \endgroup + \begin{flushright}% + \sphinxlogo + \py@HeaderFamily + {\Huge \@title \par} + {\itshape\LARGE \py@release\releaseinfo \par} + \vfill + {\LARGE + \begin{tabular}[t]{c} + \@author + \end{tabular}\kern-\tabcolsep + \par} + \vfill\vfill + {\large + \@date \par + \vfill + \py@authoraddress \par + }% + \end{flushright}%\par + \@thanks + \end{titlepage}% + \setcounter{footnote}{0}% + \let\thanks\relax\let\maketitle\relax + %\gdef\@thanks{}\gdef\@author{}\gdef\@title{} + \clearpage + \ifdefined\sphinxbackoftitlepage\sphinxbackoftitlepage\fi + \if@openright\cleardoublepage\else\clearpage\fi + \sphinxrestorepageanchorsetting +} + +\newcommand{\sphinxtableofcontents}{% + \pagenumbering{roman}% + \begingroup + \parskip \z@skip + \sphinxtableofcontentshook + \tableofcontents + \endgroup + % before resetting page counter, let's do the right thing. + \if@openright\cleardoublepage\else\clearpage\fi + \pagenumbering{arabic}% +} + +% This is needed to get the width of the section # area wide enough in the +% library reference. Doing it here keeps it the same for all the manuals. +% +\newcommand{\sphinxtableofcontentshook}{% + \renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.6em}}% + \renewcommand*\l@subsection{\@dottedtocline{2}{4.1em}{3.5em}}% +} + +% Fix the bibliography environment to add an entry to the Table of +% Contents. +% For a report document class this environment is a chapter. +% +\newenvironment{sphinxthebibliography}[1]{% + \if@openright\cleardoublepage\else\clearpage\fi + % \phantomsection % not needed here since TeXLive 2010's hyperref + \begin{thebibliography}{#1}% + \addcontentsline{toc}{chapter}{\bibname}}{\end{thebibliography}} + +% Same for the indices. +% The memoir class already does this, so we don't duplicate it in that case. +% +\@ifclassloaded{memoir} + {\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}} + {\newenvironment{sphinxtheindex}{% + \if@openright\cleardoublepage\else\clearpage\fi + \phantomsection % needed as no chapter, section, ... created + \begin{theindex}% + \addcontentsline{toc}{chapter}{\indexname}}{\end{theindex}}} diff --git a/sphinx/sphinx/texinputs/sphinxmulticell.sty b/sphinx/sphinx/texinputs/sphinxmulticell.sty new file mode 100644 index 0000000..a645491 --- /dev/null +++ b/sphinx/sphinx/texinputs/sphinxmulticell.sty @@ -0,0 +1,317 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{sphinxmulticell}% + [2017/02/23 v1.6 better span rows and columns of a table (Sphinx team)]% +\DeclareOption*{\PackageWarning{sphinxmulticell}{Option `\CurrentOption' is unknown}}% +\ProcessOptions\relax +% +% --- MULTICOLUMN --- +% standard LaTeX's \multicolumn +% 1. does not allow verbatim contents, +% 2. interacts very poorly with tabulary. +% +% It is needed to write own macros for Sphinx: to allow code-blocks in merged +% cells rendered by tabular/longtable, and to allow multi-column cells with +% paragraphs to be taken into account sanely by tabulary algorithm for column +% widths. +% +% This requires quite a bit of hacking. First, in Sphinx, the multi-column +% contents will *always* be wrapped in a varwidth environment. The issue +% becomes to pass it the correct target width. We must trick tabulary into +% believing the multicolumn is simply separate columns, else tabulary does not +% incorporate the contents in its algorithm. But then we must clear the +% vertical rules... +% +% configuration of tabulary +\setlength{\tymin}{3\fontcharwd\font`0 }% minimal width of "squeezed" columns +\setlength{\tymax}{10000pt}% allow enough room for paragraphs to "compete" +% we need access to tabulary's final computed width. \@tempdima is too volatile +% to hope it has kept tabulary's value when \sphinxcolwidth needs it. +\newdimen\sphinx@TY@tablewidth +\def\tabulary{% + \def\TY@final{\sphinx@TY@tablewidth\@tempdima\tabular}% + \let\endTY@final\endtabular + \TY@tabular}% +% next hack is needed only if user has set latex_use_latex_multicolumn to True: +% it fixes tabulary's bug with \multicolumn defined "short" in first pass. (if +% upstream tabulary adds a \long, our extra one causes no harm) +\def\sphinx@tempa #1\def\multicolumn#2#3#4#5#6#7#8#9\sphinx@tempa + {\def\TY@tab{#1\long\def\multicolumn####1####2####3{\multispan####1\relax}#9}}% +\expandafter\sphinx@tempa\TY@tab\sphinx@tempa +% +% TN. 1: as \omit is never executed, Sphinx multicolumn does not need to worry +% like standard multicolumn about |l| vs l|. On the other hand it assumes +% columns are separated by a | ... (if not it will add extraneous +% \arrayrulewidth space for each column separation in its estimate of available +% width). +% +% TN. 1b: as Sphinx multicolumn uses neither \omit nor \span, it can not +% (easily) get rid of extra macros from >{...} or <{...} between columns. At +% least, it has been made compatible with colortbl's \columncolor. +% +% TN. 2: tabulary's second pass is handled like tabular/longtable's single +% pass, with the difference that we hacked \TY@final to set in +% \sphinx@TY@tablewidth the final target width as computed by tabulary. This is +% needed only to handle columns with a "horizontal" specifier: "p" type columns +% (inclusive of tabulary's LJRC) holds the target column width in the +% \linewidth dimension. +% +% TN. 3: use of \begin{sphinxmulticolumn}...\end{sphinxmulticolumn} mark-up +% would need some hacking around the fact that groups can not span across table +% cells (the code does inserts & tokens, see TN1b). It was decided to keep it +% simple with \sphinxstartmulticolumn...\sphinxstopmulticolumn. +% +% MEMO about nesting: if sphinxmulticolumn is encountered in a nested tabular +% inside a tabulary it will think to be at top level in the tabulary. But +% Sphinx generates no nested tables, and if some LaTeX macro uses internally a +% tabular this will not have a \sphinxstartmulticolumn within it! +% +\def\sphinxstartmulticolumn{% + \ifx\equation$% $ tabulary's first pass + \expandafter\sphinx@TYI@start@multicolumn + \else % either not tabulary or tabulary's second pass + \expandafter\sphinx@start@multicolumn + \fi +}% +\def\sphinxstopmulticolumn{% + \ifx\equation$% $ tabulary's first pass + \expandafter\sphinx@TYI@stop@multicolumn + \else % either not tabulary or tabulary's second pass + \ignorespaces + \fi +}% +\def\sphinx@TYI@start@multicolumn#1{% + % use \gdef always to avoid stack space build up + \gdef\sphinx@tempa{#1}\begingroup\setbox\z@\hbox\bgroup +}% +\def\sphinx@TYI@stop@multicolumn{\egroup % varwidth was used with \tymax + \xdef\sphinx@tempb{\the\dimexpr\wd\z@/\sphinx@tempa}% per column width + \endgroup + \expandafter\sphinx@TYI@multispan\expandafter{\sphinx@tempa}% +}% +\def\sphinx@TYI@multispan #1{% + \kern\sphinx@tempb\ignorespaces % the per column occupied width + \ifnum#1>\@ne % repeat, taking into account subtleties of TeX's & ... + \expandafter\sphinx@TYI@multispan@next\expandafter{\the\numexpr#1-\@ne\expandafter}% + \fi +}% +\def\sphinx@TYI@multispan@next{&\relax\sphinx@TYI@multispan}% +% +% Now the branch handling either the second pass of tabulary or the single pass +% of tabular/longtable. This is the delicate part where we gather the +% dimensions from the p columns either set-up by tabulary or by user p column +% or Sphinx \X, \Y columns. The difficulty is that to get the said width, the +% template must be inserted (other hacks would be horribly complicated except +% if we rewrote crucial parts of LaTeX's \@array !) and we can not do +% \omit\span like standard \multicolumn's easy approach. Thus we must cancel +% the \vrule separators. Also, perhaps the column specifier is of the l, c, r +% type, then we attempt an ad hoc rescue to give varwidth a reasonable target +% width. +\def\sphinx@start@multicolumn#1{% + \gdef\sphinx@multiwidth{0pt}\gdef\sphinx@tempa{#1}\sphinx@multispan{#1}% +}% +\def\sphinx@multispan #1{% + \ifnum#1=\@ne\expandafter\sphinx@multispan@end + \else\expandafter\sphinx@multispan@next + \fi {#1}% +}% +\def\sphinx@multispan@next #1{% + % trick to recognize L, C, R, J or p, m, b type columns + \ifdim\baselineskip>\z@ + \gdef\sphinx@tempb{\linewidth}% + \else + % if in an l, r, c type column, try and hope for the best + \xdef\sphinx@tempb{\the\dimexpr(\ifx\TY@final\@undefined\linewidth\else + \sphinx@TY@tablewidth\fi-\arrayrulewidth)/\sphinx@tempa + -\tw@\tabcolsep-\arrayrulewidth\relax}% + \fi + \noindent\kern\sphinx@tempb\relax + \xdef\sphinx@multiwidth + {\the\dimexpr\sphinx@multiwidth+\sphinx@tempb+\tw@\tabcolsep+\arrayrulewidth}% + % hack the \vline and the colortbl macros + \sphinx@hack@vline\sphinx@hack@CT&\relax + % repeat + \expandafter\sphinx@multispan\expandafter{\the\numexpr#1-\@ne}% +}% +% packages like colortbl add group levels, we need to "climb back up" to be +% able to hack the \vline and also the colortbl inserted tokens. This creates +% empty space whether or not the columns were | separated: +\def\sphinx@hack@vline{\ifnum\currentgrouptype=6\relax + \kern\arrayrulewidth\arrayrulewidth\z@\else\aftergroup\sphinx@hack@vline\fi}% +\def\sphinx@hack@CT{\ifnum\currentgrouptype=6\relax + \let\CT@setup\sphinx@CT@setup\else\aftergroup\sphinx@hack@CT\fi}% +% It turns out \CT@row@color is not expanded contrarily to \CT@column@color +% during LaTeX+colortbl preamble preparation, hence it would be possible for +% \sphinx@CT@setup to discard only the column color and choose to obey or not +% row color and cell color. It would even be possible to propagate cell color +% to row color for the duration of the Sphinx multicolumn... the (provisional?) +% choice has been made to cancel the colortbl colours for the multicolumn +% duration. +\def\sphinx@CT@setup #1\endgroup{\endgroup}% hack to remove colour commands +\def\sphinx@multispan@end#1{% + % first, trace back our steps horizontally + \noindent\kern-\dimexpr\sphinx@multiwidth\relax + % and now we set the final computed width for the varwidth environment + \ifdim\baselineskip>\z@ + \xdef\sphinx@multiwidth{\the\dimexpr\sphinx@multiwidth+\linewidth}% + \else + \xdef\sphinx@multiwidth{\the\dimexpr\sphinx@multiwidth+ + (\ifx\TY@final\@undefined\linewidth\else + \sphinx@TY@tablewidth\fi-\arrayrulewidth)/\sphinx@tempa + -\tw@\tabcolsep-\arrayrulewidth\relax}% + \fi + % we need to remove colour set-up also for last cell of the multi-column + \aftergroup\sphinx@hack@CT +}% +\newcommand*\sphinxcolwidth[2]{% + % this dimension will always be used for varwidth, and serves as maximum + % width when cells are merged either via multirow or multicolumn or both, + % as always their contents is wrapped in varwidth environment. + \ifnum#1>\@ne % multi-column (and possibly also multi-row) + % we wrote our own multicolumn code especially to handle that (and allow + % verbatim contents) + \ifx\equation$%$ + \tymax % first pass of tabulary (cf MEMO above regarding nesting) + \else % the \@gobble thing is for compatibility with standard \multicolumn + \sphinx@multiwidth\@gobble{#1/#2}% + \fi + \else % single column multirow + \ifx\TY@final\@undefined % not a tabulary. + \ifdim\baselineskip>\z@ + % in a p{..} type column, \linewidth is the target box width + \linewidth + \else + % l, c, r columns. Do our best. + \dimexpr(\linewidth-\arrayrulewidth)/#2- + \tw@\tabcolsep-\arrayrulewidth\relax + \fi + \else % in tabulary + \ifx\equation$%$% first pass + \tymax % it is set to a big value so that paragraphs can express themselves + \else + % second pass. + \ifdim\baselineskip>\z@ + \linewidth % in a L, R, C, J column or a p, \X, \Y ... + \else + % we have hacked \TY@final to put in \sphinx@TY@tablewidth the table width + \dimexpr(\sphinx@TY@tablewidth-\arrayrulewidth)/#2- + \tw@\tabcolsep-\arrayrulewidth\relax + \fi + \fi + \fi + \fi +}% +% fallback default in case user has set latex_use_latex_multicolumn to True: +% \sphinxcolwidth will use this only inside LaTeX's standard \multicolumn +\def\sphinx@multiwidth #1#2{\dimexpr % #1 to gobble the \@gobble (!) + (\ifx\TY@final\@undefined\linewidth\else\sphinx@TY@tablewidth\fi + -\arrayrulewidth)*#2-\tw@\tabcolsep-\arrayrulewidth\relax}% +% +% --- MULTIROW --- +% standard \multirow +% 1. does not allow verbatim contents, +% 2. does not allow blank lines in its argument, +% 3. its * specifier means to typeset "horizontally" which is very +% bad for paragraph content. 2016 version has = specifier but it +% must be used with p type columns only, else results are bad, +% 4. it requires manual intervention if the contents is too long to fit +% in the asked-for number of rows. +% 5. colour panels (either from \rowcolor or \columncolor) will hide +% the bottom part of multirow text, hence manual tuning is needed +% to put the multirow insertion at the _bottom_. +% +% The Sphinx solution consists in always having contents wrapped +% in a varwidth environment so that it makes sense to estimate how many +% lines it will occupy, and then ensure by insertion of suitable struts +% that the table rows have the needed height. The needed mark-up is done +% by LaTeX writer, which has its own id for the merged cells. +% +% The colour issue is solved by clearing colour panels in all cells, +% whether or not the multirow is single-column or multi-column. +% +% In passing we obtain baseline alignements across rows (only if +% \arraystretch is 1, as LaTeX's does not obey \arraystretch in "p" +% multi-line contents, only first and last line...) +% +% TODO: examine the situation with \arraystretch > 1. The \extrarowheight +% is hopeless for multirow anyhow, it makes baseline alignment strictly +% impossible. +\newcommand\sphinxmultirow[2]{\begingroup + % #1 = nb of spanned rows, #2 = Sphinx id of "cell", #3 = contents + % but let's fetch #3 in a way allowing verbatim contents ! + \def\sphinx@nbofrows{#1}\def\sphinx@cellid{#2}% + \afterassignment\sphinx@multirow\let\next= +}% +\def\sphinx@multirow {% + \setbox\z@\hbox\bgroup\aftergroup\sphinx@@multirow\strut +}% +\def\sphinx@@multirow {% + % The contents, which is a varwidth environment, has been captured in + % \box0 (a \hbox). + % We have with \sphinx@cellid an assigned unique id. The goal is to give + % about the same height to all the involved rows. + % For this Sphinx will insert a \sphinxtablestrut{cell_id} mark-up + % in LaTeX file and the expansion of the latter will do the suitable thing. + \dimen@\dp\z@ + \dimen\tw@\ht\@arstrutbox + \advance\dimen@\dimen\tw@ + \advance\dimen\tw@\dp\@arstrutbox + \count@=\dimen@ % type conversion dim -> int + \count\tw@=\dimen\tw@ + \divide\count@\count\tw@ % TeX division truncates + \advance\dimen@-\count@\dimen\tw@ + % 1300sp is about 0.02pt. For comparison a rule default width is 0.4pt. + % (note that if \count@ holds 0, surely \dimen@>1300sp) + \ifdim\dimen@>1300sp \advance\count@\@ne \fi + % now \count@ holds the count L of needed "lines" + % and \sphinx@nbofrows holds the number N of rows + % we have L >= 1 and N >= 1 + % if L is a multiple of N, ... clear what to do ! + % else write L = qN + r, 1 <= r < N and we will + % arrange for each row to have enough space for: + % q+1 "lines" in each of the first r rows + % q "lines" in each of the (N-r) bottom rows + % for a total of (q+1) * r + q * (N-r) = q * N + r = L + % It is possible that q == 0. + \count\tw@\count@ + % the TeX division truncates + \divide\count\tw@\sphinx@nbofrows\relax + \count4\count\tw@ % q + \multiply\count\tw@\sphinx@nbofrows\relax + \advance\count@-\count\tw@ % r + \expandafter\xdef\csname sphinx@tablestrut_\sphinx@cellid\endcsname + {\noexpand\sphinx@tablestrut{\the\count4}{\the\count@}{\sphinx@cellid}}% + \dp\z@\z@ + % this will use the real height if it is >\ht\@arstrutbox + \sphinxtablestrut{\sphinx@cellid}\box\z@ + \endgroup % group was opened in \sphinxmultirow +}% +\newcommand*\sphinxtablestrut[1]{% + % #1 is a "cell_id", i.e. the id of a merged group of table cells + \csname sphinx@tablestrut_#1\endcsname +}% +% LaTeX typesets the table row by row, hence each execution can do +% an update for the next row. +\newcommand*\sphinx@tablestrut[3]{\begingroup + % #1 = q, #2 = (initially) r, #3 = cell_id, q+1 lines in first r rows + % if #2 = 0, create space for max(q,1) table lines + % if #2 > 0, create space for q+1 lines and decrement #2 + \leavevmode + \count@#1\relax + \ifnum#2=\z@ + \ifnum\count@=\z@\count@\@ne\fi + \else + % next row will be with a #2 decremented by one + \expandafter\xdef\csname sphinx@tablestrut_#3\endcsname + {\noexpand\sphinx@tablestrut{#1}{\the\numexpr#2-\@ne}{#3}}% + \advance\count@\@ne + \fi + \vrule\@height\ht\@arstrutbox + \@depth\dimexpr\count@\ht\@arstrutbox+\count@\dp\@arstrutbox-\ht\@arstrutbox\relax + \@width\z@ + \endgroup + % we need this to avoid colour panels hiding bottom parts of multirow text + \sphinx@hack@CT +}% +\endinput +%% +%% End of file `sphinxmulticell.sty'. diff --git a/sphinx/sphinx/texinputs_win/Makefile_t b/sphinx/sphinx/texinputs_win/Makefile_t new file mode 100644 index 0000000..ef23485 --- /dev/null +++ b/sphinx/sphinx/texinputs_win/Makefile_t @@ -0,0 +1,86 @@ +# Makefile for Sphinx LaTeX output + +ALLDOCS = $(basename $(wildcard *.tex)) +ALLPDF = $(addsuffix .pdf,$(ALLDOCS)) +ALLDVI = $(addsuffix .dvi,$(ALLDOCS)) +ALLPS = $(addsuffix .ps,$(ALLDOCS)) + +# Prefix for archive names +ARCHIVEPREFIX = +# Additional LaTeX options +LATEXOPTS = +# format: pdf or dvi +FMT = pdf + +LATEX = latex +PDFLATEX = {{ latex_engine }} +MAKEINDEX = makeindex + +{% if latex_engine == 'platex' %} +all: all-pdf-ja +all-pdf: all-pdf-ja +{% else %} +all: $(ALLPDF) +all-pdf: $(ALLPDF) +{% endif -%} +all-dvi: $(ALLDVI) +all-ps: $(ALLPS) + +all-pdf-ja: + for f in *.pdf *.png *.gif *.jpg *.jpeg; do extractbb $$f; done + for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done + for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done + for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done + -for f in *.idx; do mendex -U -f -d "`basename $$f .idx`.dic" -s python.ist $$f; done + for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done + for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done + for f in *.dvi; do dvipdfmx $$f; done + +zip: all-$(FMT) + mkdir $(ARCHIVEPREFIX)docs-$(FMT) + cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT) + zip -q -r -9 $(ARCHIVEPREFIX)docs-$(FMT).zip $(ARCHIVEPREFIX)docs-$(FMT) + rm -r $(ARCHIVEPREFIX)docs-$(FMT) + +tar: all-$(FMT) + mkdir $(ARCHIVEPREFIX)docs-$(FMT) + cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT) + tar cf $(ARCHIVEPREFIX)docs-$(FMT).tar $(ARCHIVEPREFIX)docs-$(FMT) + rm -r $(ARCHIVEPREFIX)docs-$(FMT) + +gz: tar + gzip -9 < $(ARCHIVEPREFIX)docs-$(FMT).tar > $(ARCHIVEPREFIX)docs-$(FMT).tar.gz + +bz2: tar + bzip2 -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar + +xz: tar + xz -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar + +# The number of LaTeX runs is quite conservative, but I don't expect it +# to get run often, so the little extra time won't hurt. +%.dvi: %.tex + $(LATEX) $(LATEXOPTS) '$<' + $(LATEX) $(LATEXOPTS) '$<' + $(LATEX) $(LATEXOPTS) '$<' + -$(MAKEINDEX) -s python.ist '$(basename $<).idx' + $(LATEX) $(LATEXOPTS) '$<' + $(LATEX) $(LATEXOPTS) '$<' + +%.pdf: %.tex + $(PDFLATEX) $(LATEXOPTS) '$<' + $(PDFLATEX) $(LATEXOPTS) '$<' + $(PDFLATEX) $(LATEXOPTS) '$<' + -$(MAKEINDEX) -s python.ist '$(basename $<).idx' + $(PDFLATEX) $(LATEXOPTS) '$<' + $(PDFLATEX) $(LATEXOPTS) '$<' + +%.ps: %.dvi + dvips '$<' + +clean: + rm -f *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ps *.tar *.tar.gz *.tar.bz2 *.tar.xz $(ALLPDF) $(ALLDVI) + +.PHONY: all all-pdf all-dvi all-ps clean zip tar gz bz2 xz +.PHONY: all-pdf-ja + diff --git a/sphinx/sphinx/themes/agogo/layout.html b/sphinx/sphinx/themes/agogo/layout.html new file mode 100644 index 0000000..26c37b1 --- /dev/null +++ b/sphinx/sphinx/themes/agogo/layout.html @@ -0,0 +1,104 @@ +{# + agogo/layout.html + ~~~~~~~~~~~~~~~~~ + + Sphinx layout template for the agogo theme, originally written + by Andi Albrecht. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{%- extends "basic/layout.html" %} + +{% block header %} + +{% endblock %} + +{%- macro agogo_sidebar() %} + {%- block sidebartoc %} +

    {{ _('Table of Contents') }}

    + {{ toctree() }} + {%- endblock %} + {%- block sidebarsearch %} +
    +

    {{ _('Search') }}

    + +
    + {%- endblock %} +{% endmacro %} + +{% block content %} +
    +
    + {%- if not theme_rightsidebar|tobool %} + + {%- endif %} +
    + {%- block document %} + {{ super() }} + {%- endblock %} +
    + {%- if theme_rightsidebar|tobool %} + + {%- endif %} +
    +
    +
    +{% endblock %} + +{% block footer %} + +{% endblock %} + +{% block relbar1 %}{% endblock %} +{% block relbar2 %}{% endblock %} diff --git a/sphinx/sphinx/themes/agogo/static/agogo.css_t b/sphinx/sphinx/themes/agogo/static/agogo.css_t new file mode 100644 index 0000000..d74604a --- /dev/null +++ b/sphinx/sphinx/themes/agogo/static/agogo.css_t @@ -0,0 +1,539 @@ +/* + * agogo.css_t + * ~~~~~~~~~~~ + * + * Sphinx stylesheet -- agogo theme. + * + * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +* { + margin: 0px; + padding: 0px; +} + +body { + font-family: {{ theme_bodyfont }}; + line-height: 1.4em; + color: black; + background-color: {{ theme_bgcolor }}; +} + + +/* Page layout */ + +div.header, div.content, div.footer { + width: {{ theme_pagewidth }}; + margin-left: auto; + margin-right: auto; +} + +div.header-wrapper { + background: {{ theme_headerbg }}; + border-bottom: 3px solid #2e3436; +} + + +/* Default body styles */ +a { + color: {{ theme_linkcolor }}; +} + +div.bodywrapper a, div.footer a { + text-decoration: underline; +} + +.clearer { + clear: both; +} + +.left { + float: left; +} + +.right { + float: right; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +h1, h2, h3, h4 { + font-family: {{ theme_headerfont }}; + font-weight: normal; + color: {{ theme_headercolor2 }}; + margin-bottom: .8em; +} + +h1 { + color: {{ theme_headercolor1 }}; +} + +h2 { + padding-bottom: .5em; + border-bottom: 1px solid {{ theme_headercolor2 }}; +} + +a.headerlink { + visibility: hidden; + color: #dddddd; + padding-left: .3em; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +img { + border: 0; +} + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 2px 7px 1px 7px; + border-left: 0.2em solid black; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +dt:target, .highlighted { + background-color: #fbe54e; +} + +/* Header */ + +div.header { + padding-top: 10px; + padding-bottom: 10px; +} + +div.header .headertitle { + font-family: {{ theme_headerfont }}; + font-weight: normal; + font-size: 180%; + letter-spacing: .08em; + margin-bottom: .8em; +} + +div.header .headertitle a { + color: white; +} + +div.header div.rel { + margin-top: 1em; +} + +div.header div.rel a { + color: {{ theme_headerlinkcolor }}; + letter-spacing: .1em; + text-transform: uppercase; +} + +p.logo { + float: right; +} + +img.logo { + border: 0; +} + + +/* Content */ +div.content-wrapper { + background-color: white; + padding-top: 20px; + padding-bottom: 20px; +} + +div.document { + width: {{ theme_documentwidth }}; + float: left; +} + +div.body { + {%- if theme_rightsidebar|tobool %} + padding-right: 2em; + {%- else %} + padding-left: 2em; + {% endif %} + text-align: {{ theme_textalign }}; +} + +div.document h1 { + line-height: 120%; +} + +div.document ul { + margin: 1.5em; + list-style-type: square; +} + +div.document dd { + margin-left: 1.2em; + margin-top: .4em; + margin-bottom: 1em; +} + +div.document .section { + margin-top: 1.7em; +} +div.document .section:first-child { + margin-top: 0px; +} + +div.document div.highlight { + padding: 3px; + background-color: #eeeeec; + border-top: 2px solid #dddddd; + border-bottom: 2px solid #dddddd; + margin-top: .8em; + margin-bottom: .8em; +} + +div.document div.literal-block-wrapper { + margin-top: .8em; + margin-bottom: .8em; +} + +div.document div.literal-block-wrapper div.highlight { + margin: 0; +} + +div.document div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.document div.code-block-caption span.caption-text { +} + +div.document h2 { + margin-top: .7em; +} + +div.document p { + margin-bottom: .5em; +} + +div.document li.toctree-l1 { + margin-bottom: 1em; +} + +div.document .descname { + font-weight: bold; +} + +div.document .sig-paren { + font-size: larger; +} + +div.document .docutils.literal { + background-color: #eeeeec; + padding: 1px; +} + +div.document .docutils.xref.literal { + background-color: transparent; + padding: 0px; +} + +div.document blockquote { + margin: 1em; +} + +div.document ol { + margin: 1.5em; +} + + +/* Sidebar */ + +div.sidebar { + width: {{ theme_sidebarwidth|todim }}; + {%- if theme_rightsidebar|tobool %} + float: right; + {%- else %} + float: left; + {%- endif %} + font-size: .9em; +} + +div.sidebar a, div.header a { + text-decoration: none; +} + +div.sidebar a:hover, div.header a:hover { + text-decoration: underline; +} + +div.sidebar h3 { + color: #2e3436; + text-transform: uppercase; + font-size: 130%; + letter-spacing: .1em; +} + +div.sidebar ul { + list-style-type: none; +} + +div.sidebar li.toctree-l1 a { + display: block; + padding: 1px; + border: 1px solid #dddddd; + background-color: #eeeeec; + margin-bottom: .4em; + padding-left: 3px; + color: #2e3436; +} + +div.sidebar li.toctree-l2 a { + background-color: transparent; + border: none; + margin-left: 1em; + border-bottom: 1px solid #dddddd; +} + +div.sidebar li.toctree-l3 a { + background-color: transparent; + border: none; + margin-left: 2em; + border-bottom: 1px solid #dddddd; +} + +div.sidebar li.toctree-l2:last-child a { + border-bottom: none; +} + +div.sidebar li.toctree-l1.current a { + border-right: 5px solid {{ theme_headerlinkcolor }}; +} + +div.sidebar li.toctree-l1.current li.toctree-l2 a { + border-right: none; +} + +div.sidebar input[type="text"] { + width: 170px; +} + +div.sidebar input[type="submit"] { + width: 30px; +} + + +/* Footer */ + +div.footer-wrapper { + background: {{ theme_footerbg }}; + border-top: 4px solid #babdb6; + padding-top: 10px; + padding-bottom: 10px; + min-height: 80px; +} + +div.footer, div.footer a { + color: #888a85; +} + +div.footer .right { + text-align: right; +} + +div.footer .left { + text-transform: uppercase; +} + + +/* Styles copied from basic theme */ + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-right { + text-align: right; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +div.figure p.caption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text { +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- viewcode extension ---------------------------------------------------- */ + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family:: {{ theme_bodyfont }}; +} + +div.viewcode-block:target { + margin: -1px -3px; + padding: 0 3px; + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} + +div.code-block-caption { + background-color: #ddd; + color: #333; + padding: 2px 5px; + font-size: small; +} + +/* -- math display ---------------------------------------------------------- */ + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} diff --git a/sphinx/sphinx/themes/agogo/static/bgfooter.png b/sphinx/sphinx/themes/agogo/static/bgfooter.png new file mode 100644 index 0000000..b7c7cad Binary files /dev/null and b/sphinx/sphinx/themes/agogo/static/bgfooter.png differ diff --git a/sphinx/sphinx/themes/agogo/static/bgtop.png b/sphinx/sphinx/themes/agogo/static/bgtop.png new file mode 100644 index 0000000..0574088 Binary files /dev/null and b/sphinx/sphinx/themes/agogo/static/bgtop.png differ diff --git a/sphinx/sphinx/themes/agogo/theme.conf b/sphinx/sphinx/themes/agogo/theme.conf new file mode 100644 index 0000000..6a4457e --- /dev/null +++ b/sphinx/sphinx/themes/agogo/theme.conf @@ -0,0 +1,20 @@ +[theme] +inherit = basic +stylesheet = agogo.css +pygments_style = tango + +[options] +bodyfont = "Verdana", Arial, sans-serif +headerfont = "Georgia", "Times New Roman", serif +pagewidth = 70em +documentwidth = 50em +rightsidebar = true +sidebarwidth = 20em +bgcolor = #eeeeec +headerbg = #555573 url(bgtop.png) top left repeat-x +footerbg = url(bgfooter.png) top left repeat-x +linkcolor = #ce5c00 +headercolor1 = #204a87 +headercolor2 = #3465a4 +headerlinkcolor = #fcaf3e +textalign = justify diff --git a/sphinx/sphinx/themes/basic/changes/frameset.html b/sphinx/sphinx/themes/basic/changes/frameset.html new file mode 100644 index 0000000..2331ec1 --- /dev/null +++ b/sphinx/sphinx/themes/basic/changes/frameset.html @@ -0,0 +1,11 @@ + + + + {% trans version=version|e, docstitle=docstitle|e %}Changes in Version {{ version }} — {{ docstitle }}{% endtrans %} + + + + + + diff --git a/sphinx/sphinx/themes/basic/changes/rstsource.html b/sphinx/sphinx/themes/basic/changes/rstsource.html new file mode 100644 index 0000000..c93a28d --- /dev/null +++ b/sphinx/sphinx/themes/basic/changes/rstsource.html @@ -0,0 +1,15 @@ + + + + {% trans filename=filename, docstitle=docstitle|e %}{{ filename }} — {{ docstitle }}{% endtrans %} + + + +
    +      {{ text }}
    +    
    + + diff --git a/sphinx/sphinx/themes/basic/changes/versionchanges.html b/sphinx/sphinx/themes/basic/changes/versionchanges.html new file mode 100644 index 0000000..c42cef4 --- /dev/null +++ b/sphinx/sphinx/themes/basic/changes/versionchanges.html @@ -0,0 +1,33 @@ +{% macro entries(changes) %} +
      {% for entry, docname, lineno in changes %} +
    • {{ entry }}
    • +{% endfor %}
    +{% endmacro -%} + + + + + + {% trans version=version|e, docstitle=docstitle|e %}Changes in Version {{ version }} — {{ docstitle }}{% endtrans %} + + +
    +
    +

    {% trans version=version|e %}Automatically generated list of changes in version {{ version }}{% endtrans %}

    +

    {{ _('Library changes') }}

    + {% for modname, changes in libchanges %} +

    {{ modname }}

    + {{ entries(changes) }} + {% endfor %} +

    {{ _('C API changes') }}

    + {{ entries(apichanges) }} +

    {{ _('Other changes') }}

    + {% for (fn, title), changes in otherchanges %} +

    {{ title }} ({{ fn }})

    + {{ entries(changes) }} + {% endfor %} +
    +
    + + diff --git a/sphinx/sphinx/themes/basic/defindex.html b/sphinx/sphinx/themes/basic/defindex.html new file mode 100644 index 0000000..2f8477c --- /dev/null +++ b/sphinx/sphinx/themes/basic/defindex.html @@ -0,0 +1,35 @@ +{# + basic/defindex.html + ~~~~~~~~~~~~~~~~~~~ + + Default template for the "index" page. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#}{{ warn('Now base template defindex.html is deprecated.') }} +{%- extends "layout.html" %} +{% set title = _('Overview') %} +{% block body %} +

    {{ docstitle|e }}

    +

    + {{ _('Welcome! This is') }} + {% block description %}{{ _('the documentation for') }} {{ project|e }} + {{ release|e }}{% if last_updated %}, {{ _('last updated') }} {{ last_updated|e }}{% endif %}{% endblock %}. +

    + {% block tables %} +

    {{ _('Indices and tables:') }}

    + + +
    + + + + + +
    + {% endblock %} +{% endblock %} diff --git a/sphinx/sphinx/themes/basic/domainindex.html b/sphinx/sphinx/themes/basic/domainindex.html new file mode 100644 index 0000000..f4f7423 --- /dev/null +++ b/sphinx/sphinx/themes/basic/domainindex.html @@ -0,0 +1,56 @@ +{# + basic/domainindex.html + ~~~~~~~~~~~~~~~~~~~~~~ + + Template for domain indices (module index, ...). + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{%- extends "layout.html" %} +{% set title = indextitle %} +{% block extrahead %} +{{ super() }} +{% if not embedded and collapse_index %} + +{% endif %} +{% endblock %} +{% block body %} + + {%- set groupid = idgen() %} + +

    {{ indextitle }}

    + +
    + {%- for (letter, entries) in content %} + {{ letter }} + {%- if not loop.last %} | {% endif %} + {%- endfor %} +
    + + + {%- for letter, entries in content %} + + + {%- for (name, grouptype, page, anchor, extra, qualifier, description) + in entries %} + + + + {%- endfor %} + {%- endfor %} +
     
    + {{ letter }}
    {% if grouptype == 1 -%} + + {%- endif %}{% if grouptype == 2 %}   {% endif %} + {% if page %}{% endif -%} + {{ name|e }} + {%- if page %}{% endif %} + {%- if extra %} ({{ extra|e }}){% endif -%} + {% if qualifier %}{{ qualifier|e }}:{% endif %} + {{ description|e }}
    + +{% endblock %} diff --git a/sphinx/sphinx/themes/basic/genindex-single.html b/sphinx/sphinx/themes/basic/genindex-single.html new file mode 100644 index 0000000..b327eb6 --- /dev/null +++ b/sphinx/sphinx/themes/basic/genindex-single.html @@ -0,0 +1,63 @@ +{# + basic/genindex-single.html + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Template for a "single" page of a split index. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{% macro indexentries(firstname, links) %} + {%- if links -%} + + {%- if links[0][0] %}{% endif -%} + {{ firstname|e }} + {%- if links[0][0] %}{% endif -%} + + + {%- for ismain, link in links[1:] -%} + , {% if ismain %}{% endif -%} + [{{ loop.index }}] + {%- if ismain %}{% endif -%} + + {%- endfor %} + {%- else %} + {{ firstname|e }} + {%- endif %} +{% endmacro %} + +{%- extends "layout.html" %} +{% set title = _('Index') %} +{% block body %} + +

    {% trans key=key %}Index – {{ key }}{% endtrans %}

    + + + {%- for column in entries|slice(2) if column %} + + {%- endfor %} +
      + {%- for entryname, (links, subitems, _) in column %} +
    • {{ indexentries(entryname, links) }} + {%- if subitems %} +
        + {%- for subentryname, subentrylinks in subitems %} +
      • {{ indexentries(subentryname, subentrylinks) }}
      • + {%- endfor %} +
      + {%- endif -%}
    • + {%- endfor %} +
    + +{% endblock %} + +{% block sidebarrel %} +

    {{ _('Index') }}

    +

    {% for key, dummy in genindexentries -%} + {{ key }} + {% if not loop.last %}| {% endif %} + {%- endfor %}

    + +

    {{ _('Full index on one page') }}

    + {{ super() }} +{% endblock %} diff --git a/sphinx/sphinx/themes/basic/genindex-split.html b/sphinx/sphinx/themes/basic/genindex-split.html new file mode 100644 index 0000000..e9db857 --- /dev/null +++ b/sphinx/sphinx/themes/basic/genindex-split.html @@ -0,0 +1,41 @@ +{# + basic/genindex-split.html + ~~~~~~~~~~~~~~~~~~~~~~~~~ + + Template for a "split" index overview page. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{%- extends "layout.html" %} +{% set title = _('Index') %} +{% block body %} + +

    {{ _('Index') }}

    + +

    {{ _('Index pages by letter') }}:

    + +
    +

    {% for key, dummy in genindexentries -%} + {{ key }} + {% if not loop.last %}| {% endif %} + {%- endfor %}

    + +

    {{ _('Full index on one page') }} + ({{ _('can be huge') }})

    +
    + +{% endblock %} + +{% block sidebarrel %} +{% if split_index %} +

    Index

    +

    {% for key, dummy in genindexentries -%} + {{ key }} + {% if not loop.last %}| {% endif %} + {%- endfor %}

    + +

    {{ _('Full index on one page') }}

    +{% endif %} + {{ super() }} +{% endblock %} diff --git a/sphinx/sphinx/themes/basic/genindex.html b/sphinx/sphinx/themes/basic/genindex.html new file mode 100644 index 0000000..690823d --- /dev/null +++ b/sphinx/sphinx/themes/basic/genindex.html @@ -0,0 +1,75 @@ +{# + basic/genindex.html + ~~~~~~~~~~~~~~~~~~~ + + Template for an "all-in-one" index. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{% macro indexentries(firstname, links) %} + {%- if links -%} + + {%- if links[0][0] %}{% endif -%} + {{ firstname|e }} + {%- if links[0][0] %}{% endif -%} + + + {%- for ismain, link in links[1:] -%} + , {% if ismain %}{% endif -%} + [{{ loop.index }}] + {%- if ismain %}{% endif -%} + + {%- endfor %} + {%- else %} + {{ firstname|e }} + {%- endif %} +{% endmacro %} + +{%- extends "layout.html" %} +{% set title = _('Index') %} +{% block body %} + +

    {{ _('Index') }}

    + +
    + {% for key, dummy in genindexentries -%} + {{ key }} + {% if not loop.last %}| {% endif %} + {%- endfor %} +
    + +{%- for key, entries in genindexentries %} +

    {{ key }}

    + + {%- for column in entries|slice_index(2) if column %} + + {%- endfor %} +
      + {%- for entryname, (links, subitems, _) in column %} +
    • {{ indexentries(entryname, links) }} + {%- if subitems %} +
        + {%- for subentryname, subentrylinks in subitems %} +
      • {{ indexentries(subentryname, subentrylinks) }}
      • + {%- endfor %} +
      + {%- endif -%}
    • + {%- endfor %} +
    +{% endfor %} + +{% endblock %} + +{% block sidebarrel %} +{% if split_index %} +

    {{ _('Index') }}

    +

    {% for key, dummy in genindexentries -%} + {{ key }} + {% if not loop.last %}| {% endif %} + {%- endfor %}

    + +

    {{ _('Full index on one page') }}

    +{% endif %} + {{ super() }} +{% endblock %} diff --git a/sphinx/sphinx/themes/basic/globaltoc.html b/sphinx/sphinx/themes/basic/globaltoc.html new file mode 100644 index 0000000..59cab98 --- /dev/null +++ b/sphinx/sphinx/themes/basic/globaltoc.html @@ -0,0 +1,11 @@ +{# + basic/globaltoc.html + ~~~~~~~~~~~~~~~~~~~~ + + Sphinx sidebar template: global table of contents. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +

    {{ _('Table of Contents') }}

    +{{ toctree() }} diff --git a/sphinx/sphinx/themes/basic/layout.html b/sphinx/sphinx/themes/basic/layout.html new file mode 100644 index 0000000..0ab2afe --- /dev/null +++ b/sphinx/sphinx/themes/basic/layout.html @@ -0,0 +1,215 @@ +{# + basic/layout.html + ~~~~~~~~~~~~~~~~~ + + Master layout template for Sphinx themes. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{%- block doctype -%}{%- if html5_doctype %} + +{%- else %} + +{%- endif %}{%- endblock %} +{%- set reldelim1 = reldelim1 is not defined and ' »' or reldelim1 %} +{%- set reldelim2 = reldelim2 is not defined and ' |' or reldelim2 %} +{%- set render_sidebar = (not embedded) and (not theme_nosidebar|tobool) and + (sidebars != []) %} +{%- set url_root = pathto('', 1) %} +{# XXX necessary? #} +{%- if url_root == '#' %}{% set url_root = '' %}{% endif %} +{%- if not embedded and docstitle %} + {%- set titlesuffix = " — "|safe + docstitle|e %} +{%- else %} + {%- set titlesuffix = "" %} +{%- endif %} + +{%- macro relbar() %} + +{%- endmacro %} + +{%- macro sidebar() %} + {%- if render_sidebar %} + + {%- endif %} +{%- endmacro %} + +{%- macro script() %} + + {%- for js in script_files %} + {{ js_tag(js) }} + {%- endfor %} +{%- endmacro %} + +{%- macro css() %} + + + {%- for css in css_files %} + {%- if css|attr("filename") %} + {{ css_tag(css) }} + {%- else %} + + {%- endif %} + {%- endfor %} +{%- endmacro %} + +{%- if html_tag %} +{{ html_tag }} +{%- else %} + +{%- endif %} + + {%- if not html5_doctype and not skip_ua_compatible %} + + {%- endif %} + {%- if use_meta_charset or html5_doctype %} + + {%- else %} + + {%- endif %} + {{- metatags }} + {%- block htmltitle %} + {{ title|striptags|e }}{{ titlesuffix }} + {%- endblock %} + {%- block css %} + {{- css() }} + {%- endblock %} + {%- if not embedded %} + {%- block scripts %} + {{- script() }} + {%- endblock %} + {%- if pageurl %} + + {%- endif %} + {%- if use_opensearch %} + + {%- endif %} + {%- if favicon %} + + {%- endif %} + {%- endif %} +{%- block linktags %} + {%- if hasdoc('about') %} + + {%- endif %} + {%- if hasdoc('genindex') %} + + {%- endif %} + {%- if hasdoc('search') %} + + {%- endif %} + {%- if hasdoc('copyright') %} + + {%- endif %} + {%- if next %} + + {%- endif %} + {%- if prev %} + + {%- endif %} +{%- endblock %} +{%- block extrahead %} {% endblock %} + + {%- block body_tag %}{% endblock %} +{%- block header %}{% endblock %} + +{%- block relbar1 %}{{ relbar() }}{% endblock %} + +{%- block content %} + {%- block sidebar1 %} {# possible location for sidebar #} {% endblock %} + +
    + {%- block document %} +
    + {%- if render_sidebar %} +
    + {%- endif %} +
    + {% block body %} {% endblock %} +
    + {%- if render_sidebar %} +
    + {%- endif %} +
    + {%- endblock %} + + {%- block sidebar2 %}{{ sidebar() }}{% endblock %} +
    +
    +{%- endblock %} + +{%- block relbar2 %}{{ relbar() }}{% endblock %} + +{%- block footer %} + +{%- endblock %} + + diff --git a/sphinx/sphinx/themes/basic/localtoc.html b/sphinx/sphinx/themes/basic/localtoc.html new file mode 100644 index 0000000..0e1c551 --- /dev/null +++ b/sphinx/sphinx/themes/basic/localtoc.html @@ -0,0 +1,13 @@ +{# + basic/localtoc.html + ~~~~~~~~~~~~~~~~~~~ + + Sphinx sidebar template: local table of contents. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{%- if display_toc %} +

    {{ _('Table of Contents') }}

    + {{ toc }} +{%- endif %} diff --git a/sphinx/sphinx/themes/basic/opensearch.xml b/sphinx/sphinx/themes/basic/opensearch.xml new file mode 100644 index 0000000..0cad296 --- /dev/null +++ b/sphinx/sphinx/themes/basic/opensearch.xml @@ -0,0 +1,13 @@ + + + {{ project|e }} + {% trans docstitle=docstitle|e %}Search {{ docstitle }}{% endtrans %} + utf-8 + + {{ docstitle|e }} +{%- if favicon %} + {{ use_opensearch }}/{{ pathto('_static/' + favicon, 1)|e }} +{%- endif %} +{% block extra %} {# Put e.g. an element here. #} {% endblock %} + diff --git a/sphinx/sphinx/themes/basic/page.html b/sphinx/sphinx/themes/basic/page.html new file mode 100644 index 0000000..c9c3511 --- /dev/null +++ b/sphinx/sphinx/themes/basic/page.html @@ -0,0 +1,13 @@ +{# + basic/page.html + ~~~~~~~~~~~~~~~ + + Master template for simple pages. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{%- extends "layout.html" %} +{% block body %} + {{ body }} +{% endblock %} diff --git a/sphinx/sphinx/themes/basic/relations.html b/sphinx/sphinx/themes/basic/relations.html new file mode 100644 index 0000000..5a2113c --- /dev/null +++ b/sphinx/sphinx/themes/basic/relations.html @@ -0,0 +1,19 @@ +{# + basic/relations.html + ~~~~~~~~~~~~~~~~~~~~ + + Sphinx sidebar template: relation links. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{%- if prev %} +

    {{ _('Previous topic') }}

    +

    {{ prev.title }}

    +{%- endif %} +{%- if next %} +

    {{ _('Next topic') }}

    +

    {{ next.title }}

    +{%- endif %} diff --git a/sphinx/sphinx/themes/basic/search.html b/sphinx/sphinx/themes/basic/search.html new file mode 100644 index 0000000..2673369 --- /dev/null +++ b/sphinx/sphinx/themes/basic/search.html @@ -0,0 +1,55 @@ +{# + basic/search.html + ~~~~~~~~~~~~~~~~~ + + Template for the search page. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{%- extends "layout.html" %} +{% set title = _('Search') %} +{%- block scripts %} + {{ super() }} + +{%- endblock %} +{% block extrahead %} + + {{ super() }} +{% endblock %} +{% block body %} +

    {{ _('Search') }}

    +
    + +

    + {% trans %}Please activate JavaScript to enable the search + functionality.{% endtrans %} +

    +
    +

    + {% trans %}Searching for multiple words only shows matches that contain + all words.{% endtrans %} +

    +
    + + + +
    + {% if search_performed %} +

    {{ _('Search Results') }}

    + {% if not search_results %} +

    {{ _('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.') }}

    + {% endif %} + {% endif %} +
    + {% if search_results %} +
      + {% for href, caption, context in search_results %} +
    • {{ caption }} +
      {{ context|e }}
      +
    • + {% endfor %} +
    + {% endif %} +
    +{% endblock %} diff --git a/sphinx/sphinx/themes/basic/searchbox.html b/sphinx/sphinx/themes/basic/searchbox.html new file mode 100644 index 0000000..6ce2027 --- /dev/null +++ b/sphinx/sphinx/themes/basic/searchbox.html @@ -0,0 +1,21 @@ +{# + basic/searchbox.html + ~~~~~~~~~~~~~~~~~~~~ + + Sphinx sidebar template: quick search box. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{%- if pagename != "search" and builder != "singlehtml" %} + + +{%- endif %} diff --git a/sphinx/sphinx/themes/basic/sourcelink.html b/sphinx/sphinx/themes/basic/sourcelink.html new file mode 100644 index 0000000..2ff5d1b --- /dev/null +++ b/sphinx/sphinx/themes/basic/sourcelink.html @@ -0,0 +1,18 @@ +{# + basic/sourcelink.html + ~~~~~~~~~~~~~~~~~~~~~ + + Sphinx sidebar template: "show source" link. + + :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{%- if show_source and has_source and sourcename %} +
    +

    {{ _('This Page') }}

    + +
    +{%- endif %} diff --git a/sphinx/sphinx/themes/basic/static/basic.css_t b/sphinx/sphinx/themes/basic/static/basic.css_t new file mode 100644 index 0000000..ca3c17b --- /dev/null +++ b/sphinx/sphinx/themes/basic/static/basic.css_t @@ -0,0 +1,797 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: {{ theme_sidebarwidth|todim }}; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: {{ theme_body_min_width|todim }}; + max-width: {{ theme_body_max_width|todim }}; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a.brackets:before, +span.brackets > a:before{ + content: "["; +} + +a.brackets:after, +span.brackets > a:after { + content: "]"; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > p:first-child, +td > p:first-child { + margin-top: 0px; +} + +th > p:last-child, +td > p:last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist td { + vertical-align: top; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +li > p:first-child { + margin-top: 0px; +} + +li > p:last-child { + margin-bottom: 0px; +} + +dl.footnote > dt, +dl.citation > dt { + float: left; + margin-right: 0.5em; +} + +dl.footnote > dd, +dl.citation > dd { + margin-bottom: 0em; +} + +dl.footnote > dd:after, +dl.citation > dd:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dt:after { + content: ":"; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > p:first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0.5em; + content: ":"; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; + margin: 1em 0; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding: 0 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div > table.highlighttable { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +div.code-block-caption + div > div.highlight > pre { + margin-top: 0; +} + +table.highlighttable td.linenos, +div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +code.descclassname { + background-color: transparent; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: relative; + left: 0px; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} diff --git a/sphinx/sphinx/themes/basic/static/doctools.js b/sphinx/sphinx/themes/basic/static/doctools.js new file mode 100644 index 0000000..daccd20 --- /dev/null +++ b/sphinx/sphinx/themes/basic/static/doctools.js @@ -0,0 +1,315 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + */ +jQuery.urldecode = function(x) { + return decodeURIComponent(x).replace(/\+/g, ' '); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { + this.initOnKeyListeners(); + } + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated === 'undefined') + return string; + return (typeof translated === 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated === 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + if (!body.length) { + body = $('body'); + } + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) === 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this === '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + }, + + initOnKeyListeners: function() { + $(document).keydown(function(event) { + var activeElementType = document.activeElement.tagName; + // don't navigate when in search box or textarea + if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' + && !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) { + switch (event.keyCode) { + case 37: // left + var prevHref = $('link[rel="prev"]').prop('href'); + if (prevHref) { + window.location.href = prevHref; + return false; + } + case 39: // right + var nextHref = $('link[rel="next"]').prop('href'); + if (nextHref) { + window.location.href = nextHref; + return false; + } + } + } + }); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/sphinx/sphinx/themes/basic/static/documentation_options.js_t b/sphinx/sphinx/themes/basic/static/documentation_options.js_t new file mode 100644 index 0000000..8afaac2 --- /dev/null +++ b/sphinx/sphinx/themes/basic/static/documentation_options.js_t @@ -0,0 +1,12 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '{{ release|e }}', + LANGUAGE: '{{ language }}', + COLLAPSE_INDEX: false, + BUILDER: '{{ builder }}', + FILE_SUFFIX: '{{ file_suffix }}', + LINK_SUFFIX: '{{ link_suffix }}', + HAS_SOURCE: {{ has_source|lower }}, + SOURCELINK_SUFFIX: '{{ sourcelink_suffix }}', + NAVIGATION_WITH_KEYS: {{ 'true' if theme_navigation_with_keys|tobool else 'false'}} +}; diff --git a/sphinx/sphinx/themes/basic/static/file.png b/sphinx/sphinx/themes/basic/static/file.png new file mode 100644 index 0000000..a858a41 Binary files /dev/null and b/sphinx/sphinx/themes/basic/static/file.png differ diff --git a/sphinx/sphinx/themes/basic/static/jquery-3.4.1.js b/sphinx/sphinx/themes/basic/static/jquery-3.4.1.js new file mode 100644 index 0000000..773ad95 --- /dev/null +++ b/sphinx/sphinx/themes/basic/static/jquery-3.4.1.js @@ -0,0 +1,10598 @@ +/*! + * jQuery JavaScript Library v3.4.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2019-05-01T21:04Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var document = window.document; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + return typeof obj === "function" && typeof obj.nodeType !== "number"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.4.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android <=4.0 only + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a global context + globalEval: function( code, options ) { + DOMEval( code, { nonce: options && options.nonce } ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android <=4.0 only + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.4 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2019-04-08 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rhtml = /HTML$/i, + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !nonnativeSelectorCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) && + + // Support: IE 8 only + // Exclude object elements + (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && rdescend.test( selector ) ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[i] = "#" + nid + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement("fieldset"); + + try { + return !!fn( el ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + var namespace = elem.namespaceURI, + docElem = (elem.ownerDocument || elem).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( preferredDoc !== document && + (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( el ) { + el.className = "i"; + return !el.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( el ) { + el.appendChild( document.createComment("") ); + return !el.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID filter and find + if ( support.getById ) { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( (elem = elems[i++]) ) { + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( el ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll(":enabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll(":disabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( el ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + if ( support.matchesSelector && documentIsHTML && + !nonnativeSelectorCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) { + nonnativeSelectorCache( expr, true ); + } + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return (sel + "").replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? + argument + length : + argument > length ? + length : + argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( (oldCache = uniqueCache[ key ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( el ) { + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( el ) { + return el.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( typeof elem.contentDocument !== "undefined" ) { + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + +var swap = function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE <=9 only + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
    " ], + col: [ 2, "", "
    " ], + tr: [ 2, "", "
    " ], + td: [ 3, "", "
    " ], + + _default: [ 0, "", "" ] +}; + +// Support: IE <=9 only +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). +function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); +} + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + // Make a writable jQuery.Event from the native event object + var event = jQuery.event.fix( nativeEvent ); + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + return result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); +} + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + delegateType: delegateType + }; +} ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + /* eslint-disable max-len */ + + // See https://github.com/eslint/eslint/issues/3229 + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + + /* eslint-enable */ + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + } ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined +function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + // Support: IE 9-11 only + // Also use offsetWidth/offsetHeight for when box sizing is unreliable + // We use getClientRects() to check for hidden/disconnected. + // In those cases, the computed value can be trusted to be border-box + if ( ( !support.boxSizingReliable() && isBorderBox || + val === "auto" || + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = Date.now(); + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + + +jQuery._evalUrl = function( url, options ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options ); + } + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " +{%- endblock %} + +{# put the sidebar before the body #} +{% block sidebar1 %}{{ sidebar() }}{% endblock %} +{% block sidebar2 %}{% endblock %} + +{# doctype override #} +{%- block doctype %} + +{%- endblock %} + +{%- block extrahead %} + + +{%- endblock %} diff --git a/sphinx/sphinx/themes/bizstyle/static/background_b01.png b/sphinx/sphinx/themes/bizstyle/static/background_b01.png new file mode 100644 index 0000000..353f26d Binary files /dev/null and b/sphinx/sphinx/themes/bizstyle/static/background_b01.png differ diff --git a/sphinx/sphinx/themes/bizstyle/static/bizstyle.css_t b/sphinx/sphinx/themes/bizstyle/static/bizstyle.css_t new file mode 100644 index 0000000..b13395b --- /dev/null +++ b/sphinx/sphinx/themes/bizstyle/static/bizstyle.css_t @@ -0,0 +1,513 @@ +/* + * bizstyle.css_t + * ~~~~~~~~~~~~~~ + * + * Sphinx stylesheet -- business style theme. + * + * :copyright: Copyright 2011-2014 by Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; + font-size: 14px; + letter-spacing: -0.01em; + line-height: 150%; + text-align: center; + background-color: white; + background-image: url(background_b01.png); + color: black; + padding: 0; + border-right: 1px solid {{ theme_maincolor }}; + border-left: 1px solid {{ theme_maincolor }}; + + margin: 0px 40px 0px 40px; +} + +div.document { + background-color: white; + text-align: left; + background-repeat: repeat-x; + + -moz-box-shadow: 2px 2px 5px #000; + -webkit-box-shadow: 2px 2px 5px #000; +} + +div.bodywrapper { + margin: 0 0 0 240px; + border-left: 1px solid #ccc; +} + +div.body { + margin: 0; + padding: 0.5em 20px 20px 20px; +} + +{%- if theme_rightsidebar|tobool %} +div.bodywrapper { + margin: 0 calc({{ theme_sidebarwidth|todim }} + 30px) 0 0; + border-right: 1px solid #ccc; +} +{%- else %} +div.bodywrapper { + margin: 0 0 0 calc({{ theme_sidebarwidth|todim }} + 30px); +} +{%- endif %} + +div.related { + font-size: 1em; + + -moz-box-shadow: 2px 2px 5px #000; + -webkit-box-shadow: 2px 2px 5px #000; +} + +div.related ul { + background-color: {{ theme_maincolor }}; + height: 100%; + overflow: hidden; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; +} + +div.related ul li { + color: white; + margin: 0; + padding: 0; + height: 2em; + float: left; +} + +div.related ul li.right { + float: right; + margin-right: 5px; +} + +div.related ul li a { + margin: 0; + padding: 0 5px 0 5px; + line-height: 1.75em; + color: #fff; +} + +div.related ul li a:hover { + color: #fff; + text-decoration: underline; +} + +div.sphinxsidebarwrapper { + padding: 0; +} + +div.sphinxsidebar { + margin: 0; + padding: 0.5em 12px 12px 12px; + width: {{ theme_sidebarwidth|todim }}; + {%- if theme_rightsidebar|tobool %} + float: right; + {%- endif %} + font-size: 1em; + text-align: left; +} + +div.sphinxsidebar h3, div.sphinxsidebar h4 { + margin: 1em 0 0.5em 0; + font-size: 1em; + padding: 0.1em 0 0.1em 0.5em; + color: white; + border: 1px solid {{ theme_maincolor }}; + background-color: {{ theme_maincolor }}; +} + +div.sphinxsidebar h3 a { + color: white; +} + +div.sphinxsidebar ul { + padding-left: 1.5em; + margin-top: 7px; + padding: 0; + line-height: 130%; +} + +div.sphinxsidebar ul ul { + margin-left: 20px; +} + +div.sphinxsidebar input { + border: 1px solid {{ theme_maincolor }}; +} + +div.footer { + background-color: white; + color: {{ theme_maincolor }}; + padding: 3px 8px 3px 0; + clear: both; + font-size: 0.8em; + text-align: right; + border-bottom: 1px solid {{ theme_maincolor }}; + + -moz-box-shadow: 2px 2px 5px #000; + -webkit-box-shadow: 2px 2px 5px #000; +} + +div.footer a { + color: {{ theme_maincolor }}; + text-decoration: underline; +} + +/* -- body styles ----------------------------------------------------------- */ + +p { + margin: 0.8em 0 0.5em 0; +} + +a { + color: {{ theme_maincolor }}; + text-decoration: none; +} + +a:hover { + color: {{ theme_maincolor }}; + text-decoration: underline; +} + +div.body a { + text-decoration: underline; +} + +h1, h2, h3 { + color: {{ theme_maincolor }}; +} + +h1 { + margin: 0; + padding: 0.7em 0 0.3em 0; + font-size: 1.5em; +} + +h2 { + margin: 1.3em 0 0.2em 0; + font-size: 1.35em; + padding-bottom: .5em; + border-bottom: 1px solid {{ theme_maincolor }}; +} + +h3 { + margin: 1em 0 -0.3em 0; + font-size: 1.2em; + padding-bottom: .3em; + border-bottom: 1px solid #CCCCCC; +} + +div.body h1 a, div.body h2 a, div.body h3 a, +div.body h4 a, div.body h5 a, div.body h6 a { + color: black!important; +} + +h1 a.anchor, h2 a.anchor, h3 a.anchor, +h4 a.anchor, h5 a.anchor, h6 a.anchor { + display: none; + margin: 0 0 0 0.3em; + padding: 0 0.2em 0 0.2em; + color: #aaa!important; +} + +h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, +h5:hover a.anchor, h6:hover a.anchor { + display: inline; +} + +h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover, +h5 a.anchor:hover, h6 a.anchor:hover { + color: #777; + background-color: #eee; +} + +a.headerlink { + color: #c60f0f!important; + font-size: 1em; + margin-left: 6px; + padding: 0 4px 0 4px; + text-decoration: none!important; +} + +a.headerlink:hover { + background-color: #ccc; + color: white!important; +} + +cite, code, tt { + font-family: 'Consolas', 'Deja Vu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + font-size: 0.95em; + letter-spacing: 0.01em; +} + +code { + background-color: #F2F2F2; + border-bottom: 1px solid #ddd; + color: #333; +} + +code.descname, code.descclassname, code.xref { + border: 0; +} + +hr { + border: 1px solid #abc; + margin: 2em; +} + +a code { + border: 0; + color: #CA7900; +} + +a code:hover { + color: #2491CF; +} + +pre { + background-color: transparent !important; + font-family: 'Consolas', 'Deja Vu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + font-size: 0.95em; + letter-spacing: 0.015em; + line-height: 120%; + padding: 0.5em; + border-right: 5px solid #ccc; + border-left: 5px solid #ccc; +} + +pre a { + color: inherit; + text-decoration: underline; +} + +td.linenos pre { + padding: 0.5em 0; +} + +div.quotebar { + background-color: #f8f8f8; + max-width: 250px; + float: right; + padding: 2px 7px; + border: 1px solid #ccc; +} + +div.topic { + background-color: #f8f8f8; +} + +table { + border-collapse: collapse; + margin: 0 -0.5em 0 -0.5em; +} + +table td, table th { + padding: 0.2em 0.5em 0.2em 0.5em; +} + +div.admonition { + font-size: 0.9em; + margin: 1em 0 1em 0; + border: 3px solid #cccccc; + background-color: #f7f7f7; + padding: 0; +} + +div.admonition p { + margin: 0.5em 1em 0.5em 1em; + padding: 0; +} + +div.admonition li p { + margin-left: 0; +} + +div.admonition pre, div.warning pre { + margin: 0; +} + +div.highlight { + margin: 0.4em 1em; +} + +div.admonition p.admonition-title { + margin: 0; + padding: 0.1em 0 0.1em 0.5em; + color: white; + border-bottom: 3px solid #cccccc; + font-weight: bold; + background-color: #165e83; +} + +div.danger { border: 3px solid #f0908d; background-color: #f0cfa0; } +div.error { border: 3px solid #f0908d; background-color: #ede4cd; } +div.warning { border: 3px solid #f8b862; background-color: #f0cfa0; } +div.caution { border: 3px solid #f8b862; background-color: #ede4cd; } +div.attention { border: 3px solid #f8b862; background-color: #f3f3f3; } +div.important { border: 3px solid #f0cfa0; background-color: #ede4cd; } +div.note { border: 3px solid #f0cfa0; background-color: #f3f3f3; } +div.hint { border: 3px solid #bed2c3; background-color: #f3f3f3; } +div.tip { border: 3px solid #bed2c3; background-color: #f3f3f3; } + +div.danger p.admonition-title, div.error p.admonition-title { + background-color: #b7282e; + border-bottom: 3px solid #f0908d; +} + +div.caution p.admonition-title, +div.warning p.admonition-title, +div.attention p.admonition-title { + background-color: #f19072; + border-bottom: 3px solid #f8b862; +} + +div.note p.admonition-title, div.important p.admonition-title { + background-color: #f8b862; + border-bottom: 3px solid #f0cfa0; +} + +div.hint p.admonition-title, div.tip p.admonition-title { + background-color: #7ebea5; + border-bottom: 3px solid #bed2c3; +} + +div.admonition ul, div.admonition ol, +div.warning ul, div.warning ol { + margin: 0.1em 0.5em 0.5em 3em; + padding: 0; +} + +div.versioninfo { + margin: 1em 0 0 0; + border: 1px solid #ccc; + background-color: #DDEAF0; + padding: 8px; + line-height: 1.3em; + font-size: 0.9em; +} + +.viewcode-back { + font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} + +p.versionchanged span.versionmodified { + font-size: 0.9em; + margin-right: 0.2em; + padding: 0.1em; + background-color: #DCE6A0; +} + +dl.field-list > dt { + color: white; + background-color: #82A0BE; +} + +dl.field-list > dd { + background-color: #f7f7f7; +} + +/* -- table styles ---------------------------------------------------------- */ + +table.docutils { + margin: 1em 0; + padding: 0; + border: 1px solid white; + background-color: #f7f7f7; +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 1px solid white; + border-bottom: 1px solid white; +} + +table.docutils td p { + margin-top: 0; + margin-bottom: 0.3em; +} + +table.field-list td, table.field-list th { + border: 0 !important; + word-break: break-word; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + color: white; + text-align: left; + padding-right: 5px; + background-color: #82A0BE; +} + +div.literal-block-wrapper div.code-block-caption { + background-color: #EEE; + border-style: solid; + border-color: #CCC; + border-width: 1px 5px; +} + +/* WIDE DESKTOP STYLE */ +@media only screen and (min-width: 1176px) { +body { + margin: 0 40px 0 40px; +} +} + +/* TABLET STYLE */ +@media only screen and (min-width: 768px) and (max-width: 991px) { +body { + margin: 0 40px 0 40px; +} +} + +/* MOBILE LAYOUT (PORTRAIT/320px) */ +@media only screen and (max-width: 767px) { +body { + margin: 0; +} +div.bodywrapper { + margin: 0; + width: 100%; + border: none; +} +div.sphinxsidebar { + display: none; +} +} + +/* MOBILE LAYOUT (LANDSCAPE/480px) */ +@media only screen and (min-width: 480px) and (max-width: 767px) { +body { + margin: 0 20px 0 20px; +} +} + +/* RETINA OVERRIDES */ +@media +only screen and (-webkit-min-device-pixel-ratio: 2), +only screen and (min-device-pixel-ratio: 2) { +} + +/* -- end ------------------------------------------------------------------- */ diff --git a/sphinx/sphinx/themes/bizstyle/static/bizstyle.js_t b/sphinx/sphinx/themes/bizstyle/static/bizstyle.js_t new file mode 100644 index 0000000..6cb9a0f --- /dev/null +++ b/sphinx/sphinx/themes/bizstyle/static/bizstyle.js_t @@ -0,0 +1,41 @@ +// +// bizstyle.js +// ~~~~~~~~~~~ +// +// Sphinx javascript -- for bizstyle theme. +// +// This theme was created by referring to 'sphinxdoc' +// +// :copyright: Copyright 2012-2014 by Sphinx team, see AUTHORS. +// :license: BSD, see LICENSE for details. +// +$(document).ready(function(){ + if (navigator.userAgent.indexOf('iPhone') > 0 || + navigator.userAgent.indexOf('Android') > 0) { + $("li.nav-item-0 a").text("Top"); + } + + $("div.related:first ul li:not(.right) a").slice(1).each(function(i, item){ + if (item.text.length > 20) { + var tmpstr = item.text + $(item).attr("title", tmpstr); + $(item).text(tmpstr.substr(0, 17) + "..."); + } + }); + $("div.related:last ul li:not(.right) a").slice(1).each(function(i, item){ + if (item.text.length > 20) { + var tmpstr = item.text + $(item).attr("title", tmpstr); + $(item).text(tmpstr.substr(0, 17) + "..."); + } + }); +}); + +$(window).resize(function(){ + if ($(window).width() <= 776) { + $("li.nav-item-0 a").text("Top"); + } + else { + $("li.nav-item-0 a").text("{{ shorttitle|e }}"); + } +}); diff --git a/sphinx/sphinx/themes/bizstyle/static/css3-mediaqueries.js b/sphinx/sphinx/themes/bizstyle/static/css3-mediaqueries.js new file mode 100644 index 0000000..59735f5 --- /dev/null +++ b/sphinx/sphinx/themes/bizstyle/static/css3-mediaqueries.js @@ -0,0 +1 @@ +if(typeof Object.create!=="function"){Object.create=function(e){function t(){}t.prototype=e;return new t}}var ua={toString:function(){return navigator.userAgent},test:function(e){return this.toString().toLowerCase().indexOf(e.toLowerCase())>-1}};ua.version=(ua.toString().toLowerCase().match(/[\s\S]+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1];ua.webkit=ua.test("webkit");ua.gecko=ua.test("gecko")&&!ua.webkit;ua.opera=ua.test("opera");ua.ie=ua.test("msie")&&!ua.opera;ua.ie6=ua.ie&&document.compatMode&&typeof document.documentElement.style.maxHeight==="undefined";ua.ie7=ua.ie&&document.documentElement&&typeof document.documentElement.style.maxHeight!=="undefined"&&typeof XDomainRequest==="undefined";ua.ie8=ua.ie&&typeof XDomainRequest!=="undefined";var domReady=function(){var e=[];var t=function(){if(!arguments.callee.done){arguments.callee.done=true;for(var t=0;t=200&&r.status<300||r.status===304||navigator.userAgent.indexOf("Safari")>-1&&typeof r.status==="undefined"){t(r.responseText)}else{n()}document.documentElement.style.cursor="";r=null}};r.send("")};var l=function(t){t=t.replace(e.REDUNDANT_COMPONENTS,"");t=t.replace(e.REDUNDANT_WHITESPACE,"$1");t=t.replace(e.WHITESPACE_IN_PARENTHESES,"($1)");t=t.replace(e.MORE_WHITESPACE," ");t=t.replace(e.FINAL_SEMICOLONS,"}");return t};var c={stylesheet:function(t){var n={};var r=[],i=[],s=[],o=[];var u=t.cssHelperText;var a=t.getAttribute("media");if(a){var f=a.toLowerCase().split(",")}else{var f=["all"]}for(var l=0;l-1&&a.href&&a.href.length!==0&&!a.disabled){r[r.length]=a}}if(r.length>0){var c=0;var d=function(){c++;if(c===r.length){i()}};var v=function(t){var n=t.href;f(n,function(r){r=l(r).replace(e.RELATIVE_URLS,"url("+n.substring(0,n.lastIndexOf("/"))+"/$1)");t.cssHelperText=r;d()},d)};for(u=0;u0){r.setAttribute("media",t.join(","))}document.getElementsByTagName("head")[0].appendChild(r);if(r.styleSheet){r.styleSheet.cssText=e}else{r.appendChild(document.createTextNode(e))}r.addedWithCssHelper=true;if(typeof n==="undefined"||n===true){cssHelper.parsed(function(t){var n=p(r,e);for(var i in n){if(n.hasOwnProperty(i)){g(i,n[i])}}a("newStyleParsed",r)})}else{r.parsingDisallowed=true}return r},removeStyle:function(e){return e.parentNode.removeChild(e)},parsed:function(e){if(n){s(e)}else{if(typeof t!=="undefined"){if(typeof e==="function"){e(t)}}else{s(e);d()}}},stylesheets:function(e){cssHelper.parsed(function(t){e(m.stylesheets||y("stylesheets"))})},mediaQueryLists:function(e){cssHelper.parsed(function(t){e(m.mediaQueryLists||y("mediaQueryLists"))})},rules:function(e){cssHelper.parsed(function(t){e(m.rules||y("rules"))})},selectors:function(e){cssHelper.parsed(function(t){e(m.selectors||y("selectors"))})},declarations:function(e){cssHelper.parsed(function(t){e(m.declarations||y("declarations"))})},properties:function(e){cssHelper.parsed(function(t){e(m.properties||y("properties"))})},broadcast:a,addListener:function(e,t){if(typeof t==="function"){if(!u[e]){u[e]={listeners:[]}}u[e].listeners[u[e].listeners.length]=t}},removeListener:function(e,t){if(typeof t==="function"&&u[e]){var n=u[e].listeners;for(var r=0;r=a||s&&l0}}else if("device-height"===e.substring(r-13,r)){c=screen.height;if(t!==null){if(u==="length"){return i&&c>=a||s&&c0}}else if("width"===e.substring(r-5,r)){l=document.documentElement.clientWidth||document.body.clientWidth;if(t!==null){if(u==="length"){return i&&l>=a||s&&l0}}else if("height"===e.substring(r-6,r)){c=document.documentElement.clientHeight||document.body.clientHeight;if(t!==null){if(u==="length"){return i&&c>=a||s&&c0}}else if("device-aspect-ratio"===e.substring(r-19,r)){return u==="aspect-ratio"&&screen.width*a[1]===screen.height*a[0]}else if("color-index"===e.substring(r-11,r)){var h=Math.pow(2,screen.colorDepth);if(t!==null){if(u==="absolute"){return i&&h>=a||s&&h0}}else if("color"===e.substring(r-5,r)){var p=screen.colorDepth;if(t!==null){if(u==="absolute"){return i&&p>=a||s&&p0}}else if("resolution"===e.substring(r-10,r)){var d;if(f==="dpcm"){d=o("1cm")}else{d=o("1in")}if(t!==null){if(u==="resolution"){return i&&d>=a||s&&d0}}else{return false}};var a=function(e){var t=e.getValid();var n=e.getExpressions();var r=n.length;if(r>0){for(var i=0;i0){u=false;for(var f=0;f0){l[c++]=","}l[c++]=h}}if(l.length>0){r[r.length]=cssHelper.addStyle("@media "+l.join("")+"{"+e.getCssText()+"}",t,false)}};var l=function(e,t){for(var n=0;n0}}var o=[],u=[];for(var f in i){if(i.hasOwnProperty(f)){o[o.length]=f;if(i[f]){u[u.length]=f}if(f==="all"){n=true}}}if(u.length>0){r[r.length]=cssHelper.addStyle(e.getCssText(),u,false)}var c=e.getMediaQueryLists();if(n){l(c)}else{l(c,o)}};var h=function(e){for(var t=0;td||Math.abs(s-t)>d){e=n;t=s;clearTimeout(r);r=setTimeout(function(){if(!i()){p()}else{cssHelper.broadcast("cssMediaQueriesTested")}},500)}};window.onresize=function(){var e=window.onresize||function(){};return function(){e();s()}}()};var m=document.documentElement;m.style.marginLeft="-32767px";setTimeout(function(){m.style.marginLeft=""},5e3);return function(){if(!i()){cssHelper.addListener("newStyleParsed",function(e){c(e.cssHelperParsed.stylesheet)});cssHelper.addListener("cssMediaQueriesTested",function(){if(ua.ie){m.style.width="1px"}setTimeout(function(){m.style.width="";m.style.marginLeft=""},0);cssHelper.removeListener("cssMediaQueriesTested",arguments.callee)});s();p()}else{m.style.marginLeft=""}v()}}());try{document.execCommand("BackgroundImageCache",false,true)}catch(e){} diff --git a/sphinx/sphinx/themes/bizstyle/static/css3-mediaqueries_src.js b/sphinx/sphinx/themes/bizstyle/static/css3-mediaqueries_src.js new file mode 100644 index 0000000..f21dd49 --- /dev/null +++ b/sphinx/sphinx/themes/bizstyle/static/css3-mediaqueries_src.js @@ -0,0 +1,1104 @@ +/* +css3-mediaqueries.js - CSS Helper and CSS3 Media Queries Enabler + +author: Wouter van der Graaf +version: 1.0 (20110330) +license: MIT +website: http://code.google.com/p/css3-mediaqueries-js/ + +W3C spec: http://www.w3.org/TR/css3-mediaqueries/ + +Note: use of embedded